在过去的几个月里,我一直在使用Linux(Fedora 10,然后是11),并且非常享受它,就像重新发现计算机,学习这么多东西。
我已经将我的用户添加到/ etc / sudoers文件的最后一行,如下所示,以便在执行sudo命令时不会询问我的密码:
MyUserName ALL =(ALL)NOPASSWD:ALL
现在,每次我使用sudo执行一个命令,在实际执行任务(~10秒)之前,它会暂停一个不可估量的时间。 为什么会这样,我该如何解决这个问题? 我在Fedora 11 x86 64上运行Sudo 1.7.1版本。
我在这个问题上提出了这个问题,它被移动到这里。 也就是说,我不再有能力编辑这个问题,就好像我拥有它,甚至接受正确的答案,但结果却成了解决问题的真正原因:
在这里find用户“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>
检查你的系统日志守护进程是否工作正常; 这给我造成了这个问题。
运行以下命令
logger 'Hello world'
命令是否在合理的时间内返回?
在/var/log/syslog
显示'Hello world'吗?
如果情况并非如此,syslog守护进程已经崩溃。 重新启动它应该可以解决你的问题。
是需要在networking上读取的文件/目录之一,还是以某种方式触发缓慢的USB设备读取? 尝试strace,看看它的速度缓慢; 如果过得太快的话
sudo strace -r -o trace.log sudo echo hi
每行将以进入前一个系统调用以来的时间开始。
(最初的sudo似乎是必要的,我不知道会有多大的干扰结果。)
我最近发现我有同样的问题。 没有sudo延迟,然后突然间,大约10-20秒的延迟。 我确定了具体的问题,使用:
1. chmod u+s /usr/sbin/strace (as the root user)
作为你自己:
1. sudo -K 2. strace sudo /bin/tcsh
然后find系统调用挂在哪里。
在我的情况下,我发现它挂在一个DNS翻译,显然是在我的/etc/resolv.conf
列表中的一个DNSen是非常buzy或坏了。 所以我改变了决议顺序,噗的东西迅速工作。
我不确定Fedora,但是我使用了其他系统,sudo会检查你login的地方,如果你的DNS设置不好,可能会花费很长时间。 这也可以看出,当SSH到机器 – 它需要时间来提出一个提示。
在很多情况下,发现/etc/sysconfig
/ network文件中configuration的主机名不存在于/etc/hosts
文件中; 所以在join上述文件后,文件即时打开。
我有一个类似的问题,我通过放置主机名(例如mybox)和主机名命令(mybox.mydomain.com)的完整输出来解决它。 这清除了它的权利。 从2分钟打开/ etc / hosts来瞬时访问。
从我看的示例sudoers
文件来看,我相信在NOPASSWD:
位之后应该有一个空格。
检查你的/ etc / hosts文件,并确保你有一个127.0.0.1的条目
( 来源 )
修复任何主机问题后,请确保您清除了任何错误的DNScaching,如果您正在运行DNScaching应用程序,如nscd:
/etc/init.d/nscd force-reload
对我来说,是安装了krb5-user / config / locales。 我通过检查/var/log/auth.log来注意到这一点。 使用apt-get remove来卸载那些修复它的软件包。 如果你在一台需要kerberos(pam_krb5)的计算机上,请不要移除这些软件包。
我同样的问题,我检查/var/log/auth.log和syslog的错误。 事实certificate,我的LDAP服务器无法到达,并放缓了一切。
我没有再使用基于LDAP的身份validation,所以我从/etc/nsswitch.conf中删除了所有的“ldap”引用
从那时起,一切都像魅力一样。
如果相同的sudo命令只在守护进程中很慢,而在命令行上则很快,那么最有可能是由SELinux引起的。 (SELinux =默认情况下在Fedora中启用的NSA安全增强Linux内核模块。)
典型的情况是一个http服务器和一个服务器pipe理的特殊脚本,在sudoers
限制:
apache ALL=(root_or_user) NOPASSWD: /full/path/the_safe_command
在这种情况下,通常在审计日志ausearch -m avc -ts today
中没有关于SELinux的报告,但是如果我们通过setenforce 0
暂时禁用强制执行,则脚本运行得很快。 (然后通过setenforce 1
启用)
系统日志(journalcrl)中唯一相关的消息是延迟25秒后的消息:
… sudo […] pam_systemd(sudo:session):无法创build会话:没有收到回复。 可能的原因包括:远程应用程序未发送回复,消息总线安全策略阻止回复,回复超时过期或networking连接中断。
… sudo […]:pam_unix(sudo:session):通过(uid = 0)为用户root打开的会话
logging所有沉默的“不审核”SElinux消息可以由semodule -DB
启用,并由semodule -B
再次禁用。
(我希望在这里很快写一个SELinux策略模块,或者可以使用这个答案的方法。)
您是否使用LDAP进行身份validation?
如果是这样,你可能想使用绑定策略软。 在/etc/ldap/ldap.conf(或/etc/ldap.conf)中:
bind_policy soft
听起来就像你在authentication链中有某种超时。 检查sudo如何尝试authentication并注意瓶颈。