如何在 Ubuntu 上取回 sudo?

Ada*_*asz 12 password root ubuntu permissions sudo

我已经这样做了:

sudo chown -R myname /usr/
Run Code Online (Sandbox Code Playgroud)

现在sudo由于此错误,我无法使用该命令:

sudo: 必须是 setuid root

当我读到这意味着这个文件的所有者/usr/bin/sudo不是根。由于/usr文件夹上的 chown,它现在是我的用户。

在许多论坛和博客上,人们建议以 root 身份执行此操作:

# chown root:root /usr/bin/sudo
# chmod 4111 /usr/bin/sudo
Run Code Online (Sandbox Code Playgroud)

...但问题是我需要以 root 身份登录,但我不能,因为如果我su在终端中输入密码是错误的(实际上我使用的是我添加到用户的密码):

$ su
Password:
su: Authentication failure
Run Code Online (Sandbox Code Playgroud)

那么我可以取回sudo命令吗?

编辑:我的 Ubuntu 在 Mac OS X 上的 Parallels 下。

Cal*_*leb 11

由于您已经对唯一授予您根级访问权限的权限进行了管理,因此您将需要来自当前软件环境之外的一些帮助来解决此问题。

我建议最简单的方法是为您的发行版启动 LiveCD,安装您的驱动器,并使用chmod您从那里列出的更改文件权限。

您也可以尝试启动到单用户模式以获得 root shell。

请注意,通常/usr/目录中的所有内容都应该拥有,root因此您应该能够进行递归chown以修复您破坏的任何内容。(编辑:每@Gilles评论显然是跑chown断setuid和setgid位,所以你需要手动比较现有系统只要重新修复的所有权,恢复所有的。)

然而,很FEW4111。这个额外的权限是一个特殊的权限,但是即使以用户身份运行,它也可以以 root 身份执行!只有sudo少数几个命令应该设置此权限位。如果您没有运行 achmod开始,您可能根本不需要修复此问题,所有权限应该已经正确。不要在chmod不知道所有权限应该是什么的情况下运行大型操作。


psu*_*usi 5

如果你有一个类似的系统,你可以用它作为指导来查看所有文件的正确所有权是什么,那么你可以启动到救援模式,进入 root shell,并手动恢复所有文件的正确所有权。文件/usr

最快的方法可能是重新安装操作系统或从备份中恢复。

在 Ubuntu 或类似系统中,默认情况下没有 root 密码(帐户被禁用),这就是为什么你不能su.

  • 哇,放轻松,这不是 Windows 重新安装并不总是做任何事情的最简单或最快的方法,当然也不会教人们如何解决问题。在这种情况下,他需要做的就是撤消他采取的操作,这可以通过将文件系统挂载到另一个环境中轻松完成,例如 LiveCD 或您建议的救援模式(依赖于发行版)。 (8认同)
  • @Caleb `chown` 重置 setxid 位。`/usr` 中有一些文件不属于根目录;更多属于不同组的(尤其是 `/usr/bin` 中的 setgid 程序)。 (6认同)
  • @Caleb 并非 /usr 中的所有内容都应该是 root:root。 (2认同)