首先確保系統已更新并安裝vsftpd:
sudo apt update
sudo apt install vsftpd
編輯配置文件/etc/vsftpd.conf
(使用nano或vim):
sudo nano /etc/vsftpd.conf
關鍵設置調整(需取消注釋或新增):
local_enable=YES
write_enable=YES
(若需上傳/修改文件)chroot_local_user=YES
(將用戶鎖定在自家目錄,避免訪問系統其他路徑)allow_writeable_chroot=YES
(若啟用chroot_local_user
,此選項必設,否則用戶無法在自己的主目錄中創建/修改文件)userlist_enable=YES
,并設置userlist_file=/etc/vsftpd.user_list
(列表中的用戶方可登錄)。sudo adduser ftpuser # 按提示設置密碼及信息
sudo usermod -s /sbin/nologin ftpuser # 可選:禁止shell登錄(增強安全,僅允許FTP訪問)
FTP用戶必須對其主目錄擁有讀+執行權限(目錄權限755),文件權限644(若需上傳文件,主目錄需保留寫權限):
sudo chown -R ftpuser:ftpuser /home/ftpuser # 將主目錄所有者設為用戶自身
sudo chmod 755 /home/ftpuser # 主目錄權限設為755(rwxr-xr-x)
sudo find /home/ftpuser -type f -exec chmod 644 {} \; # 文件權限設為644(rw-r--r--)
注意:若啟用了chroot_local_user=YES
,主目錄的所有者必須為root
(避免用戶越權修改目錄結構),此時需調整:
sudo chown root:root /home/ftpuser
sudo chmod 755 /home/ftpuser
# 若需用戶上傳文件,需在主目錄下創建子目錄(如upload),并賦予用戶所有權:
sudo mkdir /home/ftpuser/upload
sudo chown ftpuser:ftpuser /home/ftpuser/upload
配置修改后,重啟服務使更改生效:
sudo systemctl restart vsftpd
若服務器開啟了UFW防火墻,需允許FTP端口(默認21)及被動模式端口范圍(如50000-50100):
sudo ufw allow 21/tcp # FTP控制端口
sudo ufw allow 50000:50100/tcp # 被動模式數據端口(根據實際情況調整)
sudo ufw reload # 重新加載防火墻規則
/var/log/vsftpd.log
日志文件,查看具體錯誤(如用戶被拒絕、權限不足);確保local_enable=YES
和write_enable=YES
已啟用。allow_writeable_chroot=YES
是否設置。pasv_min_port=50000
、pasv_max_port=50100
),并開放防火墻對應端口。