![chroot : sudo: /usr/bin/sudo 必须由 uid 0 拥有,并且设置了 setuid 位](https://linux22.com/image/1181135/chroot%20%3A%20sudo%3A%20%2Fusr%2Fbin%2Fsudo%20%E5%BF%85%E9%A1%BB%E7%94%B1%20uid%200%20%E6%8B%A5%E6%9C%89%EF%BC%8C%E5%B9%B6%E4%B8%94%E8%AE%BE%E7%BD%AE%E4%BA%86%20setuid%20%E4%BD%8D.png)
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_ISGID
root
当您尝试时sudo chmod ...
,sudo
不是SETUID。
要修复此错误,请切换到root
另一个窗口中运行的 shell(什么,您省略了这个初步准备?在使用身份验证/授权工具时,这是强制性的),或者从 Live CD/USB 启动并从那里修复它。