许吉友 - 运维

CentOS 7 系统权限被篡改后的恢复方法

1. 背景描述

研发人员反馈,由于系统误操作,执行了chmod -R 777 /usr,导致普通用户无法执行sudoroot用户又无法正常登陆成功。

2. 排查发现

3. 解决方法

适用于Linux系统中默认权限被篡改,如/etc/、/bin、/usr等目录被篡改。

3.1 登录单用户模式

注: OpenStack上的云主机可能添加了console=tty0 console=ttyS0,115200n8,要删除它。

3.2 恢复默认权限设置

方式一: 利用rpm包的默认权限设置来恢复

推荐\

for i in `rpm -qa`; do rpm --setperms $i; done
for i in `rpm -qa`; do rpm --setugids $i; done
chmod u+s /usr/bin/sudo

方式二:利用acl权限恢复

通过系统自带的getfacl命令来拷贝和还原系统权限,修复的方法如下:

# 通过一台权限正常的Linux(最好内核版本和故障服务器相同)来获取系统权限列表
getfacl -R / > systemp.bak
将systemp.bak拷贝至目标机
# 异常服务器中执行恢复权限命令
setfacl --restore=systemp.bak
# 重启系统
reboot