收到消息“sudo: must be setuid root”,但sudo已经是root拥有的

19

我尝试运行sudo,但它失败了:

gregd@david $ sudo ls
sudo: must be setuid root
gregd@david $ which sudo
/usr/bin/sudo
gregd@david $ ll /usr/bin/sudo
-rwxr-xr-x 1 root root 165K 2012-05-16 00:25 /usr/bin/sudo*

你有关于如何修复这个问题的建议吗?


我遇到了同样的问题。 - Raja Simon
2个回答

79

有时候这个问题是由于文件 /usr/bin/sudo 的权限被设置为 777 导致的。如果您像 chmod -R 777 /usr/ 这样做,就会有效地破坏 sudo。如果这是您的问题,并且已经接受的答案不起作用,这里是解决方案:

解决方法:

重新启动电脑,在启动菜单中按下 shift 键。

这应该会带出 GNU GRUB(即恢复模式)菜单。

  • 如果这样做不起作用,只需在启动过程中重新启动,并在下次启动时选择恢复模式。

选择以 Advanced options 开头的行

选择以 ("recovery mode") 结尾的操作系统版本中最高的那一个

按回车键

在随后的菜单中,向下滚动到 "Drop to root shell prompt"(进入根 shell 提示符)

输入以下内容:

mount -o remount,rw /

mount --all

chown root:root /usr/bin/sudo

chmod 4755 /usr/bin/sudo

restart

这应该恢复sudo权限。


1
@Adam 哈哈,我也是初学者,也像你一样使用 chmod -R 777 /usr/ 来破坏了 sudo。解决方案很容易理解,而且有效。谢谢! - Jonathan Lam
5
感谢你解救了我的一天!! :) - divyenduz
3
你可以投票支持最简单的灾难修复方案。 - Bedir Yilmaz
3
运作得非常好......但是......(我正在运行 Debian Jessie),我不得不将“重启”换成“重新启动”。 - user3451822
这是最好的解决我的问题的方法。 - P S
显示剩余4条评论

11

您必须能够以root身份登录,但如果您可以,则可以运行此命令

chmod u+s /usr/bin/sudo

解决问题


这个问题是由什么引起的? - cwallenpoole
我认为这可能与将您的bin目录复制为非root用户有关,然后对所有文件进行chown以使它们归属于root。但这只是一个猜测。 - Greg Dougherty
有趣。这是你在同一分钟内自己回答的至少第二个问题。发现了系统滥用漏洞? - keltar
4
在发布问题时,StackOverflow会问您是否有一个答案需要作为问答的一部分发布。因此,我尝试记录那些我认为其他人可能也关心的问题。 - Greg Dougherty
在OSX 10.6中,我能够通过在单用户模式下运行Applejack程序来解决这个问题。 - MikeiLL

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接