为什么 sudo 命令执行需要很长时间?

为什么 sudo 命令执行需要很长时间?

在过去的几个月里,我一直在学习 Linux(Fedora 10,然后是 11)(并且非常喜欢它——这就像重新发现计算机一样,有太多东西要学)。

我已将我的用户添加到文件的最后一行/etc/sudoers,如下所示,这样在执行命令时就不会要求输入密码sudo

MyUserName ALL=(ALL) NOPASSWD:ALL

现在,每次我使用 执行命令时sudo,它都会在实际执行任务之前暂停一段时间(约 10 秒)。这可能是什么原因?我该如何修复?我在 Fedora 11 x86 64 上运行 Sudo 版本 1.7.1。

答案1

我在 SO 上问了这个问题,然后它被移到了这里。也就是说,我不再有能力像拥有它一样编辑这个问题,甚至接受正确的答案,但事实证明这是真正的原因以及如何解决这个问题:

在此处找到 用户“rohandhruva”给出了正确答案:

如果您在安装过程中更改主机名,就会发生这种情况。

要解决该问题,请编辑文件 /etc/hosts

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 <ADD_YOURS_HERE> 
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 <ADD_YOURS_HERE>

答案2

检查你的 syslog 守护程序是否正常工作;这给我带来了这个问题。

运行以下命令

logger 'Hello world'
  1. 命令是否在合理的时间内返回?

  2. ‘Hello world’ 会出现在/var/log/syslog吗?

如果不是这种情况,则 syslog 守护程序已崩溃。重新启动它应该可以解决问题。

答案3

它需要读取的文件/目录是否在网络挂载上,或者它是否以某种方式触发从慢速 USB 设备读取?尝试 strace 并查看它在哪里慢;如果它运行得太快,请执行

sudo strace -r -o trace.log sudo echo hi

每一行都将以进入上一个系统调用以来所花费的时间开始。

(最初的 sudo 似乎是必要的;我不知道这会对结果产生多大的干扰。)

答案4

我也遇到了同样的问题,我检查了 /var/log/auth.log 和 syslog 中的错误。结果发现我的 LDAP 服务器无法访问,导致一切都变慢了。

我不再使用基于 LDAP 的身份验证,因此我从 /etc/nsswitch.conf 中删除了所有“ldap”引用

从那时起,一切又恢复正常运转。

相关内容