获取消息"sudo:必须是setuid root",但sudo已经由root拥有

Gre*_*rty 15 linux sudo setuid

我正在尝试运行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*
Run Code Online (Sandbox Code Playgroud)

对于如何解决这个问题,有任何的建议吗?

小智 59

当文件/ usr/bin/sudo的权限设置为777时,有时会导致此问题.如果执行类似操作chmod -R 777 /usr/,则可以执行此操作.它有效地破坏了sudo.如果这是您的问题,这是解决方案,并且接受的答案不起作用:

修理:

重新启动电脑,在启动菜单按shift.

这应该调出GNU GRUB(即恢复模式)菜单.

  • 如果这不起作用,只需重新启动mid boot并在下次启动时出现提示时选择恢复模式.

选择以高级选项开头的行

选择以("恢复模式")结尾的操作系统的最顶层版本

按enter键

在下面的菜单中,转到"Drop to root shell prompt"

输入以下内容:

mount -o remount,rw /

mount --all

chown root:root /usr/bin/sudo

chmod 4755 /usr/bin/sudo

restart
Run Code Online (Sandbox Code Playgroud)

这应该恢复sudo privellages.

  • 谢谢你救我的一天!! :) (4认同)
  • u_vote用于最简单的灾难修复. (3认同)
  • 像魅力一样工作......但是......(我正在运行一个**debian jessie**)我不得不用**reboot**交换**restart**。 (2认同)

Gre*_*rty 8

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

chmod u+s /usr/bin/sudo
Run Code Online (Sandbox Code Playgroud)

并解决问题

  • 发布问题时,StackOverflow会询问您是否有答案要作为问答的一部分发布.因此,我尝试记录我认为其他人可能关心的问题. (4认同)