在本文中,我们将了解 Linux 权限的基础知识,并描述它们在VPS环境中的重要性。我们将阐明用户权限、文件所有权和访问限制的复杂性,为您提供保护服务器及其数据所需的知识。
因此,无论您是Web开发人员、系统管理员,还是只是对 VPS 管理内部工作原理感兴趣的人,请继续阅读,我们将介绍虚拟服务器上的 Linux 权限。帮助大家能够顺利掌握权限用法,并保护您的VPS。
了解 Linux 文件权限
作为系统管理员,理解文件权限与理解控制和访问语言有关。Linux 文件权限是您的守门人,决定谁可以查看、修改或执行 VPS 上的文件和目录。它们确保只有授权实体才能访问您的数据和应用程序。
三种权限类型
Linux 文件权限的核心是三个基本属性,每个属性控制文件访问的特定方面:
读取(r):此权限允许用户或组查看文件内容或列出目录内容。在权限设置中以字母r表示。
写入 (w):写入权限允许用户或组修改文件内容或创建和删除目录中的文件。它用字母 w 表示。
执行 (x) :执行权限,以字母 x 表示,授予运行脚本或 执行程序的能力。如果没有此权限,则无法执行程序或更改目录。
三个权限级别
在 Linux 中,权限并非普遍授予;它们是针对特定实体量身定制的。主要有三个权限级别:
用户(u):此级别是指文件或目录的所有者。用户可以是创建文件的人,也可以是具有特定访问权限的指定用户。
组 (g):组权限适用于一组预定义的共享文件或目录访问权限的用户。组是管理具有类似需求的多个用户的权限的有效方法。
其他 (o):“其他”类别包括除所有者外也不是文件或目录所关联组的成员的其他人。这些权限是最开放的,通常适用于系统上的所有用户。
数字和符号权限表示
Linux 权限可以用两种格式表示:数字和符号表示。
数字表示法:在此格式中,每个权限都分配有一个数值。读取用4表示,写入用2表示,执行用1表示。然后将这些值相加以创建一个三位数,其中第一位表示用户权限,第二位表示组权限,第三位表示其他权限。例如,权限为 644 的文件意味着用户具有读写访问权限(4+2=6),而组和其他人只有读取访问权限(4)。
允许 | 数值 |
读 | 4 |
写 | 2 |
执行 | 1 |
符号表示法:符号表示法使用字母和符号的组合来表示权限。r 表示读取,w 表示写入,x 表示执行,’-‘ 表示无权限。这些符号与用户、组和其他用户一起使用来设置权限。例如,rw-r–r–转换为用户 = 读取 + 写入、组 = 读取、其他 = 读取。
象征 | 意义 |
r | 读取权限 |
瓦 | 写入权限 |
十 | 执行权限 |
– | 没有权限 |
在下一节中,我们将探讨这些权限的实际应用并仔细研究 umask。
查看文件权限
要深入了解 Linux VPS 上现有的文件权限,您需要利用几个可靠的命令。让我们看看如何使用ls -l和stat来揭示文件和目录的复杂细节。
使用 ls 命令
带有-l选项的ls命令是您以用户友好且人性化格式查看文件权限的首选工具。只需打开终端并导航到包含相关文件或目录的目录即可。然后,执行以下命令:
ls -l filename_or_directory
将filename_or_directory替换为要检查的文件或目录的实际名称。运行此命令时,它将显示详细列表,其中包括文件权限、所有权信息、文件大小、修改日期等。
输出将会像这样:
lrwxrwxrwx 1 root root 7 Aug 25 2021 filename
此处,lrwxrwxrwx部分以符号形式表示文件的权限。user 和 group 值分别表示文件的所有者和组。
使用 stat
为了更好地检查文件权限和其他文件信息,您可以使用stat命令。此命令提供文件属性的全面概述。
要使用 stat,只需输入以下命令:
stat <filename_or_directory>
再次,将 <filename_or_directory> 替换为您要检查的文件或目录的实际名称。输出将以结构化格式显示大量信息,包括访问、修改和更改时间。
这些命令将使您能够检查和了解 VPS 上文件和目录的权限,这是有效管理访问和安全的基本技能。
如何使用 chmod 修改权限
chmod 命令用于更改文件权限。它允许您使用符号表示法或八进制表示法设置或修改文件或目录的权限。
符号表示法:此方法使用字母(u,g,o,a)和符号(+,-,=)来添加或删除权限。
象征 | 意义 |
你 | 用户(文件所有者) |
克 | 组(与文件属于同一组的用户) |
o | 其他人(其他所有人) |
一个 | 全部(u、g 和 o 的组合) |
+ | 添加指定权限 |
– | 删除指定权限 |
= | 设置指定权限并删除所有其他权限 |
示例:要为用户和组添加对名为 example.txt 的文件的写权限并删除其他用户的所有权限,可以使用以下命令:
chmod ug+w,o-rx example.txt
八进制表示法:此方法使用三位数字(0-7)来表示所有者、组和其他人的权限。每位数字对应读取(4)、写入(2)和执行(1)权限。
数字 (0-7) | 相应权限 |
0 | 没有权限 |
1 | 執行(1) |
2 | 写(2) |
3 | 写入+执行(2+1) |
4 | 阅读(4) |
5 | 读取+执行(4+1) |
6 | 阅读+写作(4+2) |
7 | 读取+写入+执行(4+2+1) |
示例:要授予文件所有者对 example.txt 的读写权限、授予组只读权限并且不授予其他用户任何权限,可以使用以下命令:
chmod 640 example.txt
了解用户和组所有权
所有权在确定文件和目录权限方面起着重要作用。在本章中,我们将探讨所有权如何影响权限以及如何使用ls -l命令检查文件所有权。
所有权如何影响权限
在基于 Unix 的系统中,每个文件和目录都与两个所有权级别相关联:用户所有权和组所有权。了解这些所有权级别至关重要,因为它们直接影响谁可以访问、修改或执行文件或目录。
用户所有权:创建文件或目录的用户默认成为其所有者。此用户拥有特殊权限,可以更改文件的权限,读取、写入和删除文件,而不管其他人设置的权限如何。
组所有权:Unix 系统上的每个用户都属于一个或多个用户组。可以将文件或目录分配给特定组。属于该组的用户获得文件或目录的组所有权。组所有权允许组成员根据其组权限访问文件。
如何使用 ls -l 命令检查文件所有权
ls 命令列出目录中的文件和目录。与 -l 选项一起使用时,它会提供包含所有权信息的详细列表。以下是使用它检查文件所有权的方法:
ls -l
此命令的输出将以如下格式显示信息:
-rw-r--r-- 1 user1 group1 1234 Sep 6 10:00 file.txt
以下是每列代表的含义的详细说明:
– -rw-r–r–:这些字符代表文件的权限。第一个字符表示文件类型(在本例中为常规文件),后面是文件所有者、组所有者和其他人的三组权限。
– 1:此数字表示该文件的硬链接数。
– user1:这是文件所有者的名称。
– group1:这是群组所有者的名称。
– 1234:这是文件大小(以字节为单位)。
– 9 月 6 日 10:00:这是上次修改的日期和时间。
– file.txt:这是文件或目录名称。
在上面的例子中,user1 拥有文件 file.txt,并且属于组 group1。该文件的权限为 rw-r–r–,这意味着所有者具有读写权限,但其他人只能读取该文件。
更改文件所有权
更改文件所有权是一项基本任务,它允许您在用户和组之间转移文件和目录的所有权。在下一章中,我们将探讨如何使用 chown 和 chgrp 命令更改文件或目录的所有者和组,并提供代码示例。
如何使用 chown 更改文件所有权
chown 命令可更改文件或目录的所有者。它允许您将所有权从一个用户转移到另一个用户。要使用 chown,您需要超级用户 (root) 权限或文件或目录的所有权。
chown 的基本语法如下:
chown [new_owner:new_group] [file_or_directory]
– new_owner:新主人的用户名。
– new_group:新组的名称(可选)。
– file_or_directory:您想要更改其所有权的文件或目录。
如何使用 chgrp 更改组所有权
chgrp 命令可更改文件或目录的组所有权。与 chown 类似,您需要拥有超级用户权限或文件或目录的所有权才能使用 chgrp。
chgrp 的基本语法如下:
chgrp [new_group][file_or_directory]
– new_group:新组的名称。
– file_or_directory:您想要更改其组所有权的文件或目录。
更改所有权的代码示例
以下是一些更改文件和目录所有权的实际代码示例:
1.使用 chown 更改文件所有权:
要将名为 file.txt 的文件的所有者更改为名为 newuser 的用户,请使用以下命令:
sudo chown newuser file.txt
要更改同一文件的所有者和组所有权,请使用:
sudo chown newuser:newgroup file.txt
2.使用 chown 更改目录所有权:
要将名为 mydir 的目录及其所有内容的所有者更改为 newuser,请使用 -R 选项进行递归所有权更改:
sudo chown -R newuser mydir
3.使用 chgrp 更改组所有权:
要将名为 file.txt 的文件的组所有权更改为名为 newgroup 的组,请使用以下命令:
sudo chgrp newgroup file.txt
4.使用 chgrp 更改目录的组所有权:
要将名为 mydir 的目录及其所有内容的组所有权更改为 newgroup,请使用 -R 选项进行递归组所有权更改:
sudo chgrp -R newgroup mydir
请务必记住将 newuser 和 newgroup 替换为您要分配的实际用户名和组名。此外,使用 sudo 以超级用户权限执行这些命令,因为更改所有权通常需要提升权限。更改所有权时要小心谨慎,因为它可能对系统的访问控制和安全性产生重大影响。