在 Linux 系統架設 vsftpd FTP 伺服器時,530 Login Incorrect 是常見的登入失敗錯誤。此錯誤通常源於 PAM 認證設定缺失或設定檔參數遺漏。本文提供三種針對不同情境的解決方案。
錯誤原因: RHEL/CentOS 等系統啟用 PAM 認證,vsftpd 需要 /etc/pam.d/ftp 檔案,但原始碼安裝預設不會建立此檔,導致本地使用者無法登入(匿名登入除外)。
解決步驟:
cp /path/to/vsftpd/source/RedHat/vsftpd.pam /etc/pam.d/ftp
/path/to/vsftpd/source 為 vsftpd 原始碼解壓目錄。複製完成後重啟服務:
systemctl restart vsftpd
錯誤原因: 設定檔 /etc/vsftpd/vsftpd.conf 缺少 pam_service_name 參數,導致 PAM 模組無法正確載入認證策略。
解決步驟:
echo "pam_service_name=vsftpd" >> /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
此參數告訴 vsftpd 使用 /etc/pam.d/vsftpd 作為認證策略檔(大多數發行版預設已存在)。
若上述方案無效,請完整檢查設定檔核心參數。以下為參考範本(請依實際需求調整):
# 基本存取控制
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
# 安全與隔離
chroot_local_user=YES
allow_writeable_chroot=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
# 獨立模式監聽
listen=YES
listen_ipv6=NO
關鍵參數說明:
pam_service_name=vsftpd:必須存在,指定 PAM 策略檔local_enable=YES:允許本地使用者登入userlist_enable=YES:啟用使用者名單控制(搭配 userlist_deny 使用)chroot_local_user=YES:限制使用者在家目錄(需 allow_writeable_chroot=YES 相容新版)id username/etc/pam.d/vsftpd 是否存在且內容正確journalctl -u vsftpd -f 或 /var/log/vsftpd.logftp localhostsetsebool -P ftpd_full_access 1大多數 530 錯誤透過方案一或二即可解決。若問題持續,請結合日誌分析具體認證失敗階段。
使用 BFO (boot.fedoraproject.org) 透過網路快速安裝 Fedora Linux
Linux HTTP 流量嗅探神器 httpry 實戰:即時抓包、離線分析與進階腳本
IIS 無法載入 ASP 應用程式「未註冊的類別」錯誤修復:重新註冊 ASP 相關 DLL
Linux Shell 多線程編程實戰:從基礎後台並發到可控線程池模型
Linux sed 指令新增字串實戰:行首、行尾、指定行、模式匹配四大場景全解析
Linux 兩機互傳檔案完全指南:scp/rsync/sftp/sshfs 四大工具實戰比較與最佳實踐