Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux vsftpd 530 Permission Denied 錯誤排查與解決指南

編輯:關於 Linux

當使用 FileZilla 等 FTP 客戶端連線 vsftpd 時出現 530 Permission denied,不同於「Login Incorrect」,此錯誤通常表示認證通過但存取被拒絕,主因在於使用者帳號被限制清單封鎖或服務未正常啟動。本文提供系統性排查流程。

錯誤區別說明

  • 530 Login Incorrect:帳號密碼錯誤或 PAM 認證失敗
  • 530 Permission denied:帳號密碼正確,但被 ftpusers、user_list 封鎖,或服務未啟動

排查步驟

1. 確認 vsftpd 服務狀態

systemctl status vsftpd
# 若未啟動
systemctl start vsftpd
systemctl enable vsftpd

2. 檢查使用者封鎖清單

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  # 建立白名單檔案

3. 核對 vsftpd.conf 關鍵設定

# 必須啟用本地使用者登入
local_enable=YES

# 確認未意外啟用封鎖邏輯
# userlist_deny=YES 為預設(黑名單模式)
# userlist_deny=NO 為白名單模式

# 檢查 chroot 設定是否導致目錄權限問題
chroot_local_user=YES
allow_writeable_chroot=YES  # 新版需求:家目錄不可寫入時需此選項

4. 檢查使用者家目錄權限

若啟用 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

5. 重啟服務並測試

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 問題。

Copyright © Windows教程網 All Rights Reserved