Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

徹底解決 vsftpd 530 Login incorrect:CentOS 6.5 實戰排查全記錄

編輯:Linux 系統常見問題解答

錯誤現象

FTP 客戶端連線時回報 530 Login incorrect,但系統用戶密碼確認無誤。伺服器環境:CentOS 6.5 x86_64,vsftpd 2.2.2,系統用戶 Shell 設為 /sbin/nologin。

根因分析

vsftpd 預設透過 PAM 模組 pam_listfile.so 讀取 /etc/vsftpd/ftpusers 黑名單,拒絕列表內用戶登入。許多教程錯誤建議將 deny 改為 allow,導致自建用戶同樣被拒。

三步修復流程

1. 確認核心配置 /etc/vsftpd/vsftpd.conf

# 必須啟用的關鍵項
local_enable=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=NO          # 白名單模式(可選)
tcp_wrappers=YES

注意:Ubuntu 可能需 pam_service_name=ftp,請對應檢查 /etc/pam.d/ 目錄。

2. 編輯 FTP 黑名單 /etc/vsftpd/ftpusers

# 預設內容(系統保留帳號)
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

操作:將需要 FTP 登入的系統用戶從此檔案中刪除(或加 # 註解)。
嚴禁 修改 /etc/pam.d/vsftpd 中的 sense=deny 為 allow,否則白名單機制失效,所有非黑名單用戶均被拒。

3. 重啟服務驗證

/etc/init.d/vsftpd restart
# 或 systemctl restart vsftpd

PAM 配置原理解析

# /etc/pam.d/vsftpd 關鍵行
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
  • item=user:檢查用戶名
  • sense=deny:命中列表則拒絕
  • file=...:黑名單路徑
  • onerr=succeed:檔案讀取錯誤時預設通過(避免誤鎖全員)

進階:啟用白名單模式(推薦生產環境)

# vsftpd.conf
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list

僅允許 /etc/vsftpd/user_list 內用戶登入,更安全可控。

常見誤區速查

錯誤做法後果正確做法
改 PAM sense=allow自建用戶也 530編輯 ftpusers 黑名單
設 Shell 為 /bin/false同樣無法登入用 /sbin/nologin 並加入 /etc/shells
關閉 SELinux 不設布林值ftpd_full_access 可能仍阻擋setsebool -P ftpd_full_access=1

驗證清單

  1. ftp localhost → 輸入用戶密碼 → 230 Login successful
  2. ls、put、get 測試讀寫權限
  3. tail -f /var/log/vsftpd.log 觀察連線日誌
Copyright © Windows教程網 All Rights Reserved