DO NOT chmod 777
!
文件权限
在Linux中,对文件的访问由操作系统使用文件权限、属性和所有权进行控制。
每个文件由特定用户和组拥有,并为三种不同类别的用户分配权限访问权限:
三类用户
- 文件所有者;
- 群组成员;
- 其他所有人。
三个权限
- 读权限;
- 写权限;
- 执行权限。
查看
可以用ls -l
查看文件的权限,例如:
1 | ls -l install.sh |
第一个字符是文件类型,它可以是常规文件 (-
)、目录 (D
)、符号链接 (L
) 或任何其他特殊类型的文件。
接下来的就个字符(即rw-r--r--
)表示文件权限,三个三元组,每个三个字符。
- 第一个三元组(此处为
rw-
):所有者权限; - 第二个三元组(此处为
r--
):组权限; - 第三个三元组(此处为
r--
):其他人权限。
权限的数字值
- 读 -
r
-4
- 写 -
w
-2
- 执行 -
x
-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
就代表rwxr-x---
,即:
- 属主:
rwx
=4+2+1=7; - 属组:
r-x
=4+0+1=5; - 其他:
---
=0+0+0=0。
有些时候会用4位数字,此时多出的以为在第一位,代表:
setuid
=4
;setgid
=2
;sticky
=1
;no changes
=0
。
想要用数字(八进制)查看文件权限,需要用stat
命令,例如:
1 | stat -c "%a" install.sh |
和文件权限有关的两个命令
chown
假设服务器上有一个PHP应用程序以用户www
身份运行,请执行以下操作:
1 | chown -R www: /var/www |
chmod
chmod
的用法在chown
那里已经提到过了,即:
1 | chmod [权限] [文件] |
这里需要注意的777
这个权限,它等于在说任何人都能对这个文件做任何事情。这对于Linux(尤其是服务器来说)是十分危险的。