chroot : sudo: /usr/bin/sudo 必须由 uid 0 拥有,并且设置了 setuid 位

chroot : sudo: /usr/bin/sudo 必须由 uid 0 拥有,并且设置了 setuid 位

sudo:/usr/bin/sudo 必须由 uid 0 拥有,并设置 setuid 位,因为我尝试授予 chroot 用户 sudo 权限,所以我有这个。

我运行的命令:

chown root:root /usr/bin/sudo

chmod 4755 /usr/bin/sudo

此后我收到了错误。

我想在我的 chroot 环境中执行它,但我写得太快了,没有意识到

我尝试使用 pkexec 解决问题,但它无法连接我的密码。

在 /bin 中: -rwxr-xr-x 1 root root 166056 Jan 19 14:21 sudo

在/usr/bin中: -rwxr-xr-x 1 root root 166056 Jan 19 14:21 sudo

我真的不明白发生了什么

答案1

您以某种方式从中删除了 setuid 位sudo。文件的权限-rwxr-xr-x应该是-rwsr-xr-x

我不太清楚您是如何做到这一点的,因为当我尝试运行您运行的两个命令时(当然不是在/usr/bin/sudo而是在副本上,出于安全原因),它们没有删除 setuid 位(假设您以 root 身份运行它们,因为如果您没有以 root 身份运行它们,它们应该会失败并且不执行任何操作)。也许您输入的是chmod 0755而不是chmod 4755?

无论如何,我知道您现在失去了访问权限sudo,无法以 root 身份执行任何操作。您必须从 Ubuntu 安装介质上的实时系统启动,挂载主系统分区并执行以下操作:

sudo chmod u+s /mountpoint/of/your/partition/usr/bin/sudo

当然,其中/mountpoint/of/your/partition需要替换为您安装分区的实际挂载点。

答案2

阅读man 2 chown。即使您 ,您也sudo chown ...清除了S_ISUID和模式位。这是自 Linux 2.2.13 以来的行为。S_ISGIDroot

当您尝试时sudo chmod ...sudo不是SETUID。

要修复此错误,请切换到root另一个窗口中运行的 shell(什么,您省略了这个初步准备?在使用身份验证/授权工具时,这是强制性的),或者从 Live CD/USB 启动并从那里修复它。

相关内容