`sudo` 的不确定性行为

`sudo` 的不确定性行为

我在使用 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:~$ 

我编写了一个测试用例来演示这个问题:

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:~$ 

当然,预期的输出是一系列行,每行都以一个冒号字符开头。我不知道从哪里开始调试这个问题。

对于每次尝试(无论命令是否实际运行),我都会在系统日志中获得一个条目:

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.

这是 Debian SID。几天前,在进行一次较大的更新(我大概每个月更新一次系统)并将系统从一个硬盘移动到另一个硬盘(使用rsync -av --del)后,我开始观察到这种行为。

任何帮助将不胜感激。

答案1

Sid 还不稳定,可能是 bug,建议提交给 Debian这里

答案2

Bug 已经补上. 解决方法:

就我而言,我修改了 /etc/pam.d/login 和 /etc/pam.d/gdm3*,并添加了一行

session required        pam_loginuid.so

就在 @include common-session 之前

(摘自 Michael Biebl 的回复)

相关内容