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:通过恢复模式(单用户模式)
- 重启系统,在 GRUB 启动菜单选择 Advanced options → Recovery mode → root 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 是否正常工作
常见问题解决
-
如果
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
-
修复后仍报错:
- 检查文件系统错误(恢复模式下运行
fsck /dev/sda1)。 - 确保 SELinux 未拦截(临时禁用:
setenforce 0)。
- 检查文件系统错误(恢复模式下运行
原因说明
- setuid 位(
chmod 4xxx):允许普通用户以文件所有者(root)身份执行sudo。 - 所有权错误:
/usr/bin/sudo必须属于root:root(uid 0)。
完成上述步骤后,sudo 命令即可恢复正常使用。
本文来自博客园,作者:闹闹爸爸,转载请注明原文链接:https://www.cnblogs.com/wanglouxiaozi/p/18924012

浙公网安备 33010602011771号