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 命令并看到了各种示例,其中该命令可用于更改文件权限。