记录一次错误的使用chmod修改了linux内核权限导致无法登陆

记录一次因chmod命令导致系统异常登陆不上的问题排查
问题引入

 起初以为是系统没启动成功,等待几分钟后依然无法登陆系统。

ssh工具报错


VNC登陆报错


机器网络正常通讯 宝塔服务依然运行

首先第一步 进入救援系统
进入救援系统后 正常挂载原系统盘

由此可见 vdb1有100G磁盘 我们云服务器刚好购买的100G磁盘 所以只需要挂载vdb1即可

这里我把系统盘挂载到 tmp/mylinux目录里
如需访问查看原系统内的文件 路径就是 /tmp/mylinux/www/wwwroot/

由于我们密码登录不上 所以先按照惯例检查shadow文件

执行命令ls -l /tmp/mylinux/etc/shadow 

此时系统返回权限为 rwxrwxrwx 也就是777权限 
正常情况该文件权限为-rw-------  也是600权限
所以密码文件被动过(可能是自己无意间 也可能是被黑)
 
下面执行修复过程
首先进入到系统里 
chroot /tmp/mylinux
然后修复关键文件权限
由于不知道具体要修复什么文件 先把文件权限恢复为默认

rpm --setperms -a (要跑大概1分钟)
rpm --setugids -a(要跑大概1分钟)

分别等待命令跑完 退出救援系统登陆即可


----------------------------------------------------------------------------------------------------------------------------
这里提示一下 我测试的机器由于给全目录777 导致sshd不正常 状态为  ping通  vnc可以登陆 ssh不能登陆

vnc登陆查看sshd状态报错 如下


sshd 服务启动失败,是因为 SSH 主机私钥文件权限太开放(被 chmod -R 777 /etc 改成了 777/666 这类权限),OpenSSH 出于安全考虑,拒绝加载不安全的私钥,直接退出了。
再执行下面的命令修复一下即可

# 修复所有 SSH 主机私钥权限(必须 600,仅 root 可读写)
chmod 600 /etc/ssh/ssh_host_*_key

# 修复公钥权限(必须 644,所有人可读)
chmod 644 /etc/ssh/ssh_host_*_key.pub

# 修复 sshd 主配置文件权限
chmod 600 /etc/ssh/sshd_config

# 修复 /etc/ssh 目录本身权限
chmod 755 /etc/ssh

# 重启 sshd 服务
systemctl restart sshd

# 验证服务状态
systemctl status sshd

相关阅读

全天候售后服务 7x24小时专业工程师品质服务
极速服务应答 秒级应答为业务保驾护航
客户价值为先 从服务价值到创造客户价值
全方位安全保障 打造一朵“透明可信”的云