vsftpd 無法通過 pam 身份驗證
將久經考驗的 vsftpd 配置移動到使用 Fedora 16 的新伺服器上,我遇到了一個問題。一切似乎都按原樣進行,但使用者身份驗證失敗。我在任何日誌中都找不到任何表明發生了什麼的條目。
這是完整的配置文件:
anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_file=/var/log/vsftpd.log xferlog_std_format=YES idle_session_timeout=0 data_connection_timeout=0 nopriv_user=ftpsecure connect_from_port_20=YES listen=YES chroot_local_user=YES chroot_list_enable=NO ls_recurse_enable=YES listen_ipv6=NO pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES
FTP 向我詢問使用者名和密碼,我提供了,登錄不正確。我已經驗證,這個使用者可以從 ssh 登錄。事情搞砸了
pam_service
。匿名(如果更改為允許)似乎運作良好。
SELinux 被禁用。
Ftpsecure 似乎配置得很好……我完全不知所措!
以下是我檢查但沒有成功的日誌文件:
/var/log/messages /var/log/xferlog #empty /var/log/vsftpd.log #empty /var/log/secure
發現了一些東西
/var/log/audit/audit.log
:
type=USER_AUTH msg=audit(1335632253.332:18486): user pid=19528 uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:authentication acct="kate" exe="/usr/sbin/vsftpd" hostname=ip68-5-219-23.oc.oc.cox.net addr=68.5.219.23 terminal=ftp res=failed'
也許我應該看看
/var/log/wtf-is-wrong.help
:-)更多資訊:
/etc/pam.d/vsftpd 看起來像這樣:
#%PAM-1.0 session optional pam_keyinit.so force revoke 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 required pam_loginuid.so session include password-auth
唷。我解決了這個問題。它相當於一個配置,但在 /etc/pam.d/vsftpd 內
因為 ssh 會話成功而 ftp 會話失敗,所以我去了
/etc/pam.d/vsftpd,刪除了那裡的所有內容,而是放置 ./sshd 的內容以精確匹配規則。一切正常!
通過消除的方法,我發現有問題的行是:
auth required pam_shells.so
刪除它可以讓我繼續。
調出,“pam_shells 是一個 PAM 模組,僅當使用者 shell 列在 /etc/shells 中時才允許訪問系統。” 我看了看那裡,果然,沒有 bash,什麼都沒有。在我看來,這是 vsftpd 配置中的一個錯誤,因為在文件中沒有任何地方讓您編輯 /etc/shells。因此,預設安裝和說明無法按說明工作。
我現在去尋找可以送出錯誤的地方。