Linux 被誉为功能强大且可靠的操作系统,提供无与伦比的安全性、稳定性和灵活性。为了维护系统的完整性和安全性,Linux 以“权限”的形式实现某些设置。这些权限控制谁可以访问、修改或执行文件和目录。无论您是 Linux 新用户还是经验丰富的老手,了解 Linux 权限对于安全可靠的系统都至关重要。本文详细介绍了 Linux 权限是什么以及如何最好地保证文件和目录的安全。 
了解 Linux 权限
Linux 文件权限是允许用户控制谁可以访问其文件的特定设置。在 Linux 中,每个文件或目录都有一组分布在三个级别的系统用户之间的权限:
- 用户:指文件或目录的所有者。所有者通常是创建文件/目录的用户。
- 组:组是对文件或目录具有相同权限集的用户的集合。
- 其他:既不是该组的所有者也不是该组成员的所有其他用户都属于此类别。
每个用户都具有三种类型的文件权限,这决定了他们可以执行的不同类型的操作。
- 读(r) :用户可以查看文件或目录的内容。对于文件来说,读权限意味着用户可以打印和复制文件的内容。对于目录,读权限允许用户查看和复制目录中的文件。
- Write (w) :用户可以修改文件/目录的内容。如果用户具有写入权限,则该用户可以添加、删除甚至重命名文件或目录。
- 执行 (x) :允许用户执行文件和访问目录。这与 Windows 形成鲜明对比,Windows 中的可执行文件具有“.exe”扩展名,用户可以轻松运行它们。但是,在 Linux 上,只有当文件具有该用户的执行权限时,该用户才能执行该文件。
- 破折号(-) :表示未设置权限或没有权限。

Linux下查看文件权限的方法
现在我们知道了 Linux 上存在的所有文件权限,让我们看看如何查看授予文件的权限。查看文件权限非常简单,只需使用以下命令:
ls -l
此命令显示当前位置的所有文件和目录的列表。输出应如下面的屏幕截图所示。
是不是看起来很混乱?让我们通过一个示例来理解这一点。
在上面的例子中:
- 第一个字符 (-) 表示文件类型。 “
-”表示该项目是一个文件,“d”表示一个目录。 - 接下来的九个字符指定条目的权限集(稍后会详细介绍)。
- 下一个数字表示文件包含多少个链接。默认情况下,该项目将为 1。
- 下一列显示文件所有者的名称。
- 下一列显示哪些组可以访问该文件。
- 下一列显示文件大小。
- 下一列显示文件的最近修改时间。
- 最后一列将显示文件/目录的名称。
简化ls-l命令的输出后,让我们使用示例权限集“ rwxr-xr-- ”来扩展权限部分。
- 这里,前三个字符“
rwx”表示文件所有者具有读(r)、写(w)和可执行(x)权限。 - 接下来的三个字符“
rx”表示该组用户既有读(r)权限,又有可执行(x)权限,但没有写权限(-)。 - 最后三个字符“
r--”表示所有其他用户仅具有读取(r) 权限。最后两个破折号表示没有权限(在本例中为写入和执行权限)。
即前三个字符代表文件所有者的权限。接下来的三个字符代表该用户在该组中的权限,最后三个字符代表其他用户的权限。

如何更改 Linux 上的文件权限
要更改 Linux 上的文件权限,请使用 chmod 命令,它代表“更改模式”。使用 chmod 命令的基本语法是:
chmod <options> <permissions> <filename>
可以与 chmod 结合使用的命令选项包括:选项 解释 -v显示所有已处理文件的诊断消息 -c工作方式与 -v类似,不同之处在于,如果进行更改,则仅显示诊断消息。 -f用于抑制大多数错误消息。 -R用于递归修改文件和目录。
对于 <permissions> 部分,您可以使用以下两种方法之一:
- 绝对模式
- 符号模式
chmod 绝对模式
在此模式下,权限被指定为从 1 到 7 的三位数字(也称为八进制数)的组合。这里,第一个数字对应文件所有者,第二个数字对应群组用户,第三个数字对应其他用户。在绝对模式下指定权限的基本语法是:
chmod <options> <permission_combination> <file_name>
可用于权限的不同数字组合包括:权限类型 数字 根本不允许 0 执行 1 写 2 写入+执行 3(即2+1) 读 4 读取+执行 5(或4+1) 读+写 6(或4+2) 读+写+执行 7(即4+2+1)
让我们看一个例子,以便更容易理解。例如,要设置所有用户对文件“test.txt”的读、写和执行权限,请使用以下命令:
chmod -v 777 test.txt
由于这是 Linux 系统上非常常用的命令,因此我们准备了一份有关 chmod 777 在 Linux 上含义的详细指南。
2、如果想设置文件所有者只读权限,组或其他用户无权限,可以使用以下命令:
chmod -v 400 test.txt
chmod 符号模式
绝对模式的主要问题是您始终需要向所有用户提供一组权限,即使您需要对一个用户进行更改也是如此。
这就是符号模式发挥作用的地方。符号模式更常用,因为它使用字母而不是数字,这对大多数用户来说很难理解。除了对用户来说更容易之外,符号模式还允许您仅为特定用户设置权限,这与绝对模式不同。使用 chmod 符号模式更改文件权限的基本语法是:
chmod <options> <user_type><symbol><permission_set> <file_name>
上面的语法看起来像这样:
- <user_type> 指定要为其设置权限的用户类型。
- <symbol> 指“-”、“+”和“=”,分别表示“删除”、“添加”和“等于”。
- <permission_set> 是指为用户设置的权限。
在符号模式下,<user_types>可以指定如下:
- 文件所有者是“u”
- 将用户分组为“g”
- 其他用户是“o”
- 所有用户的“a”或“ugo”(所有三个的组合)
在 <permission_set> 部分,您可以使用以下任意组合:权限类型 象征 根本不允许 — 执行 -X 写 -w- 写入+执行 -wx 读 r- 读取+执行 处方 读+写 RW- 读+写+执行 读写
让我们看一些如何在 Linux 上使用符号模式设置权限的示例。如果要设置组的执行权限,请使用以下命令:
chmod -v g+x test.txt
您还可以为不同的用户类型设置多个权限。假设您要删除其他用户类型的执行权限,并向文件所有者添加读、写和执行权限。
chmod ox,u+rwx test.txt
在 Linux 上更改文件/目录所有者和组
假设您想要所有权限,但不想与组用户共享它们。在这些情况下,您可以使用chown (更改所有者)命令更改文件的所有权。更改所有者的语法非常简单。
chown <new_user_name> <filename_or_directory_name>
例如,如果要将文件test.py的所有者更改为root,可以使用以下命令:
sudo chown root test.py
注意:更改文件的所有者需要 root 权限。如果您没有root权限,请使用“sudo”命令获取root权限。
如果需要更改文件组,请使用chgrp命令。
chgrp <new_group_name> <filename_or_directory_name>
例如,如果要更改要测试的组,请使用 chgrp 命令。
sudo chgrp test test.txt
注意:两个组不能是同一文件/目录的所有者。如果您想了解如何将新用户添加到组中,请查看我们有关如何将新用户添加到组中的指南。
管理文件权限至关重要,尤其是在多用户环境中。通过定期检查 Linux 系统上的文件权限,您可以保护敏感文件免遭窥探。我希望这篇文章可以帮助您理解这个基本概念。如果您有任何疑问,请在评论中告诉我们。





![2021 年如何设置 Raspberry Pi Web 服务器 [指南]](https://i0.wp.com/pcmanabu.com/wp-content/uploads/2019/10/web-server-02-309x198.png?w=1200&resize=1200,0&ssl=1)

