问题描述
我已经做到了:
sudo chown -R myname /usr/
现在由于这个错误,我无法使用sudo
命令:
sudo: must be setuid root
正如我所读,这意味着该文件/usr/bin/sudo
的所有者不是根目录。现在是我的用户了,因为/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上的Paralells下。
最佳回答
如果您有一个类似的系统可以用作指南,以查看所有文件的正确所有权是什么,那么您可以启动到救援模式,放到root shell,然后手动将正确的所有权恢复到所有文件。 /usr
中的文件。
最快的方法可能是重新安装操作系统或从备份还原。
在Ubuntu或类似版本中,默认情况下没有root密码(该帐户已禁用),这就是为什么您不能su
的原因。
次佳回答
由于您已经获得了授予根级访问权限的唯一权限,因此您将需要当前软件环境之外的一些帮助来解决此问题。
我建议最简单的方法是使用发行版的chmod
为您的发行版启动LiveCD,安装驱动器并更改文件权限。
您也可以尝试启动到single-user模式以获取根shell。
请注意,通常,/usr/
目录中的所有内容都应为root
所拥有,因此您应该能够执行递归chown
来修复发生的任何故障。 (编辑:显然,每个@Gilles注释在运行chown
时都会破坏setuid和setgid位,因此一旦再次修复所有权,您将需要与现有系统进行手动比较以还原所有这些。)
但是,非常少的应该是4111
。额外的权限是一种特殊权限,但是即使以用户身份运行,它也可以以root用户身份执行!仅sudo
和少数几个命令应设置此权限位。如果您最初没有运行chmod
,则可能根本不需要修复此问题,那么所有权限都应该已经正确。在不知道所有权限应该是什么的情况下,请勿运行大型chmod
操作。
第三种回答
在Ubuntu恢复模式下,输入以下命令。这已解决了我的问题。
mount -o remount,rw /
mount --all
chown root:root /usr/bin/sudo
chmod 4755 /usr/bin/sudo
restart
希望这能解决您的问题。(或其他人的)
我在此blog post中找到了这个。