本文于 4 天前发布,最后更新于 4 天前
一、准备工作
find 命令的 - perm 参数选项有三种写法。下面创建一些文件,作为准备工作。
注意:每个文件的文件名与其权限呈对应状态,便于我们观察现象。
二、三种写法
(1)不带任何符号,表示精确匹配指定的权限
[root@shine find-perm]# find . -perm 333 ./333 [root@shine find-perm]# find . -perm 666 没有匹配到文件
(2)权限前加一个 “-”
[root@shine find-perm]# find . -perm -444 ./777 ./644 ./444 ./755 ./555
可以看到匹配到 5 个文件,需要注意的是,这里并不是比大小,用 755 为例:
- User:7=4+2+1。r+w+x
- Group:5=4+1。w+x
- Other:5=4+1。w+x
-perm -444 表示 3 个权限位都至少要有 4。也就是三个权限都必须包括写权限。
(3)权限前加一个 “/”
[root@shine find-perm]# find . -perm /444 ./777 ./750 ./400 ./644 ./444 ./500 ./755 ./555 ./700 ./600
可以看到相比于 “-” 匹配到了更多的文件。以 600 为例:
- User:6=4+2。r+w
- Group:0。
- Other:0。
只有 User 权限下符合要求,仍然匹配成功,则说明 “/” 表示或者的意思,所以 - perm /444 就表示 3 个权限位中只要有一个符合匹配条件,剩下两个权限位就忽略不判断了。
三、总结
find . -perm -444
:3 个权限位都必须至少匹配指定的权限find . -perm /444
:3 个权限位中的任意一个匹配指定的权限find . -perm 444
:精确匹配指定的权限