當使用 FileZilla 等 FTP 客戶端連線 vsftpd 時出現 530 Permission denied,不同於「Login Incorrect」,此錯誤通常表示認證通過但存取被拒絕,主因在於使用者帳號被限制清單封鎖或服務未正常啟動。本文提供系統性排查流程。
ftpusers、user_list 封鎖,或服務未啟動systemctl status vsftpd
# 若未啟動
systemctl start vsftpd
systemctl enable vsftpd
vsftpd 有兩個關鍵封鎖檔案:
| 檔案 | 路徑 | 功能 |
|---|---|---|
ftpusers | /etc/ftpusers 或 /etc/vsftpd/ftpusers | 列入者永遠禁止 FTP 登入(通常包含 root、daemon 等系統帳號) |
user_list | /etc/vsftpd/user_list | 預設禁止列入者登入;若設定 userlist_enable=YES 且 userlist_deny=NO 則反轉為僅允許列入者 |
操作建議:
# 檢查 root 是否被封鎖(預設通常在)
grep root /etc/ftpusers /etc/vsftpd/user_list
# 若需允許特定使用者(如測試用),編輯 user_list 移除該帳號
# 或設定 vsftpd.conf:
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/allowed_users # 建立白名單檔案
# 必須啟用本地使用者登入
local_enable=YES
# 確認未意外啟用封鎖邏輯
# userlist_deny=YES 為預設(黑名單模式)
# userlist_deny=NO 為白名單模式
# 檢查 chroot 設定是否導致目錄權限問題
chroot_local_user=YES
allow_writeable_chroot=YES # 新版需求:家目錄不可寫入時需此選項
若啟用 chroot_local_user=YES,使用者家目錄不能具有群組或其他寫入權限,否則會導致 500 OOPS 錯誤或隱性權限拒絕:
# 正確權限範例
drwxr-xr-x 5 user user 4096 Jan 1 10:00 /home/user
# 錯誤權限(群組可寫)
drwxrwxr-x 5 user user 4096 Jan 1 10:00 /home/user
systemctl restart vsftpd
# 本機測試
ftp localhost
# 遠端測試
ftp your_server_ip
| 場景 | 可能原因 | 解決方式 |
|---|---|---|
| 使用 root 登入失敗 | root 在 ftpusers 與 user_list 皆被封鎖 | 建議建立專用 FTP 帳號,勿使用 root |
| 新建使用者無法登入 | user_list 為白名單模式但未加入 | 將帳號加入 /etc/vsftpd/allowed_users |
| 服務重啟後依舊失敗 | SELinux 阻擋 | setsebool -P ftpd_full_access 1 |
| 虛擬使用者登入失敗 | PAM 設定檔路徑錯誤或 db 檔案未生成 | 檢查 pam_service_name 與 db_load 指令 |
遵循「服務狀態 → 封鎖清單 → 設定檔 → 目錄權限 → SELinux」的排查順序,可快速定位 90% 以上的 530 Permission denied 問題。