Chmod 命令和 Linux 文件权限解释

所以你找到了你喜欢的 Linux 风格,但现在你很困惑,因为你对终端命令和 Linux 文件权限一无所知?

或者,也许您有一个托管在 Linux 服务器上的网站,并且您遇到了一些文件权限问题,这些问题只能通过一些命令行魔法来解决。

无论如何,要学习的最基本的 Linux 命令之一是一个小而强大的命令,称为 修改. 但在我们解释该命令的作用之前,我们必须先了解一下 Linux 是如何处理文件安全的。

Linux 文件权限基础

Linux 操作系统实际上是类 Unix 系统(了解 Linux 与 Unix),类 Unix 系统处理文件权限如下:

每个文件都有一个 所有者,它决定了文件的“用户类别”。 每个文件也有一个 团体,它决定了文件的“组类”。 任何不是所有者且不属于同一组的系统用户都被确定为 其他.

类 Unix 系统上的所有文件都具有分配给所有三个类的权限,这些权限决定了所述类可以对给定文件执行哪些操作。

在类 Unix 系统上可用的三个操作是: (打开和查看文件内容的能力), (打开和修改文件内容的能力),以及 执行 (将文件作为可执行程序运行的能力)。

换句话说,文件的权限决定是否:

  • 所有者可以读取、写入和执行文件。
  • 该组可以读取、写入和执行文件。
  • 其他任何人都可以读取、写入和执行该文件。

Linux 文件权限可以两种格式显示。

第一种格式称为 符号记号,它是一个 10 个字符的字符串:一个字符代表文件类型,然后是九个字符,分别代表文件的读 (r)、写 (w) 和执行 (x) 权限,依次为所有者、组和其他。 如果不允许,则使用破折号 (-)。

为了 example:

-rwxr-xr--

这意味着它是一个具有所有者读、写和执行权限的常规文件; 组的读取和执行权限; 并且只能读取其他所有人的权限。

第二种格式称为 数字符号,它是一个由三位数字组成的字符串,每个数字分别代表用户、组和其他权限。 每个数字的范围是 0 到 7,每个数字的值是通过对类的权限求和得到的:

  • 0 表示不允许任何权限。
  • +1 如果该类可以执行该文件。
  • +2 如果该类可以写入文件。
  • +4 如果班级可以读取文件。

换句话说,每个数字值的含义最终是:

  • 0:无权限
  • 1:执行
  • 2:写
  • 3:编写和执行
  • 4:阅读
  • 5:读取并执行
  • 6:读写
  • 7:读、写和执行

所以以上 example (

-rwxr-xr--

) 在数字符号中是 754。

简而言之,这就是 Linux 文件权限。

什么是 Chmod?

在类 Unix 系统上, 修改 是一个系统级命令,代表“更改模式”,允许您手动更改文件的权限设置。

不要混淆 chown,这是类 Unix 系统上的另一个系统级命令,代表“更改所有者”,并允许您将文件的所有权分配给另一个用户,或者 chgrp,代表“更改组”并将文件分配给不同的组。 这些很重要,但不如 chmod 常用。

Chmod 644 是什么意思?

将文件的权限设置为 644 使得只有所有者可以访问和修改他们想要的文件,而其他人只能在不修改的情况下访问,并且没有人可以执行文件——甚至是所有者。 这是可公开访问的文件的理想设置,因为它平衡了灵活性和安全性。

Chmod 755 是什么意思?

将文件的权限设置为 755 与 644 基本相同,只是每个人都具有执行权限。 这主要用于可公开访问的目录,因为需要执行权限才能更改为目录。

Chmod 555 是什么意思?

将文件的权限设置为 555 可以使除了系统的超级用户之外的任何人都无法修改该文件(了解有关 Linux 超级用户的更多信息)。 这不像 644 那样常用,但知道这一点仍然很重要,因为只读设置可以防止意外更改和/或篡改。

Chmod 777 是什么意思?

将文件的权限设置为 777 使得任何人都可以对文件做任何他们想做的事情。 这是一个巨大的安全风险,尤其是在 Web 服务器上! 从字面上看,任何人都可以访问该文件,随意修改它,并在系统上执行它。 你可以想象如果流氓用户得到它的潜在损害。

如何在 Linux 上使用 Chmod

chmod 命令有一个简单的格式:

chmod [permissions] [file]

权限可以用数字表示法,当您要为所有类分配特定权限时,这是最好的格式:

chmod 644 example.txt

权限也可以用符号表示,这在您只想修改特定类的权限时很有用。 为了 example:

chmod u=rwx example.txt
chmod g=rw example.txt
chmod o=rw example.txt

您可以修改多个类的权限,例如这个 example 它将所有者设置为读/写/执行,但将组和其他人设置为读/执行:

chmod u=rwx,g=rw,o=rw example.txt

当为多个类分配相同的权限时,您可以将它们组合起来:

chmod u=rwx,go=rw example.txt

但是,当您只想为特定类添加或删除特定操作的权限时,使用符号表示法的美妙之处会大放异彩。

为了 example, 这 添加 文件所有者的执行权限:

chmod u+x example.txt

还有这个 移除 其他用户的写入和执行权限:

chmod o-wx example.txt

最后,如果您想将一组特定的权限应用于特定目录中的所有文件和文件夹(即递归 chmod),请使用 -R 选项并以目录为目标:

chmod -R 755 example_directory

虽然 chmod 命令乍一看有点疯狂,但它实际上非常简单且完全合乎逻辑。 如果你了解了以上内容,你就基本掌握了chmod!

了解有关掌握 Linux 的更多信息

chmod、chown 和 chgrp 等命令只是 Linux 冰山一角。 如果您是操作系统的新手,我们建议您查看这些针对 Linux 新手的巧妙技巧以及这些您永远不应该运行的 Linux 命令。

但最重要的是,您最好查看我们全面的 Ubuntu 和 Linux 初学者指南,它将教您入门和熟悉到足以让您感到舒适所需的一切。