如何根据文件权限查找文件
创始人
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 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
从 Yum 更新中排除特定/某... 作为系统更新的一部分,你也许需要在基于 Red Hat 系统中由于应用依赖排除一些软件包。如果是,如...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
Opera 浏览器内置的 VP... 昨天我们报道过 Opera 浏览器内置了 VPN 服务,用户打开它可以防止他们的在线活动被窥视。不过...
如何检查你的 Linux 系统... 不知道在使用哪个初始化系统?以下是方法。每个主流 Linux 发行版(包括 Ubuntu、Fedor...