我已经这样做了:
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
这比人们做的要简单。请尝试以下操作:
- 不要尝试使用损坏的命令以 root 身份登录
su
,而是以当前用户身份注销并通过正常的显示管理器(即登录屏幕)再次以 root 身份登录。 - 在终端执行以下命令:
chown root:root /usr/bin/sudo && chmod 4755 /usr/bin/sudo
这应该可以修复sudo
命令并让您立即重新启动并运行。