chmod 777 的含义
您正在尝试解决 Web 服务器的权限问题,并在 Internet 上找到了信息,说您需要递归地对要访问的 Web 目录执行 chmod 777
命令。在执行此操作之前,请确保您了解 chmod -R 777
操作以及为什么永远不要将权限设置为 777 。
本文介绍了基本的 Linux 权限模型以及与权限相对应的数字的含义。
了解 Linux 文件权限
在 Linux 中,对文件的访问由操作系统使用文件许可权,属性和所有权控制。了解 Linux 文件系统权限模型后,您可以将文件和目录的访问权限限制为仅授权用户和进程访问,从而使系统更安全。
每个文件均由一个特定用户和一个组拥有,并为三种不同类别的用户分配了权限访问权限:
- 文件所有者。
- 小组成员。
- 其他人(其他所有人)。
有三种文件许可权类型适用于每个用户类别,并允许您指定允许哪些用户读取文件,写入文件或执行文件。相同的权限属性适用于具有不同含义的文件和目录:
- 读取权限。
- 该文件是可读的。例如,设置读取权限后,用户可以在文本编辑器中打开文件。
- 可以查看目录的内容。用户可以使用
ls
命令列出目录内的文件。
- 写入权限。
- 执行权限。
- 可以执行该文件。
- 可以使用
cd
命令进入目录。
可以使用 ls
命令查看文件权限。这是一个例子:
ls -l filename.txt
-rw-r--r-- 12 buzheng 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
) ,符号链接 (l
) 或任何其他特殊类型的文件。
接下来的9个字符代表文件许可权,三个三元组,每个三个字符。第一个三元组显示所有者权限,第二个三元组显示用户组权限,最后一个三元组显示其他所有人权限。
数字权限
文件许可权可以数字或符号格式表示。在本文中,我们将重点介绍数字格式。
许可数字可以包含三到四个数字,范围从 0 到 7。
当使用3位数字时,第一个数字代表文件所有者的权限,第二个数字代表文件组的权限,最后一个代表其他用户的权限。
写入,读取和执行权限具有以下数字值:
r
(读取 ) = 4w
(写入 ) = 2x
(执行 ) = 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
- 组: rx = 4 + 0 + 1 = 5
- 其他: rx = 0 + 0 + 0 = 0
使用4位数字时,第一位数字含义如下:
- setuid = 4
- setgid = 2
- 粘滞位 = 1
- 无变化 = 0
接下来的三位数字与使用三位数字的含义相同。如果第一个数字为0,则可以省略,并且该模式可以用3个数字表示。数值模式 0755
与 755
相同。
要以数字(八进制)表示法查看文件的权限,请使用以下 stat
命令:
stat -c "%a" filename
644
切勿使用 chmod 777
为文件或目录设置 777 权限意味着所有用户都可以读取,写入和执行该文件或目录,并且可能会带来巨大的安全风险。
例如,如果将 /var/www
目录下的所有文件和子目录的权限递归更改为 777
,则系统上的任何用户都可以在该目录中创建,删除或修改文件。
如果您在 Web 服务器上遇到权限问题,而不是将权限递归设置为 777
,请将文件的所有权更改为运行该应用程序的用户,并将文件的权限设置为 644
,将目录的权限设置为 755
。
可以使用 chown
命令和 chmod
命令的权限来更改文件所有权。
假设您的服务器上有一个以 “buzheng” 用户身份运行的 PHP 应用程序。要设置正确的权限,请运行:
chown -R buzheng: /var/www
只有 root 用户,文件所有者或具有 sudo 特权的用户才能更改文件的权限。使用 chmod
时要格外小心,尤其是在递归更改权限时。
结论
如果要管理 Linux 系统,那么了解 Linux 权限的工作方式至关重要。
永远不要设置 777 (rwxrwxrwx
) 权限文件和目录权限。 777 意味着任何人都可以使用这些文件做任何事情。