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
权限(Permissions)也有三种操作。读(read)写(write)和执行(execute)
当你将分组和权限结合起来,你就能控制谁能够进入文件以及他们能对这些文件做什么操作了
举个例子,拥有者Owner通常拥有全部的权限(读,写,执行)。如果你不是文件/文件夹的拥有者,你必须把文件的所有权改成你的名字,或者将其他分组(Group 和 Other)的权限设置为读,写和执行。在web服务器,如果你不能上传文件,可能是因为你不是目标文件夹的拥有者,或者你没有充分的权限在文件夹里添加文件。
在对分组和权限有了基本认识后,我们来深入探究“777”或者“775”是怎么来的?
每个文件和文件夹包含一个8字节的数据来控制权限。在最基本的二进制模式下,是“000”,表示没有权限。当你设置“读”的权限,它加4个字节到这个数据中,变成了“100”(在二进制)或者“4”在十进制。设置“写”的权限又会加2个字节到数据中,把它变成“010”或“2”在十进制。最后,设置“执行”权限加1个字节到数据中,导致“001”,或十进制的“1”。简短来说:
当我们想要设置权限,我们只需要把上面的数字加起来。比如,设置读和写的权限,我们会用“6”(4+2)表示。读写和执行,就是“7”(4+2+1)。以下列出的是每个数字的含义
0 - 没有权限
1 - 执行
2 - 写
3 - 写和执行
4 - 读
5 - 读和执行
6 - 读和写
7 - 读,写和执行
你设置怎样的数字依赖于你想对这个文件加怎样的权限。
那三个数字“777”表示什么呢?第一个数字分配给Owner,第二个数字分配给Group,第三个数字分配给Other。那么“777”表示的权限是,每个人都可以读,写和执行这个文件。这里有一些常见的权限用法:
在 Linux,你只需在文件和文件夹单击鼠标右键选择“Properties”就能改变文件权限。能够改变文件权限的地方又一个权限tab。在终端,用“chmod”命令改变文件权限。简单的说, “chmod 777”表示设置文件允许每个人可读,可写和可执行。
chmod 775 /path/to/file
希望这篇文章能够帮助你更好的理解在Unix系统中的文件权限和神奇数字“777”的来源。
原文链接https://www.maketecheasier.com/file-permissions-what-does-chmod-777-means/
上一篇 下一篇