“sudo”的非确定性行为

Modified on: Sat, 12 Oct 2019 23:40:02 +0800

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

当然,预期输出是一系列行,每行都以一个冒号字符开头。我没有任何线索从哪里开始调试这个问题。

对于每次尝试(无论命令是否实际运行),我都会在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.

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

任何帮助将不胜感激。

作者:liori

最佳答案

已填充错误。解决方法:

  

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

session required        pam_loginuid.so

  
  就在此之前
  @include common-session

(来自Michael Biebl的回复)

作者:liori

相关问答

添加新评论