如何根据文件权限查找文件
创始人
2024-03-01 21:37:57
0

在 Linux 中查找文件并不是什么大问题。市面上也有很多可靠的自由开源的可视化查找工具。但对我而言,查找文件,用命令行的方式会更快更简单。我们已经知道 如何根据访问和修改文件的时间寻找或整理文件。今天,在基于 Unix 的操作系统中,我们将见识如何通过权限查找文件。

本段教程中,我将创建三个文件名为 file1file2file3 分别赋予 777766655 文件权限,并分别置于名为 ostechnix 的文件夹中。

mkdir ostechnix && cd ostechnix/
install -b -m 777 /dev/null file1
install -b -m 766 /dev/null file2
install -b -m 655 /dev/null file3

现在,让我们通过权限来查找一下文件。

根据权限查找文件

根据权限查找文件最具代表性的语法:

find -perm mode

mode 可以是代表权限的八进制数字(777、666 …)也可以是权限符号(u=x,a=r+x)。

在深入之前,我们就以下三点详细说明 mode 参数。

  1. 如果我们不指定任何参数前缀,它将会寻找具体权限的文件。
  2. 如果我们使用 - 参数前缀, 寻找到的文件至少拥有 mode 所述的权限,而不是具体的权限(大于或等于此权限的文件都会被查找出来)。
  3. 如果我们使用 / 参数前缀,那么所有者、组或者其他人任意一个应当享有此文件的权限。

为了让你更好的理解,让我举些例子。

首先,我们将要看到基于数字权限查找文件。

基于数字(八进制)权限查找文件

让我们运行下列命令:

find -perm 777

这条命令将会查找到当前目录权限为确切为 777 权限的文件。

1

如你看见的屏幕输出,file1 是唯一一个拥有确切为 777 权限的文件。

现在,让我们使用 - 参数前缀,看看会发生什么。

find -perm -766

如你所见,命令行上显示两个文件。我们给 file2 设置了 766 权限,但是命令行显示两个文件,什么鬼?因为,我们设置了 - 参数前缀。它意味着这条命令将在所有文件中查找文件所有者的“读/写/执行”权限,文件用户组的“读/写”权限和其他用户的“读/写”权限。本例中,file1 和 file2 都符合要求。换句话说,文件并不一样要求时确切的 766 权限。它将会显示任何属于(高于)此权限的文件 。

然后,让我们使用 / 参数前置,看看会发生什么。

find -perm /222

上述命令将会查找某些人(要么是所有者、用户组,要么是其他人)拥有写权限的文件。这里有另外一个例子:

find -perm /220

这条命令会查找所有者或用户组中拥有写权限的文件。这意味着匹配所有者和用户组任一可写的文件,而其他人的权限随意。

如果你使用 - 前缀运行相同的命令,你只会看到所有者和用户组都拥有写权限的文件。

find -perm -220

下面的截图会告诉你这两个参数前缀的不同。

如我之前说过的一样,我们也可以使用符号表示文件权限。

请阅读:

基于符号的文件权限查找文件

在下面的例子中,我们使用例如 u(所有者)、g(用户组) 和 o(其他) 的符号表示法。我们也可以使用字母 a 代表上述三种类型。我们可以通过特指的 r (读)、 w (写)、 x (执行)分别代表它们的权限。

例如,寻找用户组中拥有 权限的文件,执行:

find -perm -g=w

上面的例子中,file1 和 file2 都拥有 权限。请注意,你可以等效使用 =+ 两种符号标识。例如,下列两行相同效果的代码。

find -perm -g=w
find -perm -g+w

查找文件所有者中拥有写权限的文件,执行:

find -perm -u=w

查找所有用户中拥有写权限的文件,执行:

find -perm -a=w

查找所有者和用户组中同时拥有写权限的文件,执行:

find -perm -g+w,u+w

上述命令等效与 find -perm -220

查找所有者或用户组中拥有写权限的文件,执行:

find -perm /u+w,g+w

或者,

find -perm /u=w,g=w

上述命令等效于 find -perm /220

更多详情,参照 man 手册。

man find

了解更多简化案例或其他 Linux 命令,查看man 手册

然后,这就是所有的内容。希望这个教程有用。更多干货,敬请关注。

干杯!


via: https://www.ostechnix.com/find-files-based-permissions/

作者:SK 译者:CYLeft 校对:校对者ID

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

给AI玩具设一道隐私“防火...
江德斌 据6月9日央视网报道,从能讲故事的智能玩偶,到可情感交互的...
2025-06-13 07:14:10
每日一练_15:查找输入整...
一.查找输入整数二进制中1的个数 题目链接: 查找...
2025-06-01 04:27:27
lattice regre...
文章目录lattice regression1.Monotonic...
2025-05-31 19:06:57
【刷题之路Ⅱ】将你的二分法...
【刷题之路Ⅱ】将你的二分法修炼到极致!LeetCod...
2025-05-31 15:42:12
【Java版oj】day1...
目录  一、二进制插入 (1)原题再现...
2025-05-30 04:20:32
二十二、身份验证与权限
一、 准备工作 为了讲清楚身份验证与权限,我们再创...
2025-05-28 15:18:55

热门资讯

Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
2024 开年,LLUG 和你... Hi,Linuxer,2024 新年伊始,不知道你是否已经准备好迎接新的一年~ 2024 年,Lin...
什么是 KDE Connect... 什么是 KDE Connect?它的主要特性是什么?它应该如何安装?本文提供了基本的使用指南。科技日...
Opera 浏览器内置的 VP... 昨天我们报道过 Opera 浏览器内置了 VPN 服务,用户打开它可以防止他们的在线活动被窥视。不过...