一、问题描述
问题:CentOS7.6 yum安装vsftpd,部署完成后,通过FileZilla客户端工具登录提示“530 Login incorrect错误.”
如下图所示:
vsftpd部署请参考:《Linux运维总结:vsftpd一键部署工具》
二、问题分析
1.检查用户和密码没有错误
2.vsftpd.conf配置没有错误
3.查看/var/log/secure日志
4.查看pam(/etc/pam.d/vsftpd)
最后,发现问题出现在“pam_shells.so”上,只要把它注释掉就好了。
官方解释:
pam_shells is a PAM module that only allows access to the system if the users shell is listed in
/etc/shells.
It also checks if /etc/shells is a plain file and not world writable.
从上面我们就找到原因所在,就是这个模块和我们添加用户使用的“/sbin/nologin”冲突了,因为它并不存在于“/etc/shells”,这是pam 的保护机制。auth required pam_shells.so 配置项的含义为仅允许用户的shell为 /etc/shells文件内的shell命令时,才能够成功,而创建ftp用户时,为了禁止ssh登录,一般多为/bin/false 、/usr/sbin/nologin 等,显然不是一个有效的bash,也就无法登录了
如下图所示:
三、解决方案
1、查看/etc/ftpusers ,确保账号没有在这个文件内。
2、修改/etc/pam.d/vsftpd
#方法一:
将auth required pam_shells.so修改为->auth required pam_nologin.so 即可
#方法二:
注释掉auth required pam_shells.so这一行即可
3、重启vsftpd
systemctl restart vsftpd
如下图所示,则表示登录成功。
总结:整理不易,如果对你有帮助,可否点赞关注一下?
更多详细内容请参考:Linux运维实战总结