博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何在Linux系统中检查文件的权限是否小于一个值
阅读量:4971 次
发布时间:2019-06-12

本文共 1183 字,大约阅读时间需要 3 分钟。

  我编写了一个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 755submod /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,反之通过。

 

转载于:https://www.cnblogs.com/Nonstopcoding/p/11068443.html

你可能感兴趣的文章
如何判断域名是否被微信拦截 被已经被微信封了的的域名网址如何在微信中正常打开...
查看>>
分布式锁的三种实现方式
查看>>
AJAX原生JS代码
查看>>
ThinkPHP提示错误
查看>>
poj 2109 pow函数也能这么用?p的开n次方
查看>>
Oracle database link
查看>>
清北学堂2017NOIP冬令营入学测试P4749 F’s problem(f)
查看>>
POJ 1840 Eqs HASH
查看>>
python调用shell小技巧
查看>>
TL431的几种常用用法
查看>>
BZOJ 1833: [ZJOI2010]count 数字计数( dp )
查看>>
关于toString()和String()要说几句话
查看>>
bzoj 3751[NOIP2014]解方程
查看>>
CSS(二) 文字样式属性,背景和列表
查看>>
js 经典闭包题目详解
查看>>
在项目中移除CocoaPods
查看>>
面试题三 替换空格
查看>>
LeetCode104.二叉树最大深度
查看>>
linux usb驱动——Gadget代码介绍
查看>>
【洛谷】CYJian的水题大赛【第二弹】解题报告
查看>>