为什么sudo花费的时间太长?


13

我最近更新到了macOS Sierra 10.12.4 Beta(16E144f),这可能是导致sudo最多延迟10分钟的原因,因为这是自从出现此问题以来我记得的最新更改。我从来没有等过这么长时间的基本程序,显然有些错误。该命令最终成功,但是等待时间过长。

我一直在用这个问题作为参考。到目前为止,我还尝试将主机名也添加到该127.0.0.1行的末尾/etc/hosts。我检查了一下/etc/resolv.conf,确实从需要手动DNS条目的网络上获得了一些额外的条目,但是我删除了它们,没有任何区别。我使用networksetup -setdnsservers命令恢复了原始值。互联网仍然可以正常运行,但是速度仍然很慢sudo

我试过logger 'test'以为它会写入的命令/var/log/system.log,但是尽管很快就重新制作了它,但看起来它完全删除了该文件。

我希望使用该strace命令来查看sudo运行时发生了什么,但是该命令在OS X上不可用。以前有人在此操作系统上遇到此问题吗?

/var/log/system.log具有以下可能相关的消息。同样,该命令最终仍会像往常一样成功执行:

Feb  1 00:07:39 mycomputer com.apple.xpc.launchd[1] (com.apple.imfoundation.IMRemoteURLConnectionAgent): Unknown key for integer: _DirtyJetsamMemoryLimit
Feb  1 00:07:56 mycomputer com.apple.xpc.launchd[1] (com.apple.quicklook[2355]): Endpoint has been activated through legacy launch(3) APIs. Please switch to XPC or bootstrap_check_in(): com.apple.quicklook
Feb  1 00:08:16 mycomputer System Preferences[1886]: I can not do what i want
Feb  1 00:11:23 mycomputer com.apple.xpc.launchd[1] (com.apple.opendirectoryd[2335]): Service exited with abnormal code: 70
Feb  1 00:12:07 mycomputer syslogd[54]: ASL Sender Statistics
Feb  1 00:16:35 mycomputer com.apple.xpc.launchd[1] (com.apple.opendirectoryd[2395]): Service exited with abnormal code: 70

任何帮助,将不胜感激。


通过sudo运行哪个命令有关系吗?日志中的时间戳与您执行sudo以及运行sudo的操作有何关系?我在其中看到opendirectoryed,您使用本地帐户还是网络帐户?如果您切换用户(或在本地设置一个新用户),那sudo也很慢吗?
nohillside

我正在运行相同的Beta,而sudo却一如既往地快。
nohillside

1
@patrix好的。是的,很可能还有其他事情。是的,无论我与sudo一起使用什么命令,它都会发生,延迟是一致的。基本上,该命令从该日志行开始com.apple.quicklook,最后在结尾处结束,因此在该示例中,所有这些消息之间的时间大约为8分钟。每当它最终sudo ls在我的本地主目录中运行时,似乎都会出现opendirectoryed消息。现在,我只使用本地文件夹。尽管只有我一个用户,但我可以看到一个新帐户会发生什么...
Spencer Williams

@patrix我刚刚使另一个用户具有管理员权限。可悲的是,该帐户存在同样的问题。
Spencer Williams

Answers:


11

ErikMH的回答给了我一个主意,那就是首先尝试还原sudoers文件,而无需再次还原/升级整个系统。简而言之:

  1. 运行此命令以获取根shell: sudo -s
  2. 复制一份 /private/etc/sudoers
  3. 跑: cp /private/etc/sudoers\~orig /private/etc/sudoers
  4. 通过运行以下命令来修复权限: chmod 440 /private/etc/sudoers ; chown root:wheel /private/etc/sudoers
  5. 将所有文件/private/etc/sudoers.d/移到那里
  6. sudo在另一个终端进行测试
  7. 不要忘记退出此shell,以防止在您无意时以root用户身份运行命令

现在运行sudo应该可以再次工作。

下一步是检查旧的sudoers文件(您在步骤2中复制了文件)与当前文件之间的差异,并将这些更改逐步添加回/private/etc/sudoers/private/etc/sudoers.d/,每次运行命令使用sudo来检查更改是否将其中断。

就我而言,我在sudoers文件中指定了一个不存在的组。更正该问题解决了我的问题。


在macOS 10.13上工作!
Nisba

也为我工作(OSX 10.13)。也有同样的问题-sudoer文件中不存在组。
Petr Cibulka '12

嗯...我不记得在有此问题的机器上更改sudoers文件,但我希望我已经尝试了您的建议而不是恢复系统。
斯宾塞·威廉姆斯

我继续接受您的回答,因为看起来人们正在确认它会有所帮助,并且我希望我先尝试过此操作,也通常不建议还原整个系统。
斯宾塞·威廉姆斯

2

如果您曾经编辑过/ private / etc / sudoers文件,则在升级到10.12.4时可能会发生这种情况。

最简单的解决方案是:

  1. 回退到系统的先前版本(您总是在更新之前克隆系统,对吗?)
  2. 删除/ private / etc / sudoers
  3. 将/ private / etc / sudoers〜orig复制到sudoers
  4. 将sudoers的所有权重置为system / root-只读
  5. 将系统升级到10.12.4

“如果您曾经编辑过/ private / etc / sudoers文件,则在升级到10.12.4时可能会发生这种情况。” 我们知道到底是什么引起的吗?
Wowfunhappy

1

我希望我能找到造成这种情况的真正原因,但是我只能在还原系统软件后解决该问题。我以前在macOS Sierra的公开Beta版上,但现在我在主要版本上。

我正在慢慢加载所有程序,我会注意是否sudo再次遇到延迟。


0

我有一个文件/etc/sudoers.d/被删除。瞧- sudo又快了。

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.