如何找到目录结构中不均匀的文件权限?

如何找到目录结构中不均匀的文件权限?

我怎样才能找到目录结构中不均匀的文件/目录权限?我已经尝试使用类似于以下的 find 命令:

find /bin ! \( -perm 777 -o -perm 776 -o -perm 775 -o -perm 774 -o -perm 773 -o -perm 772 -o -perm 771 -o -perm 770 -o -perm 760 -o -perm 750 -o -perm 740 -o -perm 730 -o -perm 720 -o -perm 710 -o -perm 700 -o -perm 600 -o -perm 500 -o -perm 400但在我能完成剩余的排列和-exec ls -lL {} \;

我也一直在做类似的手动事情:

ls -lL /bin | grep -v ^-rwxr-xr-x | grep -v ^-rwx--x--x | grep -v ^-rwsr-xr-x | grep -v ^-r-xr-xr-x | grep -v ^-rwxr-xr-t但同样,在完成剩余的排列之前,我用完了命令行。

这两种方法看起来都异常尴尬。有没有更好、更快、更简单的方法?请注意,我在使用的 shell (sh) 和平台 (Irix 6.5.22) 中受到限制。

答案1

您在寻找可执行文件吗?

find . -type f -perm /+x

无论如何, / 模式很可能是你的朋友......这是手册页:

   -perm /mode
          Any  of  the  permission  bits mode are set for the file.  Symbolic modes are accepted in this form.  You must specify `u', `g' or `o' if you use a symbolic mode.  See the
          EXAMPLES section for some illustrative examples.  If no permission bits in mode are set, this test matches any file (the idea here is to be consistent with  the  behaviour
          of -perm -000).

更新:对,我虽然你正在寻找奇数(可执行的)......

这应该可以工作(仍然使用 find 中的第三个 perm 参数

样本数据:

$ ls
000  001  002  003  004  005  006  007  010  020  030  040  050  060  070  100  200  300  400  500  600  700

查找命令:

$ find . -type f \( -perm /u-x,g+x -o -perm /u-w,g+w -o -perm /u-r,g+r -o -perm /g-x,o+x -o -perm /g-w,o+w -o -perm /g-r,o+r -o -perm /u-x,o+x -o -perm /u-w,o+w -o -perm /u-r,o+r \) | sort
./001
./002
./003
./004
./005
./006
./007
./010
./020
./030
./040
./050
./060
./070

基本上你是说,给我其中组具有权限但所有者没有的文件,或者世界具有权限但组没有的文件,或者世界具有权限但所有者没有的文件。

注意:find 有 3 个 perm 参数;

  • 烫发模式
  • 烫发模式
  • 烫发/模式

ps我不太确定这个的价值......

相关内容