您正在尝试修复您的Web服务器的权限问题,并在互联网上找到了信息,说您需要递归chmod 777
网络目录。在此之前,请确保您了解什么是chmod -R 777
这样做,以及为什么永远不应该将权限设置为 777。
本文解释了基本的 Linux 权限模型以及权限对应的数字的含义。
了解 Linux 文件权限#
在 Linux 中,对文件的访问由操作系统使用文件权限、属性和所有权来控制。了解 Linux 文件系统权限模型使您可以将对文件和目录的访问限制为仅授权的用户和进程,并使您的系统更加安全。
每个文件都由特定用户和组拥有,并为三类不同的用户分配了权限访问权限:
存在适用于每个用户类别的三种文件权限类型,并允许您指定允许哪些用户读取文件、写入文件或执行文件。相同的权限属性适用于具有不同含义的文件和目录:
- The read permission.
- 该文件是可读的。例如,当设置读取权限时,用户可以在文本编辑器中打开该文件。
- 可以查看该目录的内容。用户可以使用以下命令列出目录内的文件ls命令。
- The write permission.
- 该文件可以更改或修改。
- 目录的内容可以更改。用户可以创建新文件
, 删除现有文件
, 移动文件
, 重命名文件
..etc.
- The execute permission.
- 该文件可以被执行。
- 可以使用以下命令进入该目录cd命令。
可以使用以下命令查看文件权限ls命令。这是一个例子:
ls -l filename.txt
-rw-r--r-- 12 linuxize users 12.0K Apr 8 20:51 filename.txt
|[-][-][-]- [------] [---]
| | | | | | |
| | | | | | +-----------> 7. Group
| | | | | +-------------------> 6. Owner
| | | | +--------------------------> 5. Alternate Access Method
| | | +----------------------------> 4. Others Permissions
| | +-------------------------------> 3. Group Permissions
| +----------------------------------> 2. Owner Permissions
+------------------------------------> 1. File Type
第一个字符显示文件类型。它可以是一个常规文件(-
), 目录 (d
), a 符号链接
(l
),或任何其他特殊类型的文件。
接下来的九个字符代表文件权限,三个三元组,每个三元组。第一个三元组显示所有者权限,第二个三元组显示组权限,最后一个三元组显示其他人权限。
许可号#
文件权限可以用数字或符号格式表示。在本文中,我们将重点讨论数字格式。
权限号可以由三位或四位数字组成,范围是0到7。
当使用 3 位数字时,第一个数字代表文件所有者的权限,第二个数字代表文件所属的组,最后一个数字代表所有其他用户。
写入、读取和执行权限具有以下数值:
-
r
(读)= 4
-
w
(写)= 2
-
x
(执行)= 1
- 无权限 = 0
特定用户类别的权限位数是该类别的权限值的总和。
权限编号的每一位可能是 4、2、1 和 0 的和:
- 0 (0+0+0) – 没有权限。
- 1 (0+0+1) – 仅执行权限。
- 2 (0+2+0) – 仅写权限。
- 3 (0+2+1) – 写入和执行权限。
- 4 (4+0+0) – 只读权限。
- 5 (4+0+1) – 读取和执行权限。
- 6 (4+2+0) – 读写权限。
- 7 (4+2+1) – 读、写、执行权限。
例如,如果权限号设置为750,则表示该文件的所有者有读、写、执行权限,文件所属组有读、执行权限,其他用户没有权限:
- 所有者:rwx=4+2+1=7
- 组:r-x=4+0+1=5
- 其他:r-x=0+0+0=0
当使用 4 位数字时,第一位数字的含义如下:
- setuid=4
- setgid=2
- sticky=1
- 没有变化 = 0
接下来的三位数字与使用 3 位数字时的含义相同。如果第一位为0则可以省略,模式可以用3位数字表示。数字模式0755
是相同的755
.
要以数字(八进制)表示法查看文件的权限,请使用stat命令:
644
切勿使用 chmod 777#
对文件或目录设置777权限意味着所有用户都可读、可写和可执行,可能会带来巨大的安全风险。
例如,如果递归地更改目录下所有文件和子目录的权限/var/www
目录到777
,系统上的任何用户都可以在该目录中创建、删除或修改文件。
如果您的 Web 服务器遇到权限问题,请不要递归地设置权限777
,将文件的所有权更改为运行应用程序的用户,并将文件的权限设置为644
和目录的权限755
.
可以使用以下命令更改文件所有权chown命令和权限chmod命令。
假设您的服务器上有一个 PHP 应用程序,以用户“linuxize”运行。要设置正确的权限,您可以运行:
chown -R linuxize: /var/www
find /var/www -type d -exec chmod 755 {} \;
find /var/www -type f -exec chmod 644 {} \;
只有 root、文件所有者或具有 sudo 权限的用户才能更改文件的权限。使用时要格外小心chmod
,尤其是在递归更改权限时。
结论#
如果您正在管理 Linux 系统,了解 Linux 权限的工作原理至关重要。
你永远不应该设置 777 (rwxrwxrwx
) 权限 文件和目录权限。 777 意味着任何人都可以对这些文件执行任何操作。
如果您有任何疑问,请随时发表评论。