自从几个月前我从 Ubuntu 切换到 Manjaro 以来,我遇到了一个奇怪的问题:我无法登录虚拟控制台,总是收到“登录不正确”的消息,尽管所有其他身份验证都运行正常。今天,我终于决定解决这个问题,但没有成功。
getty
似乎运行正常并按login
预期调用。
$ ps auxww |grep getty
root 129384 0.0 0.0 7176 3880 tty3 Ss+ 22:47 0:00 /sbin/agetty -o -p -- \u --noclear - linux
我检查过没有剩余的/etc/nologin
或/var/run/nologin
,并且相关配置(/etc/login.defs
,/etc/security/*
)完全未受影响并且是相当宽松的发行版默认值。
尽管如此,当我尝试登录 VC 时,我得到(在启用debug
某些 PAM 模块的选项后):
dic 06 22:46:53 s0me0ne login[128494]: pam_systemd_home(login:auth): pam-systemd-homed authenticating
dic 06 22:46:53 s0me0ne login[128494]: pam_systemd_home(login:auth): New sd-bus connection (system-bus-pam-systemd-home-128494) opened.
dic 06 22:46:53 s0me0ne login[128494]: pam_systemd_home(login:auth): systemd-homed is not available: Could not activate remote peer 'org.freedesktop.home1': activation request failed: unknown unit
dic 06 22:46:53 s0me0ne login[128494]: pam_unix(login:auth): username [s0me0ne] obtained
dic 06 22:46:55 s0me0ne unix_chkpwd[129255]: password check failed for user (s0me0ne)
dic 06 22:46:55 s0me0ne login[128494]: pam_unix(login:auth): authentication failure; logname=LOGIN uid=0 euid=0 tty=/dev/tty3 ruser= rhost= user=s0me0ne
dic 06 22:46:56 s0me0ne login[128494]: FAILED LOGIN 1 FROM tty3 FOR s0me0ne, Authentication failure
我仔细检查了unix_chkpwd
系统中存在的所有实例是否都是 SUID root 并且都是指向同一个二进制文件的硬链接:
$ ls -li /usr/bin/unix_chkpwd /sbin/unix_chkpwd
220202420 -rwsr-sr-x 1 root root 26672 18 nov 12.58 /sbin/unix_chkpwd
220202420 -rwsr-sr-x 1 root root 26672 18 nov 12.58 /usr/bin/unix_chkpwd
然后我回想起以前的好事pamtester
,尝试了一下:
$ pamtester -v login s0me0ne authenticate pamtester: invoking pam_start(login, s0me0ne, ...)
pamtester: performing operation - authenticate
Password:
pamtester: successfully authenticated
运行良好,PAM 很正常,日志中没有错误。
我尝试的最后一件事是手动测试unix_chkpwd
功能本身:
$ mkfifo /tmp/pw
$ echo -ne 'mypassword\0' >/tmp/pw &
[1] 137112
$ /sbin/unix_chkpwd s0me0ne nullok </tmp/pw
[1] + done echo -ne 'mypassword\0' > /tmp/pw
$ echo $?
0
到现在为止,我完全陷入了困境,摸不着头脑。任何想法都值得感激。