IBM AIX 中的 find 命令

IBM AIX 中的 find 命令

我将验证所列位置中的文件是否未同时设置其他写入权限和任何执行权限。此要求将递归应用于子目录中包含的文件。套接字 (s)、命名管道 (p)、块特殊文件 (b)、字符特殊文件 (c) 和符号链接 (l) 文件不在此要求范围内。我有以下输出find

bash-5.1# ls -ls /test/
total 8
   0 drwxr-x-w-    2 root     system          256 Apr 28 04:49 directory
   0 lrwxrwxrwx    1 root     system           11 Apr 28 04:57 symlink -> /test/test1
   4 -rw-r-----    1 root     system            6 Apr 24 04:33 tes
   4 -rwxr-x-w-    1 root     system           11 Apr 24 04:49 test1
   0 -rw-r---w-    1 root     system            0 Apr 18 20:45 test2
bash-5.1# find /test -type d,f \( -perm -o=w -a \( -perm -u=x -o -perm -g=x -o -perm -o=x \) \) -ls
12337    1 drwxr-x-w-  2 root      system         256 Apr 28 04:49 /test/directory
bash-5.1# find /test -type f,d \( -perm -o=w -a \( -perm -u=x -o -perm -g=x -o -perm -o=x \) \) -ls
12334    1 -rwxr-x-w-  1 root      system          11 Apr 24 04:49 /test/test1

正如您所看到的,当我将顺序从 更改-type d,f为 -type f,d结果发生了变化,我不知道为什么。我也有这种方法:

bash-5.1# find /test ! \( -type s -o -type p -o -type b -o -type c -o -type l \) \( -perm -o=w -a \( -perm -u=x -o -perm -g=x -o -perm -o=x \) \) -ls
12337    1 drwxr-x-w-  2 root      system         256 Apr 28 04:49 /test/directory
12334    1 -rwxr-x-w-  1 root      system          11 Apr 24 04:49 /test/test1

您认为最好的方法是什么?

答案1

AIX 使用 POSIX find,它不支持-type允许匹配类型列表的 GNU 扩展。-file f,d您需要编写更便携的 ,而不是( -file f -o -file d )。 (供将来参考,POSIXfind也没有-perm /mode,这意味着权限检查比 GNU 可能需要的更冗长find。)

您需要包含其他写入的文件或目录任何执行权限:

find /test \( -type f -o -type d \) -perm -o=w \( -perm -u=x -o -perm -g=x -o -o=x \) -ls

请注意,在大多数 shell 中,您需要使用反斜杠 ( ) 转义(和字符,正如我在这里所做的那样,以便将它们直接传递给。)\find

相关内容