vsftpd (Very Secure FTP Daemon) 是 Linux 下最受歡迎的 FTP 伺服器軟體,以安全性高、效能好著稱。本文將引導你在 CentOS/RHEL 系統上使用 yum 安裝 vsftpd,並配置虛擬使用者架構,實現多網站隔離管理,避免使用系統帳號登入 FTP 的風險。
yum install -y vsftpd
systemctl enable vsftpd
systemctl start vsftpd
安裝完成會顯示 Complete!。建議先備份原始設定檔:
mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
# 基本設定
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
listen_ipv6=NO
# 安全與隔離
chroot_local_user=YES
allow_writeable_chroot=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd.virtual
userlist_enable=YES
tcp_wrappers=YES
# 虛擬使用者核心設定
guest_enable=YES
guest_username=apache
user_config_dir=/etc/vsftpd/vuser_conf
virtual_use_local_privs=YES
關鍵參數說明:
guest_enable=YES:啟用虛擬使用者模式guest_username=apache:虛擬使用者映射的系統帳號(需存在,通常為 Web 服務執行身份)user_config_dir:各虛擬使用者個別設定目錄virtual_use_local_privs=YES:虛擬使用者使用本地使用者權限(關鍵:允許檔案權限操作)pam_service_name=vsftpd.virtual:指定 PAM 驗證服務名稱(稍後建立對應檔案)yum install -y libdb-utils
vi /etc/vsftpd/vuser_passwd.txt
內容格式:奇數行帳號,偶數行密碼,無空行:
webuser1
password123
webuser2
password456
db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db
chmod 600 /etc/vsftpd/vuser_passwd.db
# 安全起見刪除明文字檔
rm -f /etc/vsftpd/vuser_passwd.txt
vi /etc/pam.d/vsftpd.virtual
內容如下(64 位系統):
auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required pam_userdb.so db=/etc/vsftpd/vuser_passwd
注意:db= 參數不含 .db 副檔名。
mkdir -p /etc/vsftpd/vuser_conf
為每個虛擬使用者建立同名設定檔:
vi /etc/vsftpd/vuser_conf/webuser1
內容範例(對應網站根目錄):
local_root=/var/www/html/site1
write_enable=YES
download_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_world_readable_only=NO
權限參數說明: 虛擬使用者模式下,anon_* 參數實際控制虛擬使用者權限。
mkdir -p /var/www/html/site1
chown -R apache:apache /var/www/html/site1
chmod -R 755 /var/www/html/site1
# 若啟用 SELinux
setsebool -P httpd_unified 1
setsebool -P ftpd_full_access 1
systemctl restart vsftpd
# 測試連線
ftp localhost
# 或使用 FileZilla 等客戶端
/etc/vsftpd/vuser_passwd.txt(重新建立或修改)db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db/etc/vsftpd/vuser_conf/ 新增/刪除對應設定檔systemctl restart vsftpdallow_writeable_chroot=YES 缺失或目錄權限錯誤guest_username 對應使用者(如 apache)擁有目錄寫入權限pasv_min_port/pasv_max_port 並 pasv_enable=YES此架構實現「一網站一 FTP 帳號、權限隔離、無系統帳號風險」,是生產環境部署 Web 伺服器 FTP 的推薦做法。
Linux 定時任務報錯 crontab: command not found 解決:安裝 cronie 與啟動服務
Ubuntu dpkg 命令完全指南:.deb 套件查詢、安裝、移除與檔案列表
Ubuntu 14.04 運行 adb 提示「No such file or directory」解決方案
Ubuntu 安裝 qBittorrent:穩定版與開發版 PPA 選擇指南
Linux 更新套件報錯「無法獲得鎖 /var/lib/dpkg/lock」的一鍵解決
Linux 系統安裝 Apache OpenOffice 完整指南:從卸載 LibreOffice 到中文環境配置