昨天手贱,执行命令的时候输错了,结果输入了以下命令:

chmod -Rf 777 /

可想而知,得到的回报惊人哈哈,我现在之所以还笑的出来,是因为折腾了半天已经修复了这个问题了。

先来复盘一下问题解决的过程吧

错误原因

失误导致的,本来想输入 chmod -Rf 777 ./ 结果打完了没好好确认,眼睁睁的执行了 chmod -Rf 777 /。这个命令的威力,可以说是仅次于 rm -rf /

操作完该命令后,也没太在意,就推出 root 用户了。😭

犯错后果

执行完 chmod -Rf 777 / 后,有两种可能的场景。

  • 如果没有退出 root 用户,那么在当前 root 下,继续执行一系列恢复权限的操作,该问题就能轻松解决了,具体参考解决办法最后执行的几个命令。
  • 如果已经推出了 root 用户,那么会出现 “非 root 用户失去 sudo 权限” 报错:sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set,“root 用户/非 root 用户均无法再登陆系统” 等一系列问题。直接导致系统不可用,解决办法参考下面章节,需要进入 recovery mode 进行权限修复。

解决步骤

首先,重启电脑,连续点按 ESC 进入系统选择菜单:
在这里插入图片描述
按照下图选择 recovery mode:
在这里插入图片描述
在下面的图片中,选择 root 一行,回车进入:
在这里插入图片描述
此处,输入 root 用户密码,登陆系统:
在这里插入图片描述
下图可以看到,已经正常登陆到系统中了,此时我们执行一下权限变更命令,当然这个命令执行并不会将权限恢复到原来,后面系统可以登录后,遇到问题可以再慢慢的恢复:
在这里插入图片描述
执行的命令如下:

chmod -Rf 755 /
chmod -Rf 777 /tmp
chmod -Rf 700 /root
chmod -Rf 555 /sys

此时,再重启系统,就可以使用 root 用户进行登陆了,权限打开可以登陆系统,可以松一口气了。

如果有远程需求(ssh)该如何修复访问?

如果你有一些远程登录的需求,比如需要通过 ssh 远程连接(一些堡垒机通过 ssh 协议登陆),就需要单独针对性修改 ssh 文件夹的权限。操作步骤分两步,这里简要介绍一下:

  • 首先使用 root 用户登陆到系统中,查看 sshd 服务状态,例如在 ubuntu 系统中,执行 service sshd.service status 此时,通常可以看到 sshd 服务已经异常了,报错信息显示的就是密钥文件权限问题;
  • 然后我们可以打开一个类似的 linux 系统,查看其 /etc/ssh 文件夹下的所有文件权限,并在损坏的系统上一一修复即可。

非 root 用户 sudo 权限失效如何解决?

该问题出现的表现为出现如下报错:

sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set

解决办法操作步骤如下:

# 登陆 root 用户,执行如下命令
chown root:root /usr/bin/sudo
chmod 4755 /usr/bin/sudo

通常情况下,执行完成后 sudo 问题解决,可以登陆 sudo 用户执行尝试。

End~

GitHub 加速计划 / li / linux-dash
6
1
下载
A beautiful web dashboard for Linux
最近提交(Master分支:3 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐