| 檔案 | 用途 |
|---|---|
/etc/vsftpd/vsftpd.conf | 核心配置檔 |
/etc/vsftpd/ftpusers | 永久禁止登入 FTP 的系統帳號(最高優先級) |
/etc/vsftpd/user_list | 依 userlist_deny 允許/禁止的用戶清單 |
/etc/vsftpd/vsftpd_conf_migrate.sh | 版本遷移腳本 |
/var/ftp | 預設匿名用戶根目錄 |

允許所有員工匿名上傳、下載、建立目錄,無需帳號管理。
# vsftpd.conf
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
write_enable=YES

/var/ftp)權限不可為 777,建議 755/var/ftp/upload),設為 chown ftp:ftp、chmod 777anon_root=/var/ftp/upload 直接指向可寫目錄

# 查詢 FTP 布林值
getsebool -a | grep ftp
# 開啟匿名寫入
setsebool -P allow_ftpd_anon_write=1
# 重啟服務
service vsftpd restart


webuser1、webuser2 登入/sbin/nologin)/var/www/html(網站根目錄)useradd -s /sbin/nologin webuser1、passwd webuser1anonymous_enable=NO
local_enable=YES
write_enable=YES
local_root=/var/www/html
chroot_local_user=YES
allow_writeable_chroot=YES

setsebool -P ftp_home_dir=1(允許存取家目錄)chown webuser1:webuser1 /var/www/html、chmod 755 /var/www/html

public:唯讀、限速 500 KB/svip:讀寫、限速 2 MB/s、不可刪除admin:完整權限、不限速虛擬用戶 (PAM + Berkeley DB)
│
├─ public → 映射系統用戶 ftpuser → 目錄 /var/ftp/share (500 唯讀)
├─ vip → 映射系統用戶 ftpvip → 目錄 /var/ftp/vip (700 讀寫)
└─ admin → 映射系統用戶 ftpadmin → 目錄 /var/ftp (700 完整)
# 文字檔(奇數行用戶名,偶數行密碼)
cat > /etc/vsftpd/vusers.txt <<'EOF'
public
pass1
vip
pass2
admin
pass3
EOF
# 產生 DB
db_load -T -t hash -f /etc/vsftpd/vusers.txt /etc/vsftpd/vusers.db
chmod 600 /etc/vsftpd/vusers.db

/etc/pam.d/vsftpd# 註解原內容
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers

useradd -s /sbin/nologin -d /var/ftp/share ftpuser
useradd -s /sbin/nologin -d /var/ftp/vip ftpvip
useradd -s /sbin/nologin -d /var/ftp ftpadmin
chmod -R 500 /var/ftp/share # 唯讀
chmod -R 700 /var/ftp/vip # 讀寫
chmod -R 700 /var/ftp # 管理員完整

# vsftpd.conf 關鍵段
anonymous_enable=NO
local_enable=YES
guest_enable=YES
guest_username=ftp
virtual_use_local_privs=NO
chroot_local_user=YES
user_config_dir=/etc/vsftpd/user_conf
# 必備 PAM 服務名
pam_service_name=vsftpd

/etc/vsftpd/user_conf/mkdir -p /etc/vsftpd/user_conf
# public:唯讀、限速 500 KB/s
cat > /etc/vsftpd/user_conf/public <<'EOF'
local_root=/var/ftp/share
write_enable=NO
download_enable=YES
local_max_rate=512000
EOF
# vip:讀寫、限速 2 MB/s、不可刪除
cat > /etc/vsftpd/user_conf/vip <<'EOF'
local_root=/var/ftp/vip
write_enable=YES
download_enable=YES
local_max_rate=2097152
anon_other_write_enable=NO
EOF
# admin:完整、不限速
cat > /etc/vsftpd/user_conf/admin <<'EOF'
local_root=/var/ftp
write_enable=YES
download_enable=YES
# local_max_rate=0 不限速
EOF

service vsftpd restart

| 參數 | 層級 | 說明 |
|---|---|---|
| guest_enable | 全域 | 啟用虛擬用戶 |
| guest_username | 全域 | 虛擬用戶預設映射系統用戶 |
| virtual_use_local_privs | 全域 | NO=匿名權限基準+user_config_dir覆寫;YES=本地用戶權限基準 |
| user_config_dir | 全域 | 每用戶覆寫配置目錄(檔名=虛擬用戶名) |
| local_root | 用戶 | 指定用戶根目錄(chroot 環境) |
| write_enable | 用戶 | 總寫入開關 |
| download_enable | 用戶 | 下載開關 |
| local_max_rate | 用戶 | 限速 (Bytes/sec) |
| anon_other_write_enable | 用戶 | 刪除/重命名等其他寫入 |
| chroot_local_user | 全域 | 強制所有用戶限制在家目錄 |
| allow_writeable_chroot | 全域 | 允許 chroot 目錄可寫 (vsftpd 3.0+) |
ssl_enable=YES、配置憑證、force_local_logins_ssl=YESpasv_enable=YES、pasv_min_port=50000、pasv_max_port=51000、防火牆同步開放max_clients=200、max_per_ip=10、idle_session_timeout=600、data_connection_timeout=300xferlog_enable=YES、xferlog_std_format=YES、log_ftp_protocol=YEStcp_wrappers=YES + /etc/hosts.allow/hosts.denysetsebool -P ftp_home_dir=1、setsebool -P allow_ftpd_full_access=1(視需求)本文從三個實戰案例層層遞進,完整展示了 vsftpd 從匿名共享、本地用戶隔離到虛擬用戶多租戶差異化權限與限速的企業級部署全景。掌握 user_config_dir、PAM+DB 認證、SELinux 布林值、chroot 隔離等核心技術,即可應對各類 FTP 服務構建需求。