Linux chmod 命令

修改 (ch天使 模组e) Linux 中的命令用于根据访问文件的用户类型和与访问文件相关的权限类型来更改文件的访问模式。

文件权限和用户组

为了了解权限的类型和用户的类型,让我们首先回到 ls 命令,该命令可以列出所有文件及其在当前目录中的权限。

ls 文件权限示例

文件权限位

如您所见,每个文件的第一列对应于 10 个字符(位)的序列。 第一个位用于检查它是否是一个目录( d 少量)。

  • d -> 检查节点是否为 目录 或不。

以下9位代表三类用户组的权限,分别是 所有者, 团体其他.

并且对于每个用户组,有 3 位对应于文件权限,(rwx, 以该顺序)。

  • r -> 用户组可以 文件/目录。
  • w -> 用户组可以 到文件/目录。
  • x -> 用户组可以 执行 文件/目录。
-rw-r--r-- 1 root root   66 Dec 18 20:25 ListText 

前三个字符代表权限 所有者 用户组。 所有者是创建文件的用户。 对于文件 ListText, 序列 rw- 意味着所有者可以 ,但无法执行该文件。

接下来的三个字符是自己的 团体 (与文件在同一组中的所有用户)。 这意味着该类别中的任何用户都只能读取该文件,但不能写入或执行它。

接下来的三个字符/位用于 其他. 由于这也是 r--,此类别中的所有用户只能读取该文件。

来自 rwx 位,现在让我们看看如何使用 chmod.

通过 chmod 设置文件权限位

现在我们知道什么是文件权限,我们可以使用 chmod. 让我们看看我们可以通过哪些方式来改变它们。

1.更改绝对文件权限

文件权限位 rwx 可以表示为八进制字符。 这使我们能够使用设置文件的绝对文件权限 chmod.

我们可以将 rwx 八进制字符,使用以下规则:

  • r = 4 如果设置了读取位。 否则, r = 0
  • w = 2 如果设置了写位。 别的, w = 0
  • x = 1 如果设置了执行权限位。 别的, x = 0
  • 八进制字符表示为 r + w + x

这意味着所有者组的八进制字符 ListText 文件是 r + w + x = 4 + 2 + 0 = 6

格式: chmod 755 filename.txt

这里, 755 对应任意三个八进制字符,对应3种用户组。

现在,让我们制作我们的 ListText 文件只能被所有用户执行 Group,保持其他不变。 所以绝对位是: rw-r-xr--,对应于八进制字符 654. 因此,我们的命令必须是:

[email protected]:~# chmod 654 ListText 
Chmod Linux 绝对模式示例

如您所见,我们的文件现在可以对自己组中的所有用户执行。

现在,让我们看看另一种改变文件模式的方法 相对权限.

2.设置相对文件权限

由于查找文件权限位和计算绝对值变得乏味,有时在使用时仅使用相对文件权限位更容易 chmod. 这 +- 运算符用于此目的,以设置和取消设置与当前模式相关的文件模式。

要更改相对文件权限,我们使用以下语法:

格式:

  • chmod +mode filename.txt 设置当前用户的相对权限。
  • chmod group+mode filename.txt 设置相对权限 group

group 位遵循以下规则:

  • u -> 代表用户组
  • g -> 代表自己的组
  • o -> 代表他人
  • a -> 代表所有用户组

现在我们知道了基本语法,现在让我们为组设置写权限 others 对于我们的旧文件 ListText 使用相对模式。

[email protected]:~# chmod o+w ListText 
Chmod Linux 相对权限示例Chmod Linux 相对权限示例

同样,要恢复到以前的模式,我们只需使用:

[email protected]:~# chmod o-w ListText 

- 操作员取消设置 w 位为 others 团体。

同样,要为所有用户设置执行权限,只需使用:

[email protected]:~# chmod a+x ListText 

笔记: 如果该位已设置,则没有变化。 同样,如果您尝试取消设置已经取消设置的位,它只会保持未设置状态。 chmod 也永远不会更改符号链接的权限,因此创建的任何符号链接(软链接和硬链接)都不会受到影响

Linux chmod 命令选项

虽然不经常使用,但有一些与 chmod, 如下表所示:

选项 描述
-c, --changes 类似于详细,但仅在进行更改时报告
--no-preserve-root 不特别对待’/’(默认)
--preserve-root 无法对“/”进行递归操作
-f, --silent, --quiet 抑制大多数错误消息
-v, --verbose 以详细模式运行
--reference=RFILE 用途 RFILE的模式作为参考而不是 模式 价值观
-R, --recursive 递归更改文件和目录
--version 输出版本并退出

结论

在这篇文章中,我们了解了 chmod 用于更改文件权限/模式的命令。 如果您想限制/允许任何粒子用户组访问文件,这很有用。 我们还学习了更改绝对和相对文件权限位的方法,它允许以不同的方式更改文件权限。

参考

  • chmod 上的 Linux 手册页