背景信息:
误操作将根目录777之后的恢复方法
第一阶段,修复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下进行了测试,验证通过,有问题随时交流~