Linux 中的 9 个快速 chmod 命令示例

Linux 中的 chmod 命令用于更改或分配文件和目录的权限。 在 Linux / Unix 系统中,文件和目录的可访问性由文件所有权和权限决定。 在上一篇文章中,我们研究了如何使用 chown 命令. 在本教程中,我们看一下 chmod 命令。

chmod 命令,缩写 改变 模式 用于管理文件和目录权限并确定谁可以访问它们。 现在让我们深入探讨文件和目录权限的性质以及如何修改它们。

Linux 权限

为了更好地理解 chmod 命令的工作原理,我们研究 Linux 文件权限模型是明智之举。

在 Linux 中,我们有 3 种类型的文件权限: 读 (r), 写 (w)执行 (x) 权限。 这些权限决定了哪些用户可以读取、写入或执行文件。 您可以使用文本或八进制(数字)表示法分配这些权限,我们稍后将在本教程中讨论。

文件和目录可以属于 文件, 组(g) 或者 其他 (o)

  • u – 文件的所有者
  • g – 组
  • o – 其他

文件权限使用 ls -l 命令. 这 -l 标志 列出文件权限。 权限分为三组:分别是用户、组和其他

为了更好地了解文件权限,我们将列出目录的内容,如下所示:

$ ls -l

从最左边开始,第一个字符/符号表示文件类型。 一种 连字符 (-) 表示该文件是一个普通文件。 符号 d 表示它是一个目录。 象征 表示它是一个符号链接。

剩下的九个字符被分割成 3 个三元组,每个三元组带有三个符号 r(读), w(写)x(执行). 如前所述,第一部分指向所有者权限,第二部分表示组权限,最后一部分指定其他用户对文件或目录的权限。

从输出中,我们可以看到我们有 2 个文件(hello.txt 和 reports.zip)和一个目录。

让我们检查第一个文件

-rw-rw-r-- 1 linuxtechi linuxtechi   35 Aug 17 15:42 hello.txt

对于第一个文件, -rw-rw-r– 权限意味着文件的所有者有读写权限,组也有读写权限,而其他用户只有读权限。 相同的权限也适用于reports.zip 压缩文件。

我们来看看目录的权限:

drwxrwxr-x 2 linuxtechi linuxtechi 4096 Aug 17 15:43 sales

我们可以看到目录和组的所有者拥有所有权限(读取、写入和执行),而其他用户只有读取和执行权限。

三连字符 — 表示没有为文件的所有者、组或其他用户授予权限。

使用 chmod 命令设置文件和目录权限

看过文件权限以及如何查看它们之后,让我们不关注如何修改这些权限。

Linux 中的 chmod 命令用于使用以下任一方式更改文件和目录权限 文字(符号) 或者 数字(八进制) 符号。 它采用以下语法:

$ chmod [OPTIONS] 模式文件名

只有 root 用户或普通用户 sudo 权限可以更改文件或目录权限。 您可以在命令语法中传递多个以空格分隔的文件或目录。

现在让我们深入研究并查看 chmod 命令的不同示例。

示例 1) 使用数字符号分配权限

使用数字样式/符号设置权限时,请使用如下所示的语法:

$ sudo 修改 [OPTIONS] 数字值文件名

数值可以是 3 或 4 个数字。 但是,在大多数情况下,使用 3 个数字。 读取、写入和执行权限采用以下值:

  • 读取权限 => 4
  • 写权限 => 2
  • 执行权限 => 1

三个段中的每个段中的权限值(即读取、写入和执行)的总和占给定文件或目录的完整权限。

这是什么意思?

假设所有者有读、写和执行权限,组有读和执行权限,其他用户只有读权限,可以分解如下:

  • 你:rwx = 7
  • 克:接收= 5
  • o : r- = 4

因此,我们得出值 754 作为给定文件的文件权限的数值。

要将读取、写入和执行权限分配给所有者,并将读取权限仅分配给组和其他用户,请运行以下命令:

$ chmod 744 devops.txt

要将所有权限分配给文件的所有者,对组分配读取和执行权限,而对其他用户根本没有权限,请执行:

$ chmod 750 coders.txt

要将所有权限分配给文件的所有者,对该组和其他用户的读写权限,请运行以下命令:

$ chmod 755 sysadmin.txt

示例 2)递归地为目录分配权限

为目录分配权限时,请使用 -R 标志以递归地为其文件和子文件夹分配权限。 例如:

$ chmod 755 -R 目录名称

$ chmod 755 -R /home/linuxtechi/data

示例 3) 使用文本符号分配权限

另一种分配权限的方法是使用文本符号。 在此方法中,chmod 命令在语法中采用表示所有者、组、其他人或所有用户(u、g 和 o)的标志或符号。

该方法不像以前的方法那么简单,应注意避免分配错误的权限。

这是语法的样子

$ chmod [OPTIONS] [ u g o a ] [ – + = ] [ r, w, x ] 文件

让我们分解一下。

第一组参数 [ u g o a] 指定权限将发生变化的用户类别

  • 你:用户
  • g : 组
  • o : 其他
  • a:所有(包括以上所有)

如果省略此集合,则默认选项为 一种选择.

第二组选项——操作员选项 [ – + = ] – 确定是否要从用户类别中添加或删除权限。 选项删除

  • —— :该标志删除指定用户的文件权限。
  • + :这会向指定用户添加/附加权限。
  • = :这会为指定的用户分配不同的权限并删除用户段的先前权限。

让我们看几个例子:

示例 4) 为文件分配读取权限

$ chmod o=r 文件名

上面的命令仅分配由符号“o”表示的其他用户对该文件的读取权限,并删除分配给“others”段的较早权限。 拿一个 文件1.txt 具有以下权限

分派 ‘其他(o)’ 部分 读取权限 只跑

$ sudo chmod o=r file1.txt

从输出中,我们可以看到 ‘others’ 段已被分配读取权限,同时失去了执行权限。 这意味着 = 运算符 分配新的权限,同时删除以前的权限。

示例 5) 为文件和组所有者分配执行权限

$ sudo chmod 和+x 文件名

上述命令为文件的所有者和组添加了执行权限。 使用我们的文件,这变成:

$ sudo chmod ug+x file1.txt

示例 6) 为文件、组和其他人分配不同的权限

$ sudo chmod u=rwx,g=rw,o=r 文件名

上述命令将所有权限分配给文件的所有者,将读写权限分配给组,仅对其他用户分配读取权限。

笔记: 如果之后没有指定权限 = 运算符,然后删除用户段的所有权限。

示例 7) 删除​​其他用户的所有权限

$ sudo chmod o= 文件名

上面的命令从“others”用户段中删除指定文件的所有权限。

该命令与以下命令具有相同的效果:

$ sudo chmod o-rwx 文件名

示例 8) 使用参考文件分配权限

分配文件权限的另一种方便快捷的方法是使用参考文件。 在这种方法中,您使用 –reference=ref_file 选项将文件的权限设置为与另一个参考文件的权限相同。 使用下面的语法

$ sudo chmod –reference=ref_file 文件名

例如,设置文件权限 文件2.txt文件1.txt 运行命令:

$ sudo chmod --reference=file1.txt file2.txt

参考文件是 文件1.txt 尽管 文件2.txt 是将占用参考文件的文件权限的文件。

示例 9) 仅将执行权限分配给目录

假设我们有一个包含文件和子目录的目录,我们希望只在目录上分配执行权限而不涉及文件。 因此,这可以通过使用以下 chmod 命令来实现,

$ chmod a+X *

如果您仔细观察,我们已经使用过 大写 X 对于执行权限,上面的命令将对我们当前工作目录的所有目录设置执行权限。

结论

这为我们的主题拉开了帷幕。 我们查看了 chmod 命令并看到了各种示例,其中该命令可用于更改文件权限。