vsftpd – PAM – MySQL和pam_mkhomedir创build目录

我已经成功地使用vsftpd与虚拟用户连接PAM到我的MySQL数据库。 现在我想通过成功的vsftpd连接自动创build用户目录。

这里是/etc/pam.d/vsftpdconfiguration:

#%PAM-1.0 session optional pam_keyinit.so force revoke auth required pam_mysql.so verbose=1 user=root passwd=mypass host=localhost db=mydb table=mytable usercolumn=username passwdcolumn=password crypt=3 account required pam_mysql.so verbose=1 user=root passwd=mypass host=localhost db=mydb table=mytable usercolumn=username passwdcolumn=password crypt=3 session required pam_mkhomedir.so skel=/home/skel/ umask=0022 debug 

现在添加pam_mkhomedir只是显示它不能创build任何日志中没有其他消息的目录。 所以显然不适用。 还有什么我需要的吗?

我的/etc/vsftpd/vsftpd.conf:

 # No ANONYMOUS users allowed anonymous_enable=NO # Allow 'local' users with WRITE permissions (0755) local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=NO xferlog_enable=YES connect_from_port_20=YES # define a unique user on your system which the # ftp server can use as a totally isolated and unprivileged user. nopriv_user=vsftpd chroot_local_user=YES listen=YES # here we use the authentication module for vsftpd to check users name and passw pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES userlist_deny=YES # here the vsftpd will allow the 'vsftpd' user to login into '/home/vsftpd/$USER directory guest_enable=YES guest_username=vsftpd local_root=/home/vsftpd/$USER user_sub_token=$USER virtual_use_local_privs=YES download_enable=NO force_local_data_ssl=NO force_local_logins_ssl=NO # PASV - passive ports for FTP pasv_enable=YES pasv_min_port=14000 pasv_max_port=14100 

我在vsftpd.conf中看到一篇文章说我需要这个,所以我也尝试了这个:

 session_support=YES 

但是现在似乎不再像日志中显示的那样进行validation了:

 Mar 24 00:46:16 ip-10-212-239-40 vsftpd[1962]: pam_keyinit(vsftpd:session): Unable to look up user "user1" Mar 24 00:46:16 ip-10-212-239-40 vsftpd[1962]: pam_mkhomedir(vsftpd:session): User unknown. 

这是即使我已经创build了目录。 现在没人能进去

有任何想法吗?

为了使PAM模块的用户查找成功,您需要在nsswitch.conf(5)为MySQL启用NSS模块。 nss_mysql是你的朋友。

您可以尝试使用pam_script – 这是一个pam模块,允许在用户会话打开后执行任意shell脚本(等等)。

你可以在这里findpam_script : https : //github.com/jeroennijhof/pam_script 。 它也应该可以通过包pipe理器来安装,至less我已经能够通过apt-get安装它。

要小心,因为vsftpd似乎有一些pam_script问题,至less当它拒绝身份validation时,请参阅我未解决的问题: vsftpd在失败的pam_script身份validation后冻结 。 但在你的情况下,这不应该是一个问题。