如何恢复linux系统根分区文件权限

如何恢复linux系统根分区文件权限,第1张

linux系统如果执行了chmod -R 777 / 后,系统等于瘫痪。

因为su,mount等需要s权限(4755)的命令无法使用,ssh的key和一些ssh相关的系统文件夹不能是777权限。那么,如果使用root用户改了错误的权限后,怎么恢复呢?

思路是这样的:通过装一个相同的新系统,把系统文件的权限导出,再导入损坏系统。

我就碰到过一次这样的情况,系统管理员误 *** 作,改变了大部分的系统文件权限,现在把解决过程记录如下。

1、尝试使用getfacl导出新系统的文件权限,再setfacl导入损坏系统;结果失败。

这样看似简单可行,但是getfacl不会导出文件的Special Permissions权限。无法正确恢复su等命令的权限。

关于Special Permissions可以看之前的文章:linux常用+经典命令:Special Permissions设置部分

2、写个程序导出新系统文件权限再写个shell导入损坏系统。

以下c程序make之后可以生成.out的可执行文件,使用filename.out /bin >>pe.txt 导出/bin目录下的文件权限到pe.txt文件。

#include

#include

int list(const char *name, const struct stat *status, int type)

{

if(type == FTW_NS)

return 0

printf(“\”%s\” 0%3o\n”, name, status->st_mode &07777)

return 0

}

int main(int argc, char *argv[])

{

if(argc == 1)

ftw(“.”, list, 1)

else

ftw(argv[1], list, 2)

exit(0)

}

将pe拷贝到损坏系统,使用如下脚本执行之:filename.sh pe.txt

view plaincopy to clipboardprint?

#!/bin/sh

if [ $# != 1 ]

then

echo Usage : $0 \

exit

fi

PERMFILE=$1

cat $PERMFILE | while read LINE

do

FILE=`echo $LINE | awk '{print $1}'`

PERM=`echo $LINE | awk '{print $2}'`

chmod $PERM $FILE

#echo "chmod $PERM $FILE"

done

echo "change perm finished! "

自己安装的软件的权限仍然是777,可以手动改回来或者重新安装。

++++++++++++++++++++++++++++++++++++++++++++++++++

http://blog.sina.com.cn/s/blog_764cc7ef0100szui.html

*** 作系统 RHEL5

如果你在linux上执行了如下 *** 作

chmod -R 777 / 或者 chmod -R 700 /

那么恭喜你,你的系统即将崩溃,重启之后,你进不了图形界面,而且很多服务都起不来

为什么呢?

因为linux中,系统的有些文件和目录权限都是严格要求的,比如说/tmp和/root里的一些重要文件的权限都是至关重要的

一旦文件权限受到破坏,会直接影响系统的正常启动及使用。

那么我们碰到这种情况怎么办呢?

1、手动的将各个文件的权限进行对照还原(假如你很有时间的话)

2、找到一台环境相同的linux机器(最好干净一些),并进行下面 *** 作

1>getfacl -R / >systemP.bak 将这个系统中的 / ,以及 / 底下所有的文件及目录权限导出到一个文件中

2>将systemP.bak文件想办法拷贝到被破坏的机器上

并执行setfacl --restore=systemP.bak

3>重启系统

4>将 passwd命令和 su命令的权限进行手动恢复

chmod u+s `which passwd`

chmod u+s `which su`

看看是不是完活了

注:可能不能完全还原,但起码可以进入一个较为完整的图形界面 *** 作,其他的报错应该就可以在这个基础上进行解决了,比如有些服务。这里就不多讲了。

通过 getfacl -R / >systemp.bak备份文件的权限,其中“/”是你要备份的文件目录即在“/”下得文件都将备份systemp.bak为你要备份到的地方

通过 setfacl --restore=systemp.bak实现文件权限的恢复

linux有三个修改权限的命令      ,   xxx-xxx-xxx     读权限4    写权限2  执行权限1

例如777表示可读可写可执行,     前三个为主用户的权限 ,中间三个为用户组的权限,后三个为其他用户的权限

chmod 修改文件读写执行权限    chmod 三位数(777) 文件或目录名

chown 修改主用户权限    chown 用户名 文件或目录名

chgrp 修改用户组权限     chgrp  用户组名  文件或目录名


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8959177.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-23
下一篇 2023-04-23

发表评论

登录后才能评论

评论列表(0条)

保存