今天遇到的一个看上去很奇怪的问题(其实是自己蠢,具体经过感兴趣的可以参照一次特殊的root密码错误经历)。本文主要记录Linux系统下,root账户无法登录的解决办法。
/etc/securetty中规定了root可以从哪个tty设备登录,如果root登录不了,可以检查/etc/securetty文件,看看是否禁用了什么设备。如果发现被修改,可以将文件改回原来的样子。并且注意,如果修改了该文件,要保证该文件的权限模式为600,才能正常生效。正常的
/etc/securetty文件内容:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23console
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/etc/ssh/sshd_config文件中禁用root登录。如果sshd_config文件中有PermitRootLogin no这行,root就无法通过ssh登录。请改成PermitRootLogin yes,然后重启ssd:/etc/init.d/sshd restart使用了
pam认证,pam配置中限制了root账号的登录。这种情况的可能性比较多,需要仔细检查/etc/pam.d/下以及/etc/security/下的配置文件是否有禁止root的设置。/etc/passwd文件被修改。检查passwd文件中,root的uid是否为0,root的shell路径是否真实存在,总之root这行的每个设置要完全正常才行。我就遇到过一种特殊情况,
passwd文件的换行符变成了DOS格式,结果linux系统认为shell路径是/bin/bash^M,返回路径不存在错误,导致了root无法登录。所以还要保证passwd文件的换行符是unix格式。