权限
导言
Unix 是一个多用户操作系统。其设计初衷并非让所有人都能访问所有文件,而是允许文件所有者指定哪些用户应拥有何种访问权限。
权限
Unix 文件系统允许用户为其拥有的文件(包括目录:“在 Unix 中,一切皆为文件”)分配三种权限类型(r、w、x)的任意组合,适用于三类用户(u、g、o)。当用户请求访问文件时,Unix 首先确定请求者相对于目标文件的用户类别,然后检查所请求的权限类型是否已分配给该用户类别。
权限类型
三种权限类型的效果各不相同,取决于它们适用于文件还是目录。
| 类型 | 文件 | 目录 |
|---|---|---|
| r | 读取文件内容 | 列出目录中文件的名称、大小、修改日期等信息。 1 |
| w | 更改 (write) 文件内容。 | 从目录中添加或删除文件。2 |
| x | 如果在命令行中自行输入文件名,Shell 将尝试执行(execute)该文件。 | 访问(读取或写入)目录3或该目录及其子目录中的任何文件,或将该目录设置为用户的工作目录。 |
Notes: 备注
| ||
与其他一些文件系统(如NTFS)不同,目录的“读取”(r)或“写入”(w)权限不会影响该目录子树中任何子目录或文件的“读取”或“写入”权限。目录的“读取”或“写入”权限由系统为该目录分配给您的用户类所设定的权限决定,而不考虑文件系统树中更高层级目录的“读取”和“写入”权限。
然而,目录的x权限会影响目录子树中更深层目录和文件的权限。要访问一个文件,用户必须对该文件路径中的每个目录都拥有x权限。换句话说,如果某个目录缺乏x权限,实际上会阻止访问该目录子树中的任何文件。
用户类别
对于给定文件,Unix 文件系统将用户分为三类:
| 类别 | 用户 |
|---|---|
| u | User. 当前文件的所有者。 |
| g | Group. 该文件所属用户组的成员。 |
| o | Others. 不属于上述任何一类的用户。这是SDF的Web服务器在Web浏览器从您的网站请求文件时使用的用户类别。1 |
Notes: 备注
| |
举例说明
文件权限信息可以通过ls命令的长列表(long listing)选项获取:ls -l
drwxr-xr-x 2 papa arpa 512 Sep 29 01:02 arpastuff
-rwxr-x--- 1 papa arpa 11402 Sep 29 01:02 hello
-rw-r----- 1 papa arpa 13 Sep 29 01:02 hello.txt
a b c
字段 a 表示文件模式,这是一个由十个单字符标志组成的字符串,用于指示文件的权限和其他信息。以下是按字符顺序排列的模式标志列表,以及每个标志可能的值的部分列表(partial list):
- 文件类型
d- 目录
-- 普通文件
- 文件所有者(用户组 u)的读取(r)权限.
r- 是
-- 否
- 文件所有者(用户组 u)的写入(w)权限.
w- 是
-- 否
- 文件所有者(用户组 u)的执行(x)权限.
x- 是
-- 否
- 文件用户组(用户组 g)的读取(r)权限.
r- 是
-- 否
- 文件用户组(用户组 g)的写入(w)权限.
w- 是
-- 否
- 文件用户组(用户组 g)的执行(x)权限.
x- 是
-- 否
- 其他用户(用户组 o)的读取(r)权限.
r- 是
-- 否
- 其他用户(用户组 o)的写入(w)权限.
w- 是
-- 否
- 其他用户(用户组 o)的执行(x)权限.
x- 是
-- 否
字段 b 是文件所有者的用户 ID。字段 c 是文件所属的用户组。
因此,对于上述 ls 列出的三个文件:
目录arpastuff
用户 papa 可以列出、添加和删除 arpastuff 中的文件,访问目录的子目录,或将该目录设为其工作目录。arpa 组中的用户和其他所有用户可以列出目录中的文件,访问目录的子目录,或将该目录设为其工作目录,但无法添加或删除文件。