日历

2017年十二月
« 9月    
 123
45678910
11121314151617
18192021222324
25262728293031

最近评论

    linux企业应用

    Centos6.5解决无法本地登录的一个实例

    今天一客户服务器在机房无法本地登录,但是通过ssh可以远程登录,查看登录验证文件,内容如下
    [root@XX02 pam.d]# 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
    session required pam_limis.so
    通过仔细观察,发现有上面一行有错误,pam_limits.so写成了pam_limis.so,怀疑就是因为这个地方写错了,导致root无法本地登录,查看该文件修改时间
    [root@XX02 pam.d]# stat /etc/pam.d/login
    File: `/etc/pam.d/login’
    Size: 758           Blocks: 8          IO Block: 4096   regular file
    Device: 802h/2050d    Inode: 1180811     Links: 1
    Access: (0644/-rw-r–r–)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2016-12-19 18:20:33.408598778 +0800
    Modify: 2016-12-19 15:42:25.915751484 +0800
    Change: 2016-12-19 15:42:25.931751029 +0800
    发现该文件在昨天下午15:42:25修改过,电话联系客户,客户承认在这个时间段对登录验证文件进行修改过。
    将session required pam_limis.so修改为session required pam_limits.so后,到机房验证,可以在本地登录了。


    网上搜索到的,linux下root无法登陆的几种情况:

    1、/etc/securetty 中规定了root可以从哪个tty设备登录,如果root登录不了,可以检查/etc/securetty文件,看看是否禁用了什么设备。如果发现被修改,可以将文件改回原来的样子。并且注意,如果修改了该文件,要保证该文件的权限模式为600,才能正常生效。
    正常的/etc/securetty文件内容:
    console
    vc/1
    vc/2
    vc/3
    vc/4
    vc/5
    vc/6
    vc/7
    vc/8
    vc/9
    vc/10
    vc/11
    tty1
    tty2
    tty3
    tty4
    tty5
    tty6
    tty7
    tty8
    tty9
    tty10
    tty11

    2、/etc/ssh/sshd_config文件中禁用root登录。如果sshd_config文件中有PermitRootLogin no这行,root就无法通过ssh登录。请改成PermitRootLogin yes,然后重启ssd。
    # /etc/init.d/sshd restart
    3、使用了pam认证,pam配置中限制了root账号的登录。这种情况的可能性比较多,需要仔细检查/etc/pam.d/下以及/etc/security/下的配置文件是否有禁止root的设置。
    4、/etc/passwd文件被修改。检查passwd文件中,root的uid是否为0,root的shell路径是否真实存在,总之root这行的每个设置要完全正常才行。(我就遇到过一种特殊情况,passwd文件的换行符变成了DOS格式,结果linux系统认为shell路径是/bin/bash^M,返回路径不存在错误,导致了root无法登录。所以还要保证passwd文件的换行符是unix格式。)
    5、root无法登录Xwindows图形界面。检查/etc/pam.d/gdm,将
    auth required pam_succeed_if.so user != root quiet 这行注释掉。
    此外,还有很多其他的情形会导致root无法登录。
    遇到root无法登录时,要看看是否ssh方式、控制台方式都无法登录。还有看看是否可以用其他账号登录,然后su成root,来进行修复。实在不行,再用单用户方式重启系统,或用光盘引导进入系统,来解除root的禁用(参考如何找回root密码)。
    如果是黑客禁用了root登录,还得检查/etc/passwd中是否有其他可疑的账号具有uid=0,以及/etc/sudoers中是否有可疑账号具有sudo权限,然后还得检查系统中是否有rootkit,sshd等系统文件是否被黑客替换等。

    RHEL 5.4中的关于pam.d/login的设置,导致root在内的用户无法在控制台登录
    因为在redhat 5.4 的64位版的系统中安装oracle 10,所以在/etc/pam.d/login 中加入:
    session    required    /lib/security/pam_limits.so
    然而这样的话在64位LINUX上就可能会出现ROOT无法在控制台上登陆的情况。
    解决方法:
    在32位系统使用此配置for oracle :
    session    required    /lib/security/pam_limits.so
    上面的配置为某些文档和资料所载,但只适合32位系统
    而在64位系统上要使用此配置for oracle :
    session    required    /lib64/security/pam_limits.so

    建议配置:
    session    required    pam_limits.so

    评论已关闭。