/etc/sudoers
文件的最后一行,如下所示,这样我在执行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>
评论
非常正确。令人惊讶的是,如果您在安装时更改了主机名,则Fedora之类的发行版不会编辑/ etc / hosts,但是无论如何。那是您的开源!
– dimo414
09年8月5日,0:43
这修复了我缓慢的sudo使用,谢谢!我编辑了/ etc / hostname,只是忘了编辑/ etc / hosts文件。
–乔
2011年5月4日15:10
将您的主机名添加到127.0.0.1或:: 1行会导致某些与服务器相关的软件无法绑定到正确的主机名/ IP /接口。此类示例就是Cloudera Manager,Hadoop服务获得错误的主机名并混淆了CM,因为它们都解析为本地主机。我建议阅读下面的其他答案以寻求可能的解决方案。这可能会或不会导致独立工作站没有任何其他计算机连接的问题。
–ddcruver
2013年12月22日在22:14
也可以是/etc/nsswitch.conf(出于类似原因)。我的设置为“主机:dns文件”,因此它在超时很长的DNS服务器上查找我的主机名。我将其更改为“主机:文件dns”,因此现在它将首先在/ etc / hosts中查找。感谢您的回答,这使我不得不关注nsswitch.conf!
–艾伦·波特(Alan Porter)
15年3月19日在16:12
这是解决方案,这太荒谬了。为什么世界上sudo命令必须查看主机名才能起作用?我的主机名与sudo echo hello有什么关系?无论如何,谢谢你的回答
–smac89
18年15月15日在17:30
#2 楼
检查您的syslog守护程序是否正常运行;运行以下命令
logger 'Hello world'
命令是否在合理的时间内返回?
/var/log/syslog
中是否显示“ Hello world”?如果不是这种情况,则syslog守护程序已崩溃。重新启动它应该可以解决您的问题。评论
令人惊讶的是,这就是我的问题。有谁会想过。对我来说,解决方案是重新启动syslog。服务rsyslog重新启动
– MikeKulls
2015年11月25日上午10:34
同样在这里。服务rsyslog重新启动修复了我的慢速sudo命令。
– Pedro Cordeiro
16年9月2日在16:54
令人惊讶的是,这就是我的问题。在此之前,对服务器的整个请求是如此缓慢。我只想知道为什么?
– michael wang
17年5月8日在6:43
#3 楼
它是在网络安装上需要读取的文件/目录之一,还是以某种方式触发了从慢速USB设备读取数据?尝试使用strace看看它变慢的地方;如果速度太快,请执行sudo strace -r -o trace.log sudo echo hi
每行都将从进入上一个系统调用以来的时间开始。 sudo似乎是必需的;我不知道有多少会干扰结果。)
评论
谢谢。这是在硬盘上,没有USB或网络驱动器。
– Cuga
09年7月9日在4:27
@Cuga:您从strace中学到了什么?
–ysth
09年7月9日在4:41
@oligofren:您需要执行sudo strace
–ysth
15年5月4日在21:41
#4 楼
我最近发现我有同样的问题。没有sudo延迟,然后突然一下,大约10-20秒的延迟。我使用以下方法确定了具体问题: 1. chmod u+s /usr/sbin/strace (as the root user)
作为您自己:
1. sudo -K
2. strace sudo /bin/tcsh
,然后找到系统的位置呼叫正在挂起。
在我的情况下,我发现它挂在DNS转换上,显然在
/etc/resolv.conf
列表中的DNSen之一非常繁忙或变坏。因此,我更改了解析顺序,然后重新整理声音。评论
最佳答案(对我而言)!发现我的DBus Broker在网络断开时崩溃,而sudo / KDE在连接它时超时。谢谢!
– PSSGCSim
19年7月13日在7:21
谢谢,这对我有帮助。我还必须撤消对/etc/nsswitch.conf中的hosts行的先前更改。我已经将“解析DNS”添加为主机值的前缀。当我删除此前缀时,sudo再次很快。
–mnieber
19年7月16日在7:33
#5 楼
我不确定Fedora,但我使用了其他系统,其中sudo会检查您登录的地方,如果您的DNS设置不正确,则超时可能需要一段时间。当SSH进入计算机时,也可以看到这一点-提示需要花费很多时间。#6 楼
我遇到了同样的问题,我检查了/var/log/auth.log和syslog中的错误。原来无法访问我的LDAP服务器,这减慢了一切。我不再使用基于LDAP的身份验证,因此我从/etc/nsswitch.conf中删除了所有“ ldap”引用。 />
从那时起,一切都再次变得像魅力。
评论
为什么您对一个已有五年历史的问题发布一个显然不相关的答案(OP未使用LDAP)?
– Sven
2014年11月25日13:15
因为它可能会帮助任何人。我检查了这里提到的所有内容,但没有任何帮助。通过检查他是否有任何LDAP连接问题作为sudo命令反应迟钝和无响应的根本原因,其他人可能会集中精力寻找正确的答案。它与DNS相关的答案同等重要,因为其背后的某些内容存在故障,用户无法直接看到它们。我认为此网站是一般的知识来源,而不仅仅是单个问题/答案类型的网站。这是关于收集相关知识。
–樱仓
2014年11月26日10:48
另外谁是你呢?该站点之所以有效,是因为激励了知识共享,而不是因为人们的意见不足。如果您不喜欢它,那么您有权忽略它。
–樱仓
2014年11月26日10:51
#7 楼
在可能的情况下,发现/etc/sysconfig
文件中不存在主机名(在/etc/hosts
/ network中配置)。因此在添加上述文件后,该文件会立即打开。#8 楼
我有一个类似的问题,我通过放置主机名(例如mybox)和主机名命令的完整输出(mybox.mydomain.com)来解决它。这样就清除了。从2分钟开始打开/ etc / hosts以进行瞬时访问。#9 楼
SELinux情况如果相同的sudo命令仅在守护程序中缓慢,而在命令行中快速,则很可能是SELinux引起的。 (SELinux = NSA Security-Enhanced Linux内核模块,默认情况下在Fedora中启用。)
典型情况是http服务器和用于服务器管理的特殊脚本,限制在
sudoers
中:apache ALL=(root_or_user) NOPASSWD: /full/path/the_safe_command
在这种情况下,典型的情况是审核日志
ausearch -m avc -ts today
中未报告关于SELinux的任何信息,但是如果我们暂时禁用setenforce 0
的强制执行,则脚本运行得很快。 (然后通过setenforce 1
重新启用)延迟25秒后,系统日志(journalcrl)中唯一相关的消息是: sudo [...] pam_systemd(sudo:session):创建会话失败:未收到回复。可能的原因包括:远程应用程序未发送答复,消息总线安全策略阻止了答复,答复超时到期或网络连接中断。
... sudo [...]:pam_unix( sudo:session):通过(uid = 0)为root用户打开的会话可以通过
semodule -DB
启用对所有静默“ dont-audit” SElinux消息的日志记录,并通过semodule -B
再次禁用。 (希望我很快能在此为这种情况编写一个SELinux策略模块,或者可以使用此答案中的方法。)
评论
感谢您提供这些信息。从这里的信息中,我然后可以找到相关文章,该文章指出了fprintd(指纹验证)罪魁祸首的可能性。删除fprintd和fprintd-pam为我解决了此问题。
– KevinO
17年5月17日在19:44
@KevinO很高兴它可以帮助您找到解决方案。但是我知道我的问题非常具体,我对这个问题的贡献应该只是如何诊断或排除对SELinux的怀疑的方法。
– hynekcer
17年5月17日在22:49
我绝对给了它+1!消息总线导致了解决方案。我在sudo上看了几次很慢,但是您的线索正是我需要的。
– KevinO
17年5月18日在1:19
#10 楼
检查/ etc / hosts文件,并确保您具有127.0.0.1的条目。(源)
#11 楼
通过查看我拥有的样本sudoers
文件,我相信在NOPASSWD:
位之后应该有一个空格。评论
我添加了一个空格,但是仍然有滞后。谢谢你的建议。
– Cuga
2009年7月9日下午4:35
#12 楼
修复所有主机问题之后,如果正在运行nscd之类的DNS缓存应用程序,请确保清除所有错误的DNS缓存:/etc/init.d/nscd force-reload
#13 楼
对我来说,这是krb5-user / config / locales的安装。我通过检查/var/log/auth.log注意到了这一点。使用apt-get remove卸载那些修复了它的软件包。如果您显然在需要kerberos(pam_krb5)的计算机上,请不要删除这些软件包。#14 楼
您正在使用LDAP进行身份验证吗?如果是这样,则可能要使用软绑定策略。在/etc/ldap/ldap.conf(或/etc/ldap.conf)中:
bind_policy soft
#15 楼
听起来好像您的身份验证链中存在某种超时。检查sudo如何尝试进行身份验证并注意瓶颈。#16 楼
Systemd Case对我来说,我的系统内存不足,很多进程崩溃了。我的系统是基于systemd的,那里的东西已经崩溃了。我很难记住我所做的一切,但是:
systemctl status <any.service>
会超时我无法
sudo reboot
(基于系统)解决方案
重新启动解决了我的问题,但对我来说只是一个创可贴。您仍然需要找出为什么内存不足/崩溃。
评论
从技术上讲,这算是编辑脚本,对吗?脚本不是程序吗?NOPASSWD:被视为安全隐患,并且没有达到必须首先使用sudo的目的。
我可以买,但是问题仍然在于为什么要花这么长时间。
这台机器从哪里获得用户和身份验证? LDAP,也许可以使用Kerberos?
每次使用sudo时,可能重复的操作会在完成之前挂起