理解文件权限:“chmod 777”是什么意思?

February 10,2018

如果你是Linux使用者,或者在Linux服务器上管理你自己的网站,当你上传或修改文件的时候肯定经常会遇到这种情况“You do not have the permissions to upload file to the folder“。查了一堆资料后,结果大多是说把权限改成“755”或“777”。那么“777”是什么意思呢?为什么必须是“7”,不是“8”或“9”?

理解文件权限

Unix系统(包括Linux和Max OS X)拥有一套文件控制机制来决定谁可以进入某个文件或文件夹以及他们可以对这些文件或文件夹做什么。文件控制机制有两部分,即分组(classes)和权限(Permissions)。分组决定谁可以进入文件或文件夹,权限决定这些用户可以对这个文件做什么操作。

分组(classes)有三类——Owner,Group,Other

  • Owner 通常是这个文件/文件夹的创建者。在Linux系统中,在你的Home目录下创建的文件或文件夹通常来说你就是拥有者,除非你自己更改了它的所有权。
  • Group 涵盖了一群用户,这些用户拥有相同的权限和用户特权
  • Other 意思是普通访问用户

权限(Permissions)也有三种操作。读(read)写(write)和执行(execute)

  • Read 你只能查看文件,不能修改文件内容。运用在文件夹上的话,你只能查看文件夹里的文件,不能在文件夹里删除或者创建文件
  • Write 你可以编辑和修改文件,可以在文件夹里删除或者创建文件
  • Execute 执行主要用在你需要运行文件的时候(通常是当你需要运行脚本文件的时候)

当你将分组和权限结合起来,你就能控制谁能够进入文件以及他们能对这些文件做什么操作了

举个例子,拥有者Owner通常拥有全部的权限(读,写,执行)。如果你不是文件/文件夹的拥有者,你必须把文件的所有权改成你的名字,或者将其他分组(Group 和 Other)的权限设置为读,写和执行。在web服务器,如果你不能上传文件,可能是因为你不是目标文件夹的拥有者,或者你没有充分的权限在文件夹里添加文件。

数组代表什么?

在对分组和权限有了基本认识后,我们来深入探究“777”或者“775”是怎么来的?
每个文件和文件夹包含一个8字节的数据来控制权限。在最基本的二进制模式下,是“000”,表示没有权限。当你设置“读”的权限,它加4个字节到这个数据中,变成了“100”(在二进制)或者“4”在十进制。设置“写”的权限又会加2个字节到数据中,把它变成“010”或“2”在十进制。最后,设置“执行”权限加1个字节到数据中,导致“001”,或十进制的“1”。简短来说:

  • 读相当于“4”
  • 写相当于“2”
  • 执行相当于“1”

当我们想要设置权限,我们只需要把上面的数字加起来。比如,设置读和写的权限,我们会用“6”(4+2)表示。读写和执行,就是“7”(4+2+1)。以下列出的是每个数字的含义

0 - 没有权限

1 - 执行

2 - 写

3 - 写和执行

4 - 读

5 - 读和执行

6 - 读和写

7 - 读,写和执行

你设置怎样的数字依赖于你想对这个文件加怎样的权限。

那三个数字“777”表示什么呢?第一个数字分配给Owner,第二个数字分配给Group,第三个数字分配给Other。那么“777”表示的权限是,每个人都可以读,写和执行这个文件。这里有一些常见的权限用法:

  • 755 - 这个权限设置通常用于web服务器。拥有者有读,写和执行的全部权限。其他人都只有读和执行的权限,不能修改文件。
  • 777 - 每个人都能够读,写和执行。在web服务端,很少会设置成“777”,因为这会导致任何人都能够添加恶意的代码到你的服务器。但是,在一些情况下,你需要为你的文件夹设置成“777”比如你想上传任何文件到服务器(举个例子,上传图片到WorldPress)
  • 644 - 只有拥有者能够读和写。其他人都只能读。没有人能够执行文件。
  • 655 - 只有拥有者能够读和写,但不能执行。其他人都只能读和执行,但不能修改文件。

用命令行设置文件权限

在 Linux,你只需在文件和文件夹单击鼠标右键选择“Properties”就能改变文件权限。能够改变文件权限的地方又一个权限tab。在终端,用“chmod”命令改变文件权限。简单的说, “chmod 777”表示设置文件允许每个人可读,可写和可执行。

chmod 775 /path/to/file

希望这篇文章能够帮助你更好的理解在Unix系统中的文件权限和神奇数字“777”的来源。

原文链接https://www.maketecheasier.com/file-permissions-what-does-chmod-777-means/

上一篇 下一篇
Comments
Write a Comment