如何在 Ubuntu 上恢复 sudo?

如何在 Ubuntu 上恢复 sudo?

我已经这样做了:

sudo chown -R myname /usr/

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

sudo:必须是 setuid root

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

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

# chown root:root /usr/bin/sudo
# chmod 4111 /usr/bin/sudo

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

$ su
Password:
su: Authentication failure

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

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

答案1

由于您已经获得了唯一为您提供根级别访问权限的权限,因此您将需要当前软件环境外部的一些帮助来解决此问题。

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

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

请注意,通常/usr/目录中的所有内容都应该被拥有,root因此您应该能够进行递归chown来修复您破坏的任何内容。 (编辑:根据 @Gilles 的评论,显然运行chown会破坏 setuid 和 setgid 位,所以你将要需要手动与现有系统进行比较,以便在再次修复所有权后恢复所有这些。)

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

答案2

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

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

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

答案3

在 Ubuntu 恢复模式下,输入以下命令。这解决了我的问题。

mount -o remount,rw /
mount --all
chown root:root /usr/bin/sudo
chmod 4755 /usr/bin/sudo
restart

希望这能解决您的问题。(或其他人的)

我在这里找到了这个博客文章

答案4

这比人们做的要简单。请尝试以下操作:

  1. 不要尝试使用损坏的命令以 root 身份登录su,而是以当前用户身份注销并通过正常的显示管理器(即登录屏幕)再次以 root 身份登录。
  2. 在终端执行以下命令:chown root:root /usr/bin/sudo && chmod 4755 /usr/bin/sudo

这应该可以修复sudo命令并让您立即重新启动并运行。

相关内容