CentOS7 所有文件被赋予777权限故障恢复
Posted 再见小罗
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS7 所有文件被赋予777权限故障恢复相关的知识,希望对你有一定的参考价值。
在Linux系统中,/是文件树的最高一级,所有文件都在/之下。文件的路径分为相对路径和绝对路径,假如file文件存放在/tmp目录,那么/tmp/file就是file文件的绝对路径,在任意位置都可以对绝对路径/tmp/file就行操作。假如当前处于/tmp目录,可以把/tmp/file简写成./file进行操作,点号“.”代表的是当前目录,./file就是相对路径。
普通文件一般使用3组字符串来表示系统用户对文件的操作权限,每组有3个字符。3组字符串从左到右分别表示文件所有者、文件所属组用户、其他组用户对该文件的操作权限。读写执行权限在chmod命令修改权限的时候可用数字421来代替。假如给每组用户都具有读写执行权限的话可以执行chmod 777 file来设置。如果是当前目录下所有的文件chmod 777 -R ./* ,R的作用是递归,那么当前目录下所有的文件都被赋予777权限了。对于系统权限不是很了解的人会认为777已经是最高权限了,其实不然。举个例子,/usr/bin/su权限为4755,最前面的这个4表示其他用户执行文件时,具有与所有者相当的权限。当普通用户执行su命令时需要访问root用户才能访问的权限,但是su被修改为777之后,普通用户执行su命令就无法访问只有root才有权限访问的文件,所以su - root就会失败,无法正常切换。
如果当前处于/tmp路径,原计划修改/tmp下所有的文件权限为777,命令为chmod -R 777 ./*,结果误操作执行chmod 777 -R /*,/前面的.上文已经介绍,写与不写结果完全不同。chmod 777 -R /*命令执行后会刷很多权限不足的报错,意识到不对劲的时候应该快速执行Ctrl+c中断该命令。如果没有发现那么命令执行完成后几乎所有的文件权限变成777了。
此时网络还可以ping通,但是新的ssh连接将会失败。通过显示器登录的话只能登录普通用户,普通用户登录后su切换root失败无法进行一些恢复操作。
恢复方案:
1.在同版本正常的系统上备份相关目录文件权限并保存在对应的文件;
getfacl -p -R /usr/ >/tmp/usr.txt
getfacl -p -R /boot/ >/tmp/boot.txt
getfacl -p -R /etc/ >/tmp/etc.txt
getfacl -p -R /home/ >/tmp/home.txt
getfacl -p -R /root/ >/tmp/root.txt
getfacl -p -R /var/ >/tmp/var.txt
getfacl -p -R /opt/ >/tmp/opt.txt
getfacl -p -R /sys/ >/tmp/sys.txt
2.进入单用户模式下进行恢复ssh服务和su命令,给root登录恢复做铺垫;
重启主机在该界面出现时按字母e进行编辑
光标向下移动,修改ro为rw,行尾增加init=/bin/sh
执行Ctrl+x进入单用户
3.恢复/usr/bin/su权限为4755;
4.从单用户模式切换到多用户模式并切换root用户;
exec /sbin/init
5.恢复ssh远程登录权限;
6.上传步骤1备份的txt文件至本机/tmp目录;
7.文件权限恢复;
setfacl 命令需要在/目录下执行,cd /在执行以下命令进行恢复
setfacl --restore=/tmp/boot.txt
setfacl --restore=/tmp/etc.txt
setfacl --restore=/tmp/home.txt
setfacl --restore=/tmp/opt.txt
setfacl --restore=/tmp/usr.txt
setfacl --restore=/tmp/sys.txt
setfacl --restore=/tmp/var.txt
setfacl --restore=/tmp/root.txt
8.确认恢复后的权限;
两套系统的文件不可能完全一致,只能恢复备份主机和故障主机文件名相同的文件权限。
以上是关于CentOS7 所有文件被赋予777权限故障恢复的主要内容,如果未能解决你的问题,请参考以下文章