我有一个Ubuntu 14.04服务器,使用apt-get安装vsftpd和pam_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 科幻