如何正确修复

如何正确修复

我已经运行过这个:

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”权限位。

  1. 用于rpm -Va验证哪些其他文件不再与最初从包中安装的文件匹配(可能rpm -Va | grep /usr/bin和也许| awk '$1 ~ /[MUGP]/')。

  2. 用于rpm -q --whatprovides /usr/bin/whatever找出每个文件属于哪个包。

  3. 用于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我的问题解决了。

相关内容