Linux 文件权限 chmod
1 概述
Linux中,一个文件的权限细项共9项权限值。
用字符形式需9个字符来表示,如:rwxrwxrwx。
用数值形式需三个0到7的数字表示,如:750。
2 三类用户
Linux中,用户属于组,一个组包含多个用户。
操作一个文件,对应的三类用户:
1)所有者:默认,创建者为所有者。
2)属组:所有者同一组的用户。
3)其它用户:不是同一组的用户。
3 文件操作权限
用户对文件的3种操作:读r、写w、执行x。
1)读:read,表示用户能够读取文件内容。
2)写:write,表示用户能够修改文件内容。
3)执行:execute,表示用户能够执行文件,通常是批处理文件、二进制文件。
操作权限的数值表示
为定义简单,把操作权限三项信息合并为一项信息。
r用4表示,w用2表示,x用1表示。
例1:如果用户对一个文件具有权限:读+写+执行,则权限数值=4+2+1=7。
例2:如果用户对一个文件不具备读/写/执行任意一项权限,则权限数值=0+0+0=0。
例3:如果用户对一个文件具有权限:读+执行,则权限数值=4+2+1=5。
7、5、0、4,这几个值是出现频率最高的权限数值。
4 组合权限
Linux系统中,针对三类用户可以设置不同的权限,也就有三个权限数值。
例1:如果所有者的文件权限为7,所属组的文件权限为7,其它用户的文件权限为7。
则最终权限数值形式为:777。
对应字符形式为:rwxrwxrwx。
例2:如果所有者的文件权限为7,所属组的文件权限为5,其它用户的文件权限为0。
则最终权限数值形式为:750。
对应字符形式为:rwxr-x--- 。
5 查看文件权限
方法1:ls -l查看文件权限
准备数据:根目录下新建文件/test1
rm -rf /test1.txt
echo xiaobuteac.com > /test1.txt
ls -l查看根目录
ls -l /
ls -l第一部分结果说明
第一部分除最后的句号.共有10位。
第1位表示文件类型。后9位对应三类用户的基本权限。
第1位取值:d表示文件夹;-表示文件;l表示软链接。
后9位分别表示:所有者用户的读、写、执行权限;同组用户的读、写、执行权限;其它用户的读、写、执行权限。
出现字母表示有相应权限;-表示无相应位的权限。
例:test1.txt的第1部分:
-rw-r--r--. 2 root root 15 Jul 26 03:44 test1.txt
第1个-表示是文件;
接下来的rw-表示所有者用户:有读权限,有写权限,无执行权限;
接下来的r--表示组用户:有读权限,无写权限,无执行权限;
接下来的r--表示其它用户:有读权限,无写权限,无执行权限;
如果用数值表示即为:[4+2+0][4+0+0][4+0+0] ,即:644。
方法2:stat查看文件权限
stat命令查看权限,其中包含权限的数值形式与字符形式。
stat /test1.txt
其中权限数值644与上述计算一致。
6 chmod命令
chmod用于设置文件的权限。
语法
chmod [选项] 权限 文件
为指定文件设置指定权限,权限可以使用数值,以及字符增量的方式。
选项
选项 | 说明 |
---|---|
-R | 递归,为文件夹中的所有子文件夹与文件也设置权限。默认只设置指定文件本身。 |
权限表示方法
方法1:数值表示。用于直接设置9个细项权限。
例:777。表示三类用户的所有权限。
方法2:字符表示。设置某类用户的某个细项权限,其它细项权限不变。
语法:
用户类别 运算符 权限
用户类别
用户类别 | 含义 |
---|---|
u | 所有者 |
g | 属组 |
o | 其它用户 |
a | 所有用户(可省略不写) |
运算符
运算符 | 含义 |
---|---|
+ | 添加权限 |
- | 删除权限 |
= | 设置权限 |
权限
权限 | 含义 |
---|---|
r | 读 |
w | 写 |
e | 执行 |
例1:o+x。表示为所有者 添加 可执行 权限。
例2:g-w。表示为属组 取消 写 权限。
示例
准备数据:新建文件查看权限
rm -rf /test1.txt
echo xiaobuteac.com > /test1.txt
ls -l /test1.txt
例1:设置文件的三类用户都有rwx权限。
chmod 777 /test1.txt
例2:为 所有者添加可执行权限。
重建文件。
rm -rf /test1.txt
echo xiaobuteac.com > /test1.txt
默认权限:0644(rw-r--r--)。
设置权限
chmod u+x /test1.txt
查看权限
例3:为 所有者、属组、其它用户,三者都取消 读 权限。
chmod a-r /test1.txt
等价于
chmod -r /test1.txt
例4:设置文件夹/xb1以及其中所有的文件与子文件 以 777权限。
chmod -R 777 /xb1