实验室服务器不知道被谁更新系统到6.5后,发现在本机上即使输入正确的密码也无法登陆,通过在google搜索,发现有一些人也碰见过同样的问题,但是他们是因为系统变为64位后,无法找到pam_limits.so的正确路径,但是我的主机不是这种问题,更新的后依然是i686架构,继续搜索,一步步查找问题,首先修改grub进入单用户模式下,打开sshd服务,从远程主机登陆,发现可以登陆,但就是本地不行,于是乎继续锁定问题到/etc/pam.d/login文件,cat /etc/pam.d/login文件,发现内容如下:
#%PAM-1.0
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth include system-auth
account required pam_nologin.so
account include system-auth
password include system-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_loginuid.so
session optional pam_console.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open
session required pam_namespace.so
session optional pam_keyinit.so force revoke
session include system-auth
-session optional pam_ck_connector.so
并没有想象中的pam_limits.so文件,修改成如下:
#%PAM-1.0
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth include system-auth
account required pam_nologin.so
account include system-auth
password include system-auth
# pam_selinux.so close should be the first session rule
session required pam_limits.so
session optional pam_console.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_limits.so
session required pam_namespace.so
session optional pam_keyinit.so force revoke
session include system-auth
-session optional pam_ck_connector.so
重启系统,进入多用户模式下,输入密码,发现可以登陆!!
思考:
1.为什么修改后就可以呢?
pam_limits.so模块的主要功能是限制用户会话过程中对各种系统资源的使用情况,缺省情况下该模块的配置文件是/etc/security/limits.conf。既然sshd可以登陆,那么就使用它的pam模块来进行认证就OK。
2.pam_selinux.so
SELinux相关的模块.为登陆用户提供安全的上下文。
进入另外一个centos6.3版本中发现和无法登陆的login文件是相同的,可能是在centos6.5中对/etc/pam.d/login做了一些相应的调整,而配置文件没有变所以就无法登陆(只是猜测)