我希望确保/etc/file 1和/etc/file 2的允许值不超过644。我已尝试
if [[ `stat /etc/file1 --format=%a | cut -b 1` -le "6" -a `stat /etc/file2 --format=%a|cut -b 1` -le 6 ]]; then echo "good"; else echo "bad"; fi;
但我得到了“猛击:条件表达式bash中语法错误:'-a'“附近有语法错误
我的计划是重复三次(权限的每个字节一次)。
我也不确定这两个测试是否工作正常,因为我不能让它们在测试之外运行。
5条答案
按热度按时间cbjzeqam1#
我假设“更高权限”是指file1或file2具有的任何高于或超过644的额外权限。
以下是一些例子:
这基本上意味着,与644相比,file1或file2中至少设置了一个额外的位。因此,如果对644和file1权限进行AND运算,则结果是这两个权限共有的位。
假设file1是640。644 AND 640将得到640。因为结果与file1的权限相同,所以您知道file1的权限至少是644的子集。
假设file2是700。644 AND 700将得到600。600与700不相同,因此file2中一定设置了644没有的位(即不同的权限)。
dohp0rv52#
假设“比666更允许”的意思是“设置了执行位”,那么我认为
做你想做的事。
扩展到
644
权限会使find命令类似于:我想是的。
我觉得可能有一个聪明的方法来从所需的权限到查找模式,但我必须给予更多的思考。
66bbxpm53#
您可以用更简单的方法来执行此操作:
最大权限=“666”
哎呀,第二刀:
hmmo2u0o4#
你可以一点一点地比较:
或者
dffbzjpn5#
如果您需要“比644更允许”,则实际上您搜索1338中是否有 any 位(即:6448 XOR 7778)的值。
然后,根据
man find
:这样就可以了
或者更确切地说,是关于您的特定需求: