文件权限是 Linux 文件系统中一个很重要的组成部分,它决定着谁可以对一个文件做什么操作
1、查看权限
查看权限的方法很简单,只需要用ls -l 命令就能查看,每行的第一个字段包含了对权限的描述
> ls -l # drwxrwxr-x 2 user user 4096 Sep 12 16:05 folder # -rw-rw-r-- 112 user user 12 Sep 12 16:00 file
以上面这个例子来说,这里对 file 的描述是 -rw-rw-r--,对folder的描述是 drwxrwxr-x
但这长长的一串东西表示的究竟是啥,别急,下面我们来一步步搞清楚每一个字符所代表的含义
第一个字符表示的是文件类型,实际上它并不属于权限描述的一部分,常见的文件类型有七种
普通文件 (-)、目录 (d)、链接 (l)、块设备文件 (b)、字符设备文件 ©、管道文件 §、套接字文件 (s)
普通文件、目录、链接这三种类型的文件相信大家都很熟悉,这里不再赘述
块设备例如硬盘、字符设备例如鼠标和键盘、管道文件用于进程通信、套接字文件用于网络通信
后九个字符才是真正表示这个文件的权限的,九个字符中每三个字符分为一组
每组分别表示:所有者权限 ( User, u)、所属组权限 ( Group, g )、其他用户权限 ( Other,o)
每组三个字符分别表示:读取权限 ( Readable,r )、写入权限 ( Writable,w)、执行权限 ( Execute, x )
若对应没有对应的权限,则用 - 表示
下面以file 的权限描述rw-rw-r-- 为例(ls -l 第一个字段省去第一个字符)
字符位置 | 字符含义 | 具体字符 | 具体含义 |
1 ~ 3 | 所有者权限 | rw- |
可读取,可写入,不可执行 |
4 ~ 6 | 所属组权限 | rw- |
可读取,可写入,不可执行 |
7 ~ 9 | 其他用户权限 | r-- |
可读取,不可写入,不可执行 |
再来个 folder
的权限描述 drwxrwxr-x
( ls -l
第一个字段省去第一个字符)
字符位置 | 字符含义 | 具体字符 | 具体含义 |
1 ~ 3 | 所有者权限 | rwx |
可读取,可写入,可执行 |
4 ~ 6 | 所属组权限 | rwx |
可读取,可写入,可执行 |
7 ~ 9 | 其他用户权限 | r-x |
可读取,不可写入,可执行 |
2、修改权限
在 Linux 中,修改文件权限可以使用 chmod
命令,具体使用方法如下:
> chmod 文件权限 file
这里所写的文件权限,可以有两种表示方法,一种是数字表示法,一种是文字表示法
(1)数字表示法
数字表示法是用三个八进制数字表示文件权限,这里的问题在于权限描述和八进制数字之间怎么进行转换呢
其实方法很简单,可以用二进制作为中间过渡,八进制和二进制之间的转换相信大家都懂,这里不再细说
而权限描述和二进制之间的转换,按照有权限值为 1,无权限值为 0 的规则进行就好,举两个例子
权限符:rw- rw- r-- 二进制:110 110 100 八进制: 6 6 4
权限符:rwx rwx r-x 二进制:111 111 101 八进制: 7 7 5
(2)文字表示法
文字表示法是用特定的标识符表示对应的用户和权限,可以给特定的用户增加或删除特定的权限
用户:所有者用 u 表示 ( User ),所属组用 g 表示 ( Group ),而其他用户用 o 表示 ( Other )
权限:读取权用 r 表示 ( Readable ),写入权用 w 表示 ( Writable ),执行权用 x 表示 ( Execute )
# 所有者(u) 增加(+) 执行权限(x) > chmod u+x file # 所属组(g) 减少(-) 写入权限(w) > chmod g-w file # 其他用户(o) 重新指定(=) 访问权限 > chmod o=rw file
3、权限掩码
权限掩码由四个八进制的数字组成,它和默认权限一起,决定着新建文件和新建目录的权限
三者之间的关系如下:默认权限 - 权限掩码 = 新建文件或新建目录的权限
默认权限是确定的,在 Linux 中,文件的默认权限是 666,目录的默认权限是 777
我们可以使用 umask 命令检查和修改权限掩码,如果不加修改,默认的权限掩码是 0022
那么此时,新建文件的权限是 666 - 0022 = 644,新建目录的权限是 777 - 0022 = 755
4、目录权限
最后还要注意一下,对于目录而言,读取权限 ®、写入权限 (w)、执行权限 (x) 所代表的含义
可读取 ( r ):可以使用 ls 命令列出目录中的内容
可写入 ( w ):可以在目录中新建、删除、修改文件
可执行 ( x ):可以使用 cd 命令切换到该目录
文章知识点与官方知识档案匹配,可进一步学习相关知识