sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set

要解决执行 sudo su - 时出现的错误 sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set,需要修复 /usr/bin/sudo 文件的所有权和权限。以下是详细步骤:


步骤 1:以 root 身份登录(使用其他方法)

由于 sudo 已损坏,需通过其他方式获取 root 权限:

  • 方法 1:使用 su 直接切换(需知道 root 密码)

    su -
    # 输入 root 密码
    
  • 方法 2:通过恢复模式(单用户模式)

    1. 重启系统,在 GRUB 启动菜单选择 Advanced optionsRecovery moderoot shell

步骤 2:修复 /usr/bin/sudo 的所有权和权限

以 root 身份执行以下命令:

# 确保文件所有者是 root
chown root:root /usr/bin/sudo

# 设置正确的权限(包括 setuid 位)
chmod 4755 /usr/bin/sudo

步骤 3:验证修复结果

ls -l /usr/bin/sudo

正确输出应类似:
-rwsr-xr-x 1 root root ...
(注意权限中的 s,表示 setuid 位已设置)


步骤 4:测试 sudo

exit  # 退出 root 回到普通用户
sudo -v  # 测试 sudo 是否正常工作

常见问题解决

  1. 如果 su - 也无法使用(无 root 密码)

    • 重启进入 恢复模式root shell(无需密码)。
    • 或使用 Live USB 挂载原系统分区修复:
      # 假设原系统根分区为 /dev/sda1
      mount /dev/sda1 /mnt
      chroot /mnt
      chown root:root /usr/bin/sudo
      chmod 4755 /usr/bin/sudo
      exit
      reboot
      
  2. 修复后仍报错

    • 检查文件系统错误(恢复模式下运行 fsck /dev/sda1)。
    • 确保 SELinux 未拦截(临时禁用:setenforce 0)。

原因说明

  • setuid 位chmod 4xxx):允许普通用户以文件所有者(root)身份执行 sudo
  • 所有权错误/usr/bin/sudo 必须属于 root:root(uid 0)。

完成上述步骤后,sudo 命令即可恢复正常使用。

posted @ 2025-06-11 15:14  闹闹爸爸  阅读(447)  评论(0)    收藏  举报