有时候手贱不小心给chmod -R 777 / 了,这下系统就瘫痪了~怎么办呢?? 往下看吧
首先你必须准备一台和故障机器一样的系统,比如可以在虚拟机中安装一套一样版本的linux
在新系统中创建一个 waynerQiu.c 程序,内容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#include<stdio.h>
#include <sys/stat.h>
#include <ftw.h>
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);
}
|
然后编译该文件,并导出权限信息
1
2
3
4
|
#编译
gcc waynerQiu.c -o waynerQiu.com
#执行并导出相关目录的权限
.
/waynerQiu
.com / >> waynerQiu.txt
|
将导出的文件copy至故障机器并执行下面的脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#!/bin/sh
if
[ $
# != 1 ]
then
echo
Usage : $0 \<filename\>
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! "
|
可以将脚本保存为一个shell文件如:mygod.sh
然后执行
1
|
mygod.sh waynerQiu.txt
|
等程序跑完之后,重新启动系统,看看是不是已经恢复了?