使用 `find -perm` 查找未设置权限的时间

Posted

技术标签:

【中文标题】使用 `find -perm` 查找未设置权限的时间【英文标题】:Using `find -perm` to find when a permission is not set 【发布时间】:2011-05-21 22:07:43 【问题描述】:

我想在我的目录中找到不可读的文件(例如带有 g-r 的文件)。所以我尝试了这个:

find . -perm -g-r

它显示了我所有的文件??所以我尝试了这个:

find . -perm -g+r

它只向我显示了可读文件。 -perm -g-r 似乎与所有文件匹配。我正在使用 CentOS 5.5。难道我做错了什么?看起来-perm -g-r 没有做任何有用的事情。

【问题讨论】:

我相信权限参数的- 前缀意味着匹配具有“至少”这些权限的文件。所以它匹配不是组可读的文件以及组可读的文件,因为组可读文件具有被认为“大于”g-r 的组权限 【参考方案1】:

试试:

find . ! -perm -g+r

【讨论】:

成功了!我仍然对-perm -g-r 不工作感到困惑,但是哦,好吧。 这是一个明显的扩展来查找不可执行的文件,也是。谢谢! 如果我想将搜索限制在文件而不是目录,并且想要-maxdepth 2 怎么办?我的意思是,我如何在断言其他事情的同时否定烫发?编辑:没关系。您可以使用 ! 否定任何选项。起初它似乎不起作用,但确实如此。我做了find -maxdepth 2 ! -perm -g+r -type d,发现目录深度为2,没有组读取权限。 我认为-perm 选项不支持g-r 就像chmod g-r <file> 一样【参考方案2】:

如果您想查找 不可读的文件,您可以使用

find . ! -readable

【讨论】:

这适用于 Linux,但在 Mac 上找到的 BSD(从 2008 年开始)不支持它。 好点。可能有不少版本的 find out 不支持 -readable。【参考方案3】:

当您执行以下指令时,您可以看到所有文件,因为您是以 root 身份执行的。

find . -perm -g-r

尝试以普通用户身份执行。

【讨论】:

文件属性(权限、所有权、大小等)不依赖于用户。我相信你的答案是错误的。 另外,OP 询问了如何找到位 not 集,Tim Cooper 的答案是这样,而你的却没有。

以上是关于使用 `find -perm` 查找未设置权限的时间的主要内容,如果未能解决你的问题,请参考以下文章

未执行的任务(Django + Heroku + Celery + RabbitMQ)

未授予 Django 管理员访问权限

在 Django 中为特定视图设置用户权限

django - 使用 get_or_create 自动创建用户时设置用户权限

Django:禁止(未设置 CSRF cookie。)

使用 AJAX 设置时未保存 Django 会话变量