免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1124 | 回复: 0

chmod -R 755 后的修复 [复制链接]

论坛徽章:
0
发表于 2009-12-22 10:31 |显示全部楼层
首先是遍历文件系统的C程序a.c:
   
#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, 1);
               
exit(0);
        }

编译成a.out可执行文件,我这里不是一次遍历整个根(/)目录,因为不是所有目录的权限都需要改,比如说/proc目录、再比如为了装oracle建的/u01目录。我只扫描我认为需要修改权限的目录,如下执行:./a.out  /bin
>bin.txt … 每个目录的文件及权限保存在独立的文件中,下面是我新装as 4系统下/bin目录下的文件权限(bin.txt的部分内容):
    /bin
0755
   
/bin/traceroute6 04755
   
/bin/setserial 0755
   
/bin/rview 0755
     /bin/touch
0755
   
/bin/awk 0755
     /bin/mt
0755
   
/bin/ash 0755
     … …

然后写个更改权限的简单脚本chgperm.sh:
    #!/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
    done

    echo change perm finished!

如下执行即可:
sh
chgperm.sh  bin.txt
… …

如果系统中有getfacl 的命令的话,脚本都不用写了,直接用getfacl 获取正常系统的文件权限,到出问题的机器上用
setfacl 恢复。
在一台别的系统上
getfacl -R / > acl.bak
把acl.bak的文件copy过来
setfacl --restore acl.bak
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/88421/showart_2127676.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP