Linux 文件权限 chmod

1 概述

img

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 /

img

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

img

其中权限数值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

img

img


例1:设置文件的三类用户都有rwx权限。

chmod 777 /test1.txt

img


例2:为 所有者添加可执行权限。

重建文件。

rm -rf /test1.txt
echo xiaobuteac.com > /test1.txt

默认权限:0644(rw-r--r--)。


设置权限

chmod u+x /test1.txt

查看权限

img


例3:为 所有者、属组、其它用户,三者都取消 读 权限。

chmod a-r /test1.txt

等价于

chmod -r /test1.txt

img


例4:设置文件夹/xb1以及其中所有的文件与子文件 以 777权限。

chmod -R 777 /xb1