在 Ubuntu 9 64 位 Linux 机器上, sudo 需要更长的时间来启动。“sudo echo hi”需要 2-3 分钟。sudo 上的 strace 告诉 poll("/etc/pam.d/system-auth", POLLIN) 在 5 秒后超时,并且有多个调用(可能是循环)到同一个系统调用(这会导致 2-3 分钟的延迟)。
知道为什么 sudo 必须等待 /etc/pam.d/system-auth 吗?任何可以使 sudo 超时更快的可调参数?
谢谢塞缪尔
Jer*_*use 20
sudo 运行缓慢的最大原因是系统无法解析自己的主机名。你有你的本地主机名/etc/hosts
吗?如果没有,我建议将它与 IP 一起添加,127.0.1.1
这是我在所有系统上所做的。我添加了带有短主机名和完全限定域名 (FQDN) 的条目。这将消除 sudo 访问调用中的延迟 10 次中有 9 次。
我不禁认为 poll() 调用可能是一个转移注意力的事情。
每当我看到 sudo 特别慢时,总是 DNS 出了问题。无论是 /etc/resolv.conf 中列出的旧的、失效的服务器,还是配置错误的防火墙阻止端口 53 出站或完全其他什么东西,我总是发现速度很dig google.com
慢sudo echo foo
。
即使它不是 DNS,我怀疑速度缓慢与网络相关,并且可能与身份验证相关(正如 Kevin M 所建议的),在这种情况下 poll() 调用可能根本不是一个转移注意力的事情。
尝试在运行 sudo 的同时运行 tcpdump 并查看显示的内容。