You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

误执行递归修改权限命令后修复Ubuntu系统文件权限的紧急求助

误执行递归修改权限命令后修复Ubuntu系统文件权限的紧急求助

别慌,这种踩坑的情况我见过不少,咱们一步步来救系统!你现在的核心问题是没法获取root权限来修正错误的属主,下面两种方法都能帮你拿到root权限,先看你能操作哪种:

方法一:通过单用户模式获取root权限(适合能物理接触机器的情况)

  1. 重启你的机器,在GRUB启动菜单出现时(如果平时看不到,重启时按住Shift键不放),选中当前使用的Ubuntu内核选项,按e进入编辑模式。
  2. 找到以linux开头的那一行,把里面的ro quiet splash替换成rw init=/bin/bash,然后按Ctrl+X或者F10启动系统。
  3. 这时你会直接进入一个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
      
  4. 修复完这些后,执行exec /sbin/init回到正常的系统启动流程,或者直接用reboot -f强制重启机器。等系统启动后,你应该就能正常使用sudo了。

方法二:用Ubuntu Live USB/CD修复(适合远程机器或者单用户模式进不去的情况)

  1. 先制作一个Ubuntu的启动盘,把它插到你的机器上,然后从启动盘启动,选择“试用Ubuntu(Try Ubuntu)”进入桌面。
  2. 打开终端,先找到你的系统分区:输入lsblk命令,找到标注为/的分区(一般是/dev/sda1或者/dev/nvme0n1p2这类)。
  3. 创建一个挂载点并挂载你的系统分区:
    sudo mkdir /mnt/ubuntu-system
    sudo mount /dev/sda1 /mnt/ubuntu-system  # 这里替换成你找到的系统分区路径
    
  4. 接下来就可以像在单用户模式里那样修复权限了,只是所有路径要加上/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
    
  5. 修复完成后,卸载分区并重启:
    sudo umount /mnt/ubuntu-system
    reboot
    

后续说明

等你恢复sudo权限后,可能还有一些系统服务或者命令因为权限问题异常,你可以逐步排查修复。比如/etc/passwd/etc/group这些核心配置文件的属主也应该是root:root,权限644,如果有问题也可以用sudo修正。

备注:内容来源于stack exchange,提问作者Tharindu Perera

火山引擎 最新活动