我已经运行过这个:
sudo chmod -R 755 /usr/bin/
此后,每次我使用 sudo 时都会出现此问题:
sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set
我使用 Fedora 37。有人知道如何正确解决这个问题吗?
答案1
首先,找到另一种方法来成为 root。 这两种方法都machinectl shell
应该systemd-run --shell
有效,因为它们不依赖于 setuid 二进制文件(至少不在 /usr/bin 中)。
如果没有任何效果,请重新启动进入救援模式(rescue
在启动菜单中添加到内核命令行);由于一切开始都以 root 身份启动,因此不需要 sudo。
作为初步修复,使用chmod u+s
(或chmod 4755
) 手动将 /usr/bin/sudo 标记为“setuid”(并且以防万一在 /usr/bin/su 上执行相同操作)。
为了彻底修复,最好使用包管理器(rpm+dnf)查找并重新安装所有受影响的包,因为 /usr/bin 中还有不少其他程序丢失了“setuid”和/或“setgid”权限位。
用于
rpm -Va
验证哪些其他文件不再与最初从包中安装的文件匹配(可能rpm -Va | grep /usr/bin
和也许| awk '$1 ~ /[MUGP]/'
)。用于
rpm -q --whatprovides /usr/bin/whatever
找出每个文件属于哪个包。用于
dnf reinstall whatever
重新安装软件包。
最后,查看文件并验证它们是否具有正确的权限 - 如果您ls -l
在 /usr/bin/sudo 上看到“rws”而不是“rwx”;如果您使用stat
八进制检查相同的模式,您应该看到 04755(或 02755)而不是 0755。
答案2
由于我没有 root 密码,因此我无法使用“su”命令成为 root 用户,但是我使用此命令成为 root 用户:systemd-run --shell
之后:
chown root:root /usr/bin/sudo && chmod 4755 /usr/bin/sudo
我的问题解决了。