第一阶段,修复SSH(如果ssh没有断开,或者vnc可以登录的话无需挂载直接修复权限即可)

误操作之后,系统已经登陆不进去,这个时候需要挂盘进去检查问题,挂盘后,可执行以下操作来修复ssh以及系统登陆的问题

先挂盘,然后chroot一下,或者进入对应的目录

cd /etc
     chmod 644 passwd group shadow 
     chmod 400 gshadow 
     cd ssh
     chmod  600  moduli  ssh_host_dsa_key ssh_host_key ssh_host_rsa_key 
     chmod  644 ssh_config ssh_host_dsa_key.pub ssh_host_key.pub ssh_host_rsa_key.pub
     chmod  640 sshd_config

    chmod 600 /etc/sscuretty

    chmod 711 /var/empty/sshd

     chmod u+s `which su`(这一步一般不用执行,可用在ubuntu的修复中)

修复完毕后卸载重启即可使用ssh以及管理终端进行登陆

第二阶段,恢复误操作前的系统权限

需要先找一台没问题的,内核版本差异不大的机器,获取该机器的权限(业务不一样的话,对应的业务适用的文件权限不会覆盖,需要手动去设置)

执行

getfacl -R / > ./linux.chmod.bak

得到正确的权限,copy到有问题的系统里面

执行

cd /
setfacl --restore=/root/linux.chmod.bak 

然后重启机器即可替换成原来的权限

目前仅在centos 6.5下进行了测试,验证通过。

原文链接