find 命令 - 列出具有设置粘性位的所有目录

find 命令 - 列出具有设置粘性位的所有目录

这不起作用

find / -type d -perm 1000

问题是,它只匹配精确的许可 ( 1000),但我只想寻找输出是否sticky bit设置。我不关心其他权限...

到目前为止我的解决方案

我觉得一定有比这更好的方法:

find / -type d -perm 1001 -or -perm 1002 -or -perm 1003 -or -perm 1004 -or -perm 1005 -or -perm 1006 -or -perm 1007 -or -perm 1010 -or -perm 1011 -or -perm 1012 -or -perm 1013 -or -perm 1014 -or -perm 1015 -or -perm 1016 -or -perm 1017 -or -perm 1020 -or -perm 1021 -or -perm 1022 -or -perm 1023 -or -perm 1024 -or -perm 1025 -or -perm 1026 -or -perm 1027 -or -perm 1030 -or -perm 1031 -or -perm 1032 -or -perm 1033 -or -perm 1034 -or -perm 1035 -or -perm 1036 -or -perm 1037 -or -perm 1040 -or -perm 1041 -or -perm 1042 -or -perm 1043 -or -perm 1044 -or -perm 1045 -or -perm 1046 -or -perm 1047 -or -perm 1050 -or -perm 1051 -or -perm 1052 -or -perm 1053 -or -perm 1054 -or -perm 1055 -or -perm 1056 -or -perm 1057 -or -perm 1060 -or -perm 1061 -or -perm 1062 -or -perm 1063 -or -perm 1064 -or -perm 1065 -or -perm 1066 -or -perm 1067 -or -perm 1070 -or -perm 1071 -or -perm 1072 -or -perm 1073 -or -perm 1074 -or -perm 1075 -or -perm 1076 -or -perm 1077 -or -perm 1101 -or -perm 1102 -or -perm 1103 -or -perm 1104 -or -perm 1105 -or -perm 1106 -or -perm 1107 -or -perm 1110 -or -perm 1111 -or -perm 1112 -or -perm 1113 -or -perm 1114 -or -perm 1115 -or -perm 1116 -or -perm 1117 -or -perm 1120 -or -perm 1121 -or -perm 1122 -or -perm 1123 -or -perm 1124 -or -perm 1125 -or -perm 1126 -or -perm 1127 -or -perm 1130 -or -perm 1131 -or -perm 1132 -or -perm 1133 -or -perm 1134 -or -perm 1135 -or -perm 1136 -or -perm 1137 -or -perm 1140 -or -perm 1141 -or -perm 1142 -or -perm 1143 -or -perm 1144 -or -perm 1145 -or -perm 1146 -or -perm 1247 -or -perm 1350 -or -perm 1351 -or -perm 1352 -or -perm 1453 -or -perm 1454 -or -perm 1555 -or -perm 1556 -or -perm 1657 -or -perm 1660 -or -perm 1661 -or -perm 1662 -or -perm 1663 -or -perm 1764 -or -perm 1765 -or -perm 1766 -or -perm 1767 -or -perm 1770 -or -perm 1771 -or -perm 1772 -or -perm 1773 -or -perm 1774 -or -perm 1775 -or -perm 1776 -or -perm 1777

答案1

由于您只对一种特定模式位感兴趣,因此您应该能够使用 or-perm -MODE语法-perm /MODE。从手册页:

-perm -mode

mode为该文件设置所有权限位。符号模式以这种形式被接受,这通常是您想要使用它们的方式。如果您使用符号模式,则必须指定u,g或者。o请参阅参考资料EXAMPLES部分的一些说明性示例。

-perm /mode

mode为该文件设置任何权限位。这种形式接受符号模式。如果您使用符号模式,则必须指定u,g或者。o请参阅参考资料EXAMPLES部分的一些说明性示例。如果未设置权限位mode,则此测试匹配任何文件(此处的想法是与 的行为一致-perm -000)。

作为一个使用示例,我创建了两个目录并在其中一个上设置了粘滞位:

test$ mkdir sticky-bit-test

sticky-bit-test$ mkdir dir-with-sticky
sticky-bit-test$ chmod +t dir-with-sticky/
sticky-bit-test$ mkdir dir-without-sticky
sticky-bit-test$ ls -l
total 8
drwxr-xr-x 2 user group 4096 Jul 19 18:55 dir-without-sticky
drwxr-xr-t 2 user group 4096 Jul 19 18:55 dir-with-sticky

test$ find . -type d -perm -1000
./sticky-bit-test/dir-with-sticky

test$ find . -type d -perm /1000
./sticky-bit-test/dir-with-sticky

如您所见,这两个选项都正确地选出设置了粘性位的目录。正如@ilkkachu 所指出的,这两者之间的区别在这个问题

答案2

免责声明:我是该书的当前作者生皮(右旋)本答案末尾使用的程序。

请注意,该/1000表示法适用于 GNU寻找,但不适用于 macOS(可能还有其他系统)。您需要将其更改为+1000

find / -type d -perm +1000

右旋, 你可以这样做:

rh / 'd && sticky'

rh命令可以在这里找到:github.com/raforg/rawhide

相关内容