我对 sudo 有一个相当奇怪的问题。基本上,它进行身份验证,但有时只是不启动提供的命令。例如:
liori@marvin:~$ sudo whoami
root
liori@marvin:~$ sudo whoami
root
liori@marvin:~$ sudo whoami
liori@marvin:~$ sudo whoami
liori@marvin:~$ sudo whoami
liori@marvin:~$
Run Code Online (Sandbox Code Playgroud)
我写了一个测试用例来演示这个问题:
liori@marvin:~$ sudo whoami; for i in `seq 100`; do echo -n ':' ; sudo whoami ; done ; echo
root
::::::::::::root
:::::root
:::::root
:::::::::::root
::::::::::root
::::::::::::::::::::::::::::::::root
:::root
::::root
::::root
:::root
:::root
::root
:root
:::::
liori@marvin:~$
Run Code Online (Sandbox Code Playgroud)
当然,预期的输出是一系列行,每行都以一个冒号字符开头。我不知道从哪里开始调试这个问题。
对于每次尝试(无论命令是否实际运行),我都会在 syslog 中得到一个条目:
Apr 11 19:47:40 marvin systemd-logind[806]: New session c1079 of user root.
Apr 11 19:47:40 marvin systemd-logind[806]: Removed session c1079.
Run Code Online (Sandbox Code Playgroud)
这是 Debian SID。几天前,在进行了较大的更新(我可能每月更新此系统一次)以及将系统从一个硬盘移动到另一个(使用rsync -av --del
)之后,我开始观察这种行为。
任何帮助将不胜感激。
Bug 已经填满了。解决方法:
就我而言,我更改了 /etc/pam.d/login 和 /etc/pam.d/gdm3* 并添加了一行
Run Code Online (Sandbox Code Playgroud)session required pam_loginuid.so
就在 @include 公共会话之前
(来自迈克尔·比布尔的回应)