vsftpd在失败的pam_scriptauthentication之后冻结

我有一个Ubuntu 14.04服务器,使用apt-get安装vsftpdpam_script。 我已经configurationvsftpd使用pam_script进行虚拟用户身份validation,我的/etc/pam.d/vsftpd文件如下所示:

 auth sufficient pam_script.so account required pam_permit.so 

pam_script_auth脚本非常简单:

 #!/bin/bash echo "$PAM_USER" >> /home/me/pam_script.log if [ "$PAM_USER" == "asdf" ]; then exit 0 fi exit 1 

我已经确认这个脚本是正确使用的(每次我尝试login到vsftpd时都会logging用户名)。

理论上这应该允许访问asdf用户而不pipe密码如何,并且不允许其他人使用。 但是,每次尝试使用不同的用户名时,vsftpd都会冻结。 我这样testing:

 $ ftp localhost Connected to **** 220 (vsFTPd 3.0.2) Name (****:edziubudzik): [I type "asdf2"] 331 Please specify the password. Password: 

提供密码后没有任何反应,vsftpd冻结 – 它不接受任何其他连接,直到我重新启动它。

/var/log/vsftpd.log只注册来自IP地址的连接( Tue Feb 17 15:50:01 2015 [pid 9517] CONNECT: Client [my IP address]" )和/var/log/auth.log/var/log/syslog在testing过程中根本不会改变。

但是,如果我将/etc/pam.d/vsftpd的第一行更改为auth required pam_deny.so vsftp正确地为任何身份validation尝试提供530 Authentication Failed错误。

有谁知道可能会发生什么事?

编辑 :我testing了与su和ssh相同的pam安装(通过用/etc/pam.d/sureplace原来的/etc/pam.d/su/etc/pam.d/vsftpd )工作正常 – 允许用户asdf不pipe密码和禁止任何其他用户。 当我的pam_script脚本退出时,没有一个处理程序被吊死。我也通过logging用户名和检查原始身份validation方法(unix)是否停止工作(他们确实),确认他们确实使用了我的脚本。

所以它看起来像是vsftpd那是pam_script身份validation失败的问题。 仍然不知道修复或解决方法,但…

我通常会testing我的答案,但这次我没有,原谅我。

我怀疑你不能退出两次。 很有可能当ID与“asdf”匹配时,你会在没有意识到的情况下停止vsftpd。

具体来说,试试这个:

 #!/斌/庆典
回声“$ PAM_USER”>> /home/me/pam_script.log

 if [“$ PAM_USER”==“asdf”]; 然后
  退出0
其他
  出口1
科幻