CentOS云服务器根目录设置成777权限怎么办?
问题描述
执行chmod -R 777 / 导致CentOS云服务器根目录权限设置成777,系统中的大部分服务以及命令无法使用。此时可通过系统自带的getfacl命令来拷贝和还原系统权限,本节操作介绍误操作导致根目录设置成777权限的补救措施。
对文件或目录设置777权限代表它将对所有用户都是可读、可写和可执行的,根目录设置777权限后存在安全风险。本节操作是临时的补救措施,恢复目录权限后,建议您备份数据,重装操作系统,避免777权限后续带来的安全风险问题。
操作步骤
本节操作使用CentOS7.5操作系统云服务器测试验证。
- 设置了777权限后请勿关闭或重启云服务器,在故障云服务器执行以下命令,修改ssh连接相关文件的权限。
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
- 执行完上述命令后ssh可以连接但无法使用root。
root "su: cannot set groups:"
执行以下命令,su必须有s权限才能读取root的相关配置。
chmod u+s 'which su'
完成之后就可以用root权限进入系统了。
- 创建一台权限正常的临时云服务器:Linux操作系统,内核版本与故障云服务器相同。
- 在临时云服务器上执行以下命令,将这个正常系统的/目录下所有文件的权限都备份保存在 systemp.bak 中。
getfacl -R / >systemp.bak
- 使用scp命令将正常的备份文件传至故障云服务器中。
- 您可以在临时云服务器上执行以下命令,上传systemp.bak文件到故障云服务器。
scp systemp.bak文件地址 用户名@弹性公网IP:故障云服务器文件地址
例如:scp /systemp.bak root@119.**.**.**:/121.**.**.**
- 或在故障云服务器上执行以下命令,从临时云服务器上下载systemp.bak文件到故障云服务器。
scp 用户名@弹性公网IP:临时云服务器systemp.bak文件地址 故障云服务器文件地址
例如:scp root@121.**.**.**:/systemp.bak /
- 您可以在临时云服务器上执行以下命令,上传systemp.bak文件到故障云服务器。
- 在故障云服务器中执行以下命令将现在的系统权限恢复成和正常系统一样。
setfacl --restore=systemp.bak
- 重启系统之前新建脚本,避免ssh连接失败。
cat sshtmp.sh #----------start---------- sleep 300 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 u+s `which su` #-----------------end---------
- 执行以下命令添加到Linux启动脚本rc.local中。
- 执行以下命令重启操作系统。
重启后云服务器恢复正常,结束sshtmp.sh进程,恢复rc.local,删除sshtmp.sh,重新查看系统权限是否恢复正常。
后续操作
对文件或目录设置777权限代表它将对所有用户都是可读、可写和可执行的,根目录设置777权限后存在安全风险。
本节操作是临时的补救措施,恢复目录权限后,建议您备份数据,重装操作系统,避免777权限后续带来的安全风险问题。