必须先进入root权限环境(如recovery mode或init=/bin/bash)才能修复sudoers权限,因其默认必须为0440且属主属组均为root;若权限错误(如0644或非root所有),sudo将拒绝加载,需挂载根分区为可写后执行chmod 440 /etc/sudoers及chown root:root /etc/sudoers。

直接改回权限即可,但必须在能执行 root 权限命令的前提下操作。如果 sudo 已完全失效,常规方式进不去,得先进入有 root 权限的环境再修复。
确认问题确实是权限不对
正常情况下 /etc/sudoers 的权限必须是 0440(即 -r--r-----),所有者和所属组都必须是 root。只要出现以下任一情况,sudo 就会拒绝加载:
- 权限大于
0440(比如0644、0755或更宽松) - 所有者不是
root(如显示为user:user) - 所属组不是
root
没有 sudo 时怎么改权限
不能靠 sudo,得用其他方式获得 root shell:
-
进 Recovery Mode(推荐):重启 → GRUB 菜单按 Shift/Esc → 选 “Advanced options” → 选带
recovery mode的内核 → 进入后选root→ 执行:mount -o remount,rw /chmod 440 /etc/sudoerschown root:root /etc/sudoers -
用 init=/bin/bash(Ubuntu/Debian):GRUB 编辑启动项,在
linux行末加init=/bin/bash→ 启动后执行:mount -o remount,rw /chmod 440 /etc/sudoerschown root:root /etc/sudoers -
Live USB 修复(无 root 密码时):用 Ubuntu Live 系统启动 → 挂载原系统根分区(如
sudo mount /dev/sda2 /mnt)→ 执行:sudo chmod 440 /mnt/etc/sudoerssudo chown root:root /mnt/etc/sudoers
顺手检查 sudoers.d 目录
权限问题常不只出在主文件,/etc/sudoers.d/ 下的文件也必须满足:
- 目录权限 ≤
0755,且属主属组为root - 每个文件权限必须是
0440,属主属组为root
修复命令示例:
chmod 755 /etc/sudoers.d
chown root:root /etc/sudoers.d
chmod 440 /etc/sudoers.d/*
chown root:root /etc/sudoers.d/*
验证是否修好
改完别急着重启,先验证:
- 运行
visudo -c,输出sudoers file parsed OK才算通过 - 执行
sudo -l,看是否能列出权限(哪怕为空) - 尝试一个简单命令,如
sudo id











