/usr/bin/sudo 必须由 uid 0 拥有,并且设置了 setuid 位

/usr/bin/sudo 必须由 uid 0 拥有,并且设置了 setuid 位

我意外运行了以下命令

sudo chown [username] -hR /

现在sudo su出现错误:

sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set

如何解决这个问题?

答案1

正如你将读到的这个答案,这个问题是不是尽管人们已经尽力了。您可以让sudo命令再次运行无需重新安装按照以下简单步骤:

  1. 退出当前用户身份,然后重新以 root 身份登录。
  2. 执行chown root:root /usr/bin/sudo && chmod 4755 /usr/bin/sudo
  3. 以 root 身份注销,然后以当前用户身份重新登录。

这确实有效,并且比其他答案中推荐的“核选项”更快、更少痛苦。

如果你没有设置 root 密码,你可以启动恢复模式进行设置。

请注意,这将解决名义上的错误/usr/bin/sudo must be owned by uid 0 and have the setuid bit set,但是如果像 OP 一样,您所做的不仅仅是弄乱了文件的权限/usr/bin/sudo,那么更“核”的选项实际上可能更有意义。

答案2

备份您的数据并重新安装。

如果这看上去很极端,那是因为它确实如此。这不仅仅是sudo……您破坏了整个文件系统的权限结构。其他一些答案可能会起到sudo作用,但忽视整个问题会引发以后的灾难。

您可以尝试从另一个安装中镜像所有者,但有些情况(/var/例如)高度依赖于您实际安装的内容。如果您想了解问题的规模,我以前确实尝试过帮助别人解决此类问题。修复是手动的、耗时的并且很容易导致系统不安全或损坏。

解决这一混乱局面要比全新安装花费更长的时间。


一些人对此并不了解情况的严重性,因此上门拜访。在他们看来,这是一大堆不必要的工作,就像流氓水管工或机械师为了骗取你更大的工作而说的话。

如果您仅更改了的权限/usr/bin/sudo,请务必修复该权限。但这个问题涉及整个系统的变革。现在,每个文件(除了运行时文件)都归用户所有。用户运行的所有程序(例如浏览器、浏览器漏洞) 可能会覆盖系统文件、监视您、提取任何数据。这需要纠正。如上所述,这很困难。最简单的方法是重新安装。

所以请不要偷懒。文件系统权限有助于保证您的安全,请不要破坏它们。

答案3

  1. Esc在启动系统时按住进入恢复模式。

  2. 进入恢复模式后,在长列表中选择 root 选项(它实际上是 root shell)

  3. 输入命令 - mount -o remount /(或者在恢复中您可以单击 grub 选项。这帮助我获得了文件系统的读写权限。这基本上更新了文件系统上的读/写模式,因为该命令最初对我来说不起作用)

    它将以读写模式重新挂载您的文件系统。

  4. 命令 -chown -R root:root /usr 此命令将以递归方式再次将所有权从“用户”更改为 root

  5. 现在我仍然遇到sudo命令问题,因此我再次按照步骤 1、2、3 执行并执行chmod 4755 /usr/bin/sudo

现在我真的认为重新安装真的是一个“核选项”

答案4

上述方法对我不起作用,因为我无法“以 root 身份重新登录”(密码未知),但我通过编辑获得了 root shell

vi /etc/lightdm/lightdm.conf

autologin-user=root
greeter-show-manual-login=true

重启后我终于可以运行

chown root:root /usr/bin/sudo && chmod 4755 /usr/bin/sudo

相关内容