第一须藤总是慢


8

sudo我在Ubuntu 14.04服务器上输入的第一个总是很慢。密码提示会立即显示,但是在我按Enter键之后,大约需要10到15秒钟,直到打印输出。此后所有sudo命令都会立即执行。

sudo strace -S time -c sudo echo hi在这种情况下,运行类似之类的命令不会显示任何有用的信息,因为sudo from sudo 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)

使用udp的tcp instad显示相同的条目。我用OURLOCALDOMAIN替换了我们大学的域名。

现在,我认为kerberos可能与此有关,但是我删除了/etc/krb5.conf并重新启动,仍然没有任何变化。在我看来,该服务器试图在我们大学网络的中央kerberos服务器上进行自我验证。我知道几年前,此IP已注册到为我们部门运行samba的服务器。可以连接吗?我将主机名更改为当时使用的主机名,sudo行为未更改。Lmwangi对PAM提出了一些建议,但我对此知之甚少,所以我不知道该如何处理。我还记得安装samba时从Heimdal Kerberos切换到MIT Kerberos,因为在安装samba时遇到了麻烦。我还将在接下来的几天中尝试使用评论中的想法,但是我将旅行几天,因此可能需要一些时间。

编辑2:解决

中有一个旧的dns搜索条目,将/etc/network/interfaces所有内容弄乱了。我觉得很傻。现在一切正常。


1
暂时将set-uid设置为on strace将使您可以在没有first的情况下运行它sudo。使用该-o <file>选项将输出保存到文件中进行分析也可能会有所帮助。
garethTheRed 2014年

1
就是那个。然后按照它sudo -k删除您的缓存的凭据。我发现strace -Tro sudo.log sudo echo hi这很有用,因为最后一栏显示了每次通话的时间。grep对于unamesocket作为首发。
garethTheRed 2014年

1
5.005153秒来自该-r选项(可能应删除)。通过寻找从长期调用启动-T选项-他们是内部那些<>-你的情况0.000097秒。
garethTheRed 2014年

1
您是否检查了ps,top和所有系统日志文件,以防其他原因导致速度变慢?
mdpc

1
您可以发布您的pam配置吗?strace最终将带您到那里,但这可能是更高级别的配置问题。身份验证过程中最长时间的暂停是由于无法访问远程服务器并且必须等待超时所致。子网更改可能会使身份验证服务器与该子网位于不同的子网中。sudo临时将成功身份验证的记录保存在下面,/var因此这可能就是为什么随后的调用会立即进行的原因。
布拉奇利2014年

Answers:


2

我怀疑您的机器正在尝试使用PAM与外部身份验证服务(例如NIS / LDAP)联系...

如果我正确理解PAM,您将无法在strace调用中看到PAM查找。我建议您运行tshark / tcpdump,看看是否可以将特定的网络流量与sudo尝试相关联。这里可能是DNS查找&| LDAP呼叫。

tcpdump -i eth0 -w network.pcap -s0 -Av

如果您确实找到导致查询的原因,请找出相关的PAM模块来编辑和解决问题。另外,如果是DNS查找,则只需添加/ etc / hosts条目即可伪造名称并重定向到localhost。这将使您的sudo速度更快,因为查找将很快,并将重定向到localhost,并且由于没有任何监听localhost的操作,网络事务将很快失败...


现在,这似乎朝着良好的方向发展。我的日志中有很多“ bad udp cksum”和“ bad tcp cksum”调用。发表评论太久了,所以我将在一秒钟内更新OP。
zerweck 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.