sudo
我在 Ubuntu 14.04 服务器上的第一个输入总是很慢。密码提示立即显示,但在我按 Enter 后,大约需要 10-15 秒才能打印输出。此后的所有 sudo 命令都会立即执行。
sudo strace -S time -c sudo echo hi
在这种情况下,运行类似的东西不会显示任何有用的东西,因为 sudo fromsudo echo hi
已经是第二个 sudo 并且执行速度很快。如果一段时间过去了,我必须在正在运行的会话中重新输入密码,它又会变慢。
我找到的所有解决方案都是关于在/etc/hosts
文件中添加您的主机名作为 127.0.0.1 的分辨率,但我没有这样做。su root
立即执行。我记得最近几天唯一改变的是服务器路由、安装 samba、dnsutils 和 bind9 的子网的网络掩码。但是这些进程都没有运行,问题仍然存在,在物理访问、ssh 会话和 tmux 会话中。
编辑:新方法
我尝试sudo tcpdump -vvvi any > tcpdump.log
在所有 NIC 断开连接的情况下运行。日志显示了很多以下内容:
18:35:09.453399 IP (tos 0x0, ttl 64, id 49112, offset 0, flags [DF], proto UDP (17), length 76)
localhost.38498 > localhost.domain: [bad udp cksum 0xfe4b -> 0x1050!] 58546+ SRV? _kerberos._udp.KF.OURLOCALDOMAIN.DE. (48)
18:35:09.457412 IP (tos 0x0, ttl 64, id 49113, offset 0, flags [none], proto UDP (17), length 76)
localhost.domain > localhost.38498: [bad udp cksum 0xfe4b -> 0x8fcd!] 58546 ServFail q: SRV? _kerberos._udp.KF.OURLOCALDOMAIN.DE. 0/0/0 (48)
Run Code Online (Sandbox Code Playgroud)
相同的条目与 udp 的 tcp instad 一起显示。我把我们大学的域名换成了OURLOCALDOMAIN。
现在我认为 kerberos 可能与它有关,但我删除了 /etc/krb5.conf 并重新启动,仍然没有变化。在我看来,服务器试图在我们大学网络的中央 kerberos 服务器上验证自己。我知道几年前,这个 IP 被注册到为我们部门运行 samba 的服务器上。可能有联系吗?我将我的主机名更改为当时使用的主机名,sudo 行为没有变化。Lmwangi 提出了一些关于 PAM 的建议,我对此知之甚少,所以我不知道如何解决这个问题。我还记得我在安装 samba 时从 Heimdal Kerberos 切换到 MIT Kerberos,因为我在 samba 安装过程中遇到了麻烦。我也打算在接下来的几天里尝试评论中的想法,但我会出差几天,所以可能需要一些时间。
编辑 2:已解决
有一个遗留的 dns-search 条目/etc/network/interfaces
把一切都搞砸了。我觉得非常愚蠢。现在一切正常。
我怀疑您的机器正在尝试使用 PAM 联系外部身份验证服务(例如 NIS/LDAP)...
如果我对 PAM 的理解正确,您将无法在 strace 调用中看到 PAM 查找。我建议您运行 tshark/tcpdump 并查看是否可以将特定网络流量与您的 sudo 尝试相关联。这里的嫌疑人是 DNS 查找 &| LDAP 调用。
tcpdump -i eth0 -w network.pcap -s0 -Av
Run Code Online (Sandbox Code Playgroud)
如果您确实找到了导致查找的原因,请找到相关的 PAM 模块来编辑并修复问题。或者,如果是 DNS 查找,只需添加 /etc/hosts 条目来伪造名称并重定向到本地主机。这将使你的 sudo 变得更快,因为查找将很快并且将重定向到本地主机,并且网络事务将快速失败,因为本地主机上没有任何监听......
归档时间: |
|
查看次数: |
4429 次 |
最近记录: |