Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> FTP 伺服器

Linux vsftpd 530 Permission denied 錯誤完整排查與解決方案

編輯:FTP 伺服器

錯誤現象

Status: Connecting to 192.168.1.100:21...
Status: Connection established, waiting for welcome message...
Response: 220 (vsFTPd 3.0.3)
Command: USER root
Response: 331 Please specify the password.
Command: PASS ********
Response: 530 Permission denied.
Error: Critical error: Could not connect to server

核心原因

vsftpd 預設禁止 root 等高權限系統帳號登入 FTP,透過 /etc/vsftpd/ftpusers 與 /etc/vsftpd/user_list 兩個黑名單檔案實現。

三步排查流程

步驟 1:確認 vsftpd 服務運行狀態

# 檢查服務狀態
systemctl status vsftpd
# 或
service vsftpd status

# 若未運行,啟動並設定開機自啟
systemctl start vsftpd
systemctl enable vsftpd

步驟 2:檢查用戶黑名單配置

關鍵檔案:

檔案用途預設包含帳號
/etc/vsftpd/ftpusers永久禁止登入 FTP 的系統帳號(最高優先級)root, daemon, bin, sys, sync, games, man, lp, mail, news, uucp, nobody 等
/etc/vsftpd/user_list依 userlist_deny 參數決定允許/禁止(預設為禁止)同 ftpusers 類似

操作:

# 1. 查看 ftpusers
cat /etc/vsftpd/ftpusers
# 找到您嘗試登入的帳號(如 root),在行首加 # 註解
# root

# 2. 查看 user_list
cat /etc/vsftpd/user_list
# 同樣註解該帳號
# root

# 3. 確認 vsftpd.conf 相關參數
grep -E "userlist_enable|userlist_deny|userlist_file" /etc/vsftpd/vsftpd.conf
# 建議值:
# userlist_enable=YES
# userlist_deny=YES
# userlist_file=/etc/vsftpd/user_list

步驟 3:重啟服務生效

systemctl restart vsftpd

進階排查:若上述步驟仍報 530

1. PAM 認證配置問題

# 檢查 PAM 設定檔
cat /etc/pam.d/vsftpd
# 正常應包含:
# auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
# auth required pam_shells.so
# auth include password-auth
# account include password-auth
# session include password-auth

# 若缺少 pam_shells.so,帳號 Shell 若為 /sbin/nologin 會被拒絕
# 解決:確保 /etc/shells 包含 /sbin/nologin
echo "/sbin/nologin" >> /etc/shells

2. SELinux 阻擋

# 檢查 FTP 相關布林值
getsebool -a | grep ftp
# 關鍵項:ftp_home_dir、allow_ftpd_full_access

# 若 ftp_home_dir=off,開啟並重啟
setsebool -P ftp_home_dir=1
systemctl restart vsftpd

3. 用戶家目錄權限/擁有者錯誤

# 檢查用戶家目錄
ls -ld /home/youruser
# 應為:drwxr-xr-x. 2 youruser yourgroup 4096 ... /home/youruser
# 權限不得為 777,擁有者必須為該用戶

# 修正
chown youruser:yourgroup /home/youruser
chmod 755 /home/youruser

4. vsftpd.conf 關鍵參數檢查

grep -E "local_enable|write_enable|chroot_local_user|allow_writeable_chroot" /etc/vsftpd/vsftpd.conf
# 建議基線:
# local_enable=YES
# write_enable=YES
# chroot_local_user=YES
# allow_writeable_chroot=YES  # 允許 chroot 目錄可寫(vsftpd 3.0+)

最佳實踐:建立專用 FTP 帳號(而非使用 root)

# 1. 建立專用帳號,禁止 Shell 登入
useradd -s /sbin/nologin -d /home/ftpuser ftpuser
passwd ftpuser

# 2. 設定家目錄權限
chown ftpuser:ftpuser /home/ftpuser
chmod 755 /home/ftpuser

# 3. 確保帳號不在黑名單中
# 編輯 /etc/vsftpd/ftpusers 和 /etc/vsftpd/user_list,確無 ftpuser

# 4. 測試
ftp localhost
# 用戶名:ftpuser,密碼:剛設定的密碼

錯誤代碼對照表

代碼含義常見原因
530 Permission denied登入被拒絕帳號在黑名單、PAM 失敗、Shell 不合法、SELinux 阻擋
530 Login incorrect用戶名/密碼錯誤密碼輸入錯誤、PAM 配置錯誤、帳號鎖定
500 OOPS: cannot change directory無法切換到家目錄SELinux、目錄不存在、權限錯誤、chroot 設定衝突
421 Service not available服務不可用max_clients 達上限、服務未啟動、xinetd 模式配置錯誤

總結

530 Permission denied 絕大多數由 帳號在 ftpusers/user_list 黑名單中 引起。依照「服務狀態 → 黑名單檔案 → PAM/SELinux/目錄權限 → 配置參數」順序排查,可在 5 分鐘內定位並解決。生產環境嚴禁使用 root 登入 FTP,請建立專用低權限帳號並配合 chroot 隔離。

Copyright © Windows教程網 All Rights Reserved