vsftpd(Very Secure FTP Daemon)是 Linux 最流行的 FTP 服務器。本文系統整理其配置文件 /etc/vsftpd/vsftpd.conf 核心參數,按匿名用戶、本地用戶、虛擬用戶、全局設置四大類別詳解 80+ 參數含義與典型值。
配置文件結構
# 全局默認值通常在文件前部
# 用戶類別參數分區
# 虛擬用戶需配合 PAM 認證
匿名用戶核心參數
| 參數 | 默認值 | 說明 |
anonymous_enable | YES | 啟用匿名登錄 |
no_anon_password | NO | 匿名登錄不詢問密碼 |
anon_upload_enable | NO | 允許匿名上傳文件 |
anon_mkdir_write_enable | NO | 允許匿名創建目錄 |
anon_other_write_enable | NO | 允許匿名刪除/重命名 |
anon_root | (none) | 匿名用戶根目錄 |
anon_max_rate | 0 | 匿名傳輸限速(Bytes/s,0 不限) |
anon_umask | 077 | 匿名上傳文件權限掩碼 |
本地用戶核心參數
| 參數 | 默認值 | 說明 |
local_enable | YES | 啟用本地用戶登錄 |
local_umask | 022 | 本地上傳文件掩碼 |
chroot_local_user | NO | 限制用戶在主目錄(安全關鍵) |
chroot_list_enable | NO | 啟用例外名單 |
chroot_list_file | /etc/vsftpd/chroot_list | 不受 chroot 限制的用戶列表 |
userlist_enable | NO | 啟用用戶訪問控制列表 |
userlist_deny | YES | YES=拒絕列表用戶,NO=僅允許列表用戶 |
userlist_file | /etc/vsftpd/user_list | 控制列表文件 |
user_config_dir | (none) | 用戶級配置目錄(文件名=用戶名) |
虛擬用戶核心參數
| 參數 | 默認值 | 說明 |
guest_enable | NO | 啟用虛擬用戶(映射到 guest_username) |
guest_username | ftp | 虛擬用戶映射的系統用戶 |
virtual_use_local_privs | NO | YES=本地用戶權限,NO=匿名用戶權限 |
pam_service_name | vsftpd | PAM 服務名(對應 /etc/pam.d/vsftpd) |
全局控制與性能參數
| 參數 | 典型值 | 說明 |
max_clients | 0 | 最大並發連接數(0 不限) |
max_per_ip | 0 | 單 IP 最大連接數 |
local_max_rate | 0 | 本地用戶傳輸限速 |
connect_timeout | 60 | 空閒會話超時(秒) |
data_connection_timeout | 300 | 數據傳輸超時(秒) |
pasv_enable | YES | 啟用被動模式 |
pasv_min_port / pasv_max_port | 0/0 | 被動模式端口範圍(防火牆放行) |
ssl_enable | NO | 啟用 FTPS (SSL/TLS) |
force_local_data_ssl | YES | 強制本地數據傳輸加密 |
force_local_logins_ssl | YES | 強制本地登錄加密 |
xferlog_enable | YES | 啟用傳輸日志 |
xferlog_std_format | YES | 標準 xferlog 格式 |
log_ftp_protocol | NO | 記錄所有 FTP 協議交互(調試用) |
虛擬用戶配置實戰步驟
- 創建映射用戶:
useradd -d /home/vftp -s /sbin/nologin vftp
- 配置 PAM:
vim /etc/pam.d/vsftpd 添加 auth required pam_userdb.so db=/etc/vsftpd/virtusers 等
- 生成用戶數據庫:
db_load -T -t hash -f /etc/vsftpd/virtusers.txt /etc/vsftpd/virtusers.db
- 設置
guest_enable=YES、guest_username=vftp、virtual_use_local_privs=YES
- 用戶級配置:
mkdir /etc/vsftpd/user_conf && echo "local_root=/home/vftp/user1" > /etc/vsftpd/user_conf/user1