PAM是linux上提供的一个可插拔认证模块,应该说还是比较强大、方便好用的,但是一旦配置不好,遇到问题也是不好解决的。
通过authconfig-tui图形界面配置是比较简单的,但是,现在有遇到问题了。
vsftpd通过ldap验证无法正常登录,如果去读pam的相关规范然后debugpam代码去发现问题将会花费很多的时间,怎么办呢?
首先, 通过strace、tcpdump确认ftp验证确实走了ldap而且返回结果是正确的。
其次, 确认ssh能正常登录
第三, 比较ssh、vsftpd的pam文件,通过注释掉一些行来验证是哪些配置有问题
注释掉如下行,问题解决:
1 |
auth required pam_shells.so |
man pam_shells
1 2 3 4 5 6 7 8 9 10 11 |
NAME pam_shells - PAM module to check for valid login shell SYNOPSIS pam_shells.so DESCRIPTION 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. |
然后,cat /etc/shells
1 2 3 |
/bin/sh /bin/bash /sbin/nologin |
问题查到这里基本要结束了,因为记起我们的ldap中没有设置登录shell的属性
遗留问题: 为什么ldap中缺少登录shell的时候,ssh登录没有问题?