误执行递归修改权限命令后修复Ubuntu系统文件权限的紧急求助
误执行递归修改权限命令后修复Ubuntu系统文件权限的紧急求助
别慌,这种踩坑的情况我见过不少,咱们一步步来救系统!你现在的核心问题是没法获取root权限来修正错误的属主,下面两种方法都能帮你拿到root权限,先看你能操作哪种:
方法一:通过单用户模式获取root权限(适合能物理接触机器的情况)
- 重启你的机器,在GRUB启动菜单出现时(如果平时看不到,重启时按住Shift键不放),选中当前使用的Ubuntu内核选项,按
e进入编辑模式。 - 找到以
linux开头的那一行,把里面的ro quiet splash替换成rw init=/bin/bash,然后按Ctrl+X或者F10启动系统。 - 这时你会直接进入一个root权限的bash shell,现在可以开始修复关键文件的权限了:
- 先修复sudo相关的核心文件,这是恢复sudo功能的关键:
# 修复/etc/sudoers文件的属主和权限 chown root:root /etc/sudoers chmod 440 /etc/sudoers # 修复/etc/sudoers.d目录下所有文件的属主和权限 chown -R root:root /etc/sudoers.d/ chmod -R 440 /etc/sudoers.d/ - 接着修复sudo、pkexec这些工具本身的权限:
chown root:root /usr/bin/sudo chmod 4755 /usr/bin/sudo chown root:root /usr/bin/pkexec chmod 4755 /usr/bin/pkexec - 别忘了修复root用户的主目录权限:
chown root:root /root chmod 700 /root
- 先修复sudo相关的核心文件,这是恢复sudo功能的关键:
- 修复完这些后,执行
exec /sbin/init回到正常的系统启动流程,或者直接用reboot -f强制重启机器。等系统启动后,你应该就能正常使用sudo了。
方法二:用Ubuntu Live USB/CD修复(适合远程机器或者单用户模式进不去的情况)
- 先制作一个Ubuntu的启动盘,把它插到你的机器上,然后从启动盘启动,选择“试用Ubuntu(Try Ubuntu)”进入桌面。
- 打开终端,先找到你的系统分区:输入
lsblk命令,找到标注为/的分区(一般是/dev/sda1或者/dev/nvme0n1p2这类)。 - 创建一个挂载点并挂载你的系统分区:
sudo mkdir /mnt/ubuntu-system sudo mount /dev/sda1 /mnt/ubuntu-system # 这里替换成你找到的系统分区路径 - 接下来就可以像在单用户模式里那样修复权限了,只是所有路径要加上
/mnt/ubuntu-system前缀:# 修复sudo配置文件 sudo chown root:root /mnt/ubuntu-system/etc/sudoers sudo chmod 440 /mnt/ubuntu-system/etc/sudoers sudo chown -R root:root /mnt/ubuntu-system/etc/sudoers.d/ sudo chmod -R 440 /mnt/ubuntu-system/etc/sudoers.d/ # 修复sudo和pkexec工具 sudo chown root:root /mnt/ubuntu-system/usr/bin/sudo sudo chmod 4755 /mnt/ubuntu-system/usr/bin/sudo sudo chown root:root /mnt/ubuntu-system/usr/bin/pkexec sudo chmod 4755 /mnt/ubuntu-system/usr/bin/pkexec # 修复root目录 sudo chown root:root /mnt/ubuntu-system/root sudo chmod 700 /mnt/ubuntu-system/root - 修复完成后,卸载分区并重启:
sudo umount /mnt/ubuntu-system reboot
后续说明
等你恢复sudo权限后,可能还有一些系统服务或者命令因为权限问题异常,你可以逐步排查修复。比如/etc/passwd、/etc/group这些核心配置文件的属主也应该是root:root,权限644,如果有问题也可以用sudo修正。
备注:内容来源于stack exchange,提问作者Tharindu Perera




