zoukankan      html  css  js  c++  java
  • 如何在Linux系统中检查文件的权限是否小于一个值

      我编写了一个Shell函数,使用这个函数需要传两个参数:文件绝对路径和一个三位整数。通过这个函数可以检查文件权限是否小于等于你给定的值。

    submod(){
        export filepath=$1
        export maxmod=$2
        realmod=`ls -la $filepath|awk '{print $1}'`
        chnum=`echo $realmod|sed y/rwx-/4210/`
        export user=0
        export group=0
        export other=0
        for(( u=2;u<=4;u++ ))
        do
            numu=`echo $chnum|cut -c $u`
            user=`expr $user + $numu`
        done
        for(( g=5;g<=7;g++ ))
        do
            numg=`echo $chnum|cut -c $g`
            group=`expr $group + $numg`
        done
        for(( o=8;o<=10;o++))
        do
            numo=`echo $chnum|cut -c $o`
            other=`expr $other + $numo`
        done
        modnum="$user""$group""$other"
        if [ $modnum -gt $maxmod ]
        then
            echo "Error,file's authority is beyond limit!"
        else
            echo "Checking Passed"
        fi
    }

      使用该函数的格式:submod 文件绝对路径 三位整数。比如:

    submod /etc/passwd 755
    submod /bin/temp 100

      原理:使用函数传入的绝对路径和三位整数分别会被变量filepath和maxmod接收,ls命令查看filepath的文件信息,再以空格为分隔符找到第一条信息,即权限(类似于-rw-r--r--的形式)将这条权限用变量realmod接收。然后将权限中的r、w、x、-、分别替换成4、2、1、0(变成了类似0420400400的形式)。最后从第二位开始每三个加起来分别对应拥有者、同组用户、其他用户的权限(类似4+2+0、4+0+0、4+0+0)。将三组计算结果拼接成三位数(644)。将最后将转化的三位数与实际要求的三位数比较。实际>要求则输出error,反之通过。

  • 相关阅读:
    Helpers Overview
    Validation
    Support Facades
    Session Store
    位运算(参考百科)
    开源项目_可能使用到的开源项目集合
    秒杀系统架构分析与实战(转)
    shell命令之根据字符串查询文件对应行记录
    MySQL做为手动开启事务用法
    spring 加载bean过程源码简易解剖(转载)
  • 原文地址:https://www.cnblogs.com/Nonstopcoding/p/11068443.html
Copyright © 2011-2022 走看看