当前位置: 首页>>技术教程>>正文


如何在Ubuntu上找回sudo?

, , , ,

问题描述

我已经做到了:

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中找到了这个。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/8513.html,未经允许,请勿转载。