ubuntu不小心使用sudo chmod -R 777 / 修改根目录权限问题修复

不小心使用sudo chmod -R 777 / 修改根目录权限,导致如下问题:

  • sudo不可用,很多权限验证无法使用
  • 没有wifi列表
  • cups进程(主要是服务于打印机)占用100%cpu,不停往/var/log/error_log里写,不断吞噬存储空间
  • 中文输入法失效
    方法:修复根目录下文件的权限 这中间有一些坑,需要注意。
    由于刚开始并不知道是修改了权限的问题,所以开始主要解决sudo不可用的问题。解决sudo不可用的问题对之后解决整个问题也是必须的。
    解决sudo不可用的问题:修改/usr/bin/sudo归属和权限
    - chown root:root /usr/bin/sudo
    - chmod 4755 /usr/bin/sudo
    但是这两条命令都需要root权限,由于我没有root用户,所以就只能通过进入recovery模式获得root权限,具体的方法可以百度得到:修改/usr/bin/sudo归属和权限
    经验教训:一定要设置一个root用户,以防不知之需。
    接下来就是修复根目录下文件的权限:可以参见这个
    ubuntu 有两个命令可以实现:getfacl、setfacl
    在一台相同系统和相同版本的内核的ubuntu系统上使用:getfacl -R / > ./systemp.bak
    将systemp.bak 文件拷贝到待修复的电脑上,在根目录下执行
### 修复 Linux 系统中 `/etc/sudo.conf` 和 `/etc/sudoers` 文件权限错误 当遇到 `sudo` 配置文件权限问题时,可以通过以下方式解决问题: #### 背景分析 在 Linux 中,`sudo` 是一个非常重要的工具,用于允许普通用户以超级用户身份执行特定命令。如果 `/etc/sudo.conf` 或 `/etc/sudoers` 文件的权限被更改,则可能导致 `sudo` 命令无法正常工作,并抛出类似以下错误消息: - `sudo: error in /etc/sudo.conf, line X while loading plugin "sudoers_policy"`[^1] - `/etc/sudo.conf is owned by uid Y, should be 0`[^3] 这些错误通常表明某些关键文件的所有权或权限设置正确。 --- #### 解决方案 ##### 方法一:使用 `pkexec` 修改文件所有权 由于 `sudo` 已经失效,可以尝试通过 `pkexec` 来恢复文件的所有权和权限。以下是具体操作步骤: 1. **修改 `/etc/sudo.conf` 的所有权** 使用以下命令将 `/etc/sudo.conf` 的所有权更改为 `root` 用户: ```bash pkexec chown root:root /etc/sudo.conf ``` 2. **修改 `/etc/sudoers` 及其子目录的所有权** 同样地,确保 `/etc/sudoers` 和 `/etc/sudoers.d` 的所有权也属于 `root` 用户: ```bash pkexec chown root:root /etc/sudoers -R pkexec chown root:root /etc/sudoers.d -R ``` 3. **验证插件文件的所有权** 对于插件文件(如 `/usr/libexec/sudo/sudoers.so`),也需要将其所有权调整回 `root` 用户: ```bash pkexec chown root:root /usr/libexec/sudo/sudoers.so ``` 4. **重新测试 `sudo` 功能** 完成上述操作后,再次尝试运行 `sudo` 命令,确认问题是否已解决。 --- ##### 方法二:进入单用户模式修复 如果系统中未安装 `policykit` 或其他依赖项导致 `pkexec` 可用,则可考虑通过单用户模式来修复文件权限。 1. **重启并进入 GRUB 菜单** 在启动过程中按下 `Shift` 键进入 GRUB 菜单,选择高级选项中的单用户模式。 2. **挂载根分区为读写模式** 进入单用户模式后,默认情况下根分区可能处于只读状态。运行以下命令切换到读写模式: ```bash mount -o remount,rw / ``` 3. **修正文件权限** 类似于方法一的操作,手动调整相关文件的所有权和权限: ```bash chown root:root /etc/sudo.conf chmod 440 /etc/sudo.conf chown root:root /etc/sudoers chmod 440 /etc/sudoers chown root:root /etc/sudoers.d -R find /etc/sudoers.d -type f -exec chmod 440 {} \; chown root:root /usr/libexec/sudo/sudoers.so chmod 644 /usr/libexec/sudo/sudoers.so ``` 4. **退出单用户模式并重启** 完成修复后,输入以下命令退出单用户模式并重启系统: ```bash exec init 3 reboot ``` --- ##### 方法三:重装 `sudo` 包 如果以上两种方法均未能解决问题,还可以尝试通过 Live CD 或网络引导的方式登录系统,并重新安装 `sudo` 包。 1. **使用 Live CD 登录** 插入 Ubuntu 或其他发行版的 Live CD 并启动至救援模式。 2. **挂载现有系统分区** 将现有的根分区挂载到临时目录下: ```bash mkdir /mnt/system mount /dev/sdXn /mnt/system ``` 3. **更新包管理器索引** 切换到目标系统的环境并更新软件源: ```bash chroot /mnt/system apt update ``` 4. **重新安装 `sudo` 包** 删除损坏的 `sudo` 包并重新安装: ```bash dpkg --purge sudo apt install sudo ``` 5. **完成清理并重启** 操作完成后退出 Chroot 环境并重启系统: ```bash exit umount /mnt/system reboot ``` --- ### 总结 通过上述三种方法之一,应能有效解决因权限问题引起的 `sudo` 命令异常情况。推荐优先尝试方法一(基于 `pkexec` 的解决方案),因为它无需额外硬件支持且实现简单快捷。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值