误修改/etc/sudoers文件丢失sudo权限且root账户禁用的修复求助(Ubuntu 22.04)
误修改/etc/sudoers文件丢失sudo权限且root账户禁用的修复求助(Ubuntu 22.04)
问题描述
我刚才排查其他用户sudo权限问题的时候,不小心把/etc/sudoers里的%sudo ALL=(ALL:ALL) ALL这行的%给删掉了,结果现在自己完全失去sudo权限了!
执行sudo命令时会弹出:
"xxxx is not in the sudoers file. This incident will be reported."
尝试用su切换到root账户时,又提示:
"su: Authentication failure"
查了资料后知道这是因为Ubuntu默认禁用了root账户导致的。我还试过用pkexec visudo来修复,结果报错:
"Error executing command as another user: Not authorized"
之前搜过修改无效sudoers文件的相关方案,但都没解决我的问题,有没有大佬能给我出出主意?我用的是Ubuntu 22.04,万分感谢!
可行修复方案
针对Ubuntu 22.04的情况,推荐两种可靠的修复方式:
方案一:通过单用户恢复模式修复
这是最便捷的方式,不需要额外介质:
- 重启系统,在GRUB启动菜单(如果没显示,重启时按住Shift键)选择「Ubuntu 高级选项」,再选「recovery mode」进入恢复模式。
- 在恢复菜单中选择「root」选项,进入root权限的命令行(此时系统分区是只读状态)。
- 先将系统分区挂载为可读写:
mount -o remount,rw / - 用
visudo编辑sudoers文件(这个命令会自动检查语法,避免出错):visudo - 找到你修改的那一行,把
%加回去,恢复成%sudo ALL=(ALL:ALL) ALL,按Ctrl+O保存,回车确认,再按Ctrl+X退出。 - 最后重启系统:
reboot
方案二:通过Live USB/CD修复
如果单用户模式无法进入,可以用Ubuntu安装介质来修复:
- 制作Ubuntu 22.04的Live USB,插入后从USB启动,选择「Try Ubuntu」进入试用模式。
- 打开终端,用
lsblk命令查看你的系统分区(通常是/dev/sda1或者/dev/nvme0n1p2这类,根据容量判断)。 - 将系统分区挂载到
/mnt目录:sudo mount /dev/你的系统分区路径 /mnt - 挂载必要的系统目录,确保chroot环境正常:
sudo mount --bind /dev /mnt/dev sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys - 切换到系统的根环境:
sudo chroot /mnt - 现在用
visudo编辑sudoers文件,恢复%sudo ALL=(ALL:ALL) ALL这一行,保存退出。 - 退出chroot并重启系统:
exit sudo reboot
备注:内容来源于stack exchange,提问作者physicist
相关产品推荐
相关产品推荐

