1. 权限
1.1 是什么?
权限的本质是:控制用户对文件、目录的访问与操作权限。
1.2. 为什么?
(1)控制用户的行为,防止错误的发生。
(2)理解:
权限首先限制的是角色(人)。
权限要求目标必须具备相应的属性(读、写、执行)。
1.3. 角色
角色分为三种分别是:拥有者、所属组、other
拥有者指的是创建文件/目录的用户。
什么是所属组?为什么要有所属组?
每个文件 / 目录都有一个所属用户组(可理解为 “团队”),系统里的用户可加入多个组,访问文件时,若用户属于该文件的 “所属组”,则匹配 “组权限” 规则。所属组可以高效分配权限(替代逐个用户配置)和实现“组内共享,组外受限”等。
除了拥有者和所属组剩下的就是other。
1.4. 文件类型和访问权限
文件类型主要分为7种:
- 普通文件:用
-
表示(如上图所示) - 目录文件:用
d
表示 - 块设备文件:用
b
表示 - 字符设备文件:用
c
表示 - 管道文件:用
p
表示 - 套接字文件:用
s
表示 - 符号链接(软链接):用
l
表示
访问权限分为3种:
- r(read):表示可读,即可以查看文件内容或目录中的文件列表。
- w(write):表示可写,即可以修改文件内容或在目录中创建 / 删除文件。
- x(execute):表示可执行,即可以运行可执行文件或进入目录(对目录而言,x 权限允许使用
cd
命令进入)。
2. ⽂件访问权限的相关设置方法
1. chmod

三位8进制数字:

2. chown

3. chgrp
3. 重点部分:
3.1 能改任何人的文件权限吗?
用户只能更改自己的文件权限
3.2 没有权限会怎么办?
系统会拒绝让我们访问
3.3 确定权限信息的时候,系统会先确定用户是谁?拥有者、所属组、还是other
在centos下,用户角色只确定一次,顺序是:拥有者、所属组、other
3.4 root用户的权限?不受权限的约束!
3.5 如何理解可执行?
- 对文件:
x
权限是 “允许系统将文件作为程序执行” 的开关。 - 对目录:
x
权限是 “允许用户进入目录并访问其内容” 的钥匙。
4. 理解Linux多用户之间是怎样相互“隔离”的
rwx分别对目录意味着什么?
如果对目录没有r,就无法查看目录里的文件。
如果对目录没有w,无法再指定目录内新建文件。
如果对目录没有x,无法进入指定目录。
默认情况下我们新建一个目录,rwx权限都要有!
Linux多用户之间是怎样相互“隔离”的?
任何用户无法进入其他用户的家目录。
如何共同修改和查看一个配置文件?
在跟目录下建立一个共享目录,开放rwx权限,这样就能多个用户共同修改和查看一个配置文件了。但是x权限开放之后其他用户都可以删除这个目录,所以Linux还有一个权限标志位 t
叫 “粘滞位(Sticky Bit)” ,主要用于目录,核心作用是 “保护共享目录里的文件,防止用户误删他人创建的内容”
chmod +t 目录名 # 给目录加粘滞位(如 chmod +t /shared_dir)
chmod 1777 目录名 # 数字方式,1 代表粘滞位,777 是用户、组、其他权限
5. 缺省权限
为什么默认权限是我们看到的样子?
对于普通文件:起始权限666,默认不带可执行。
对于目录:起始权限777,默认携带x 。
而之所以出现上图的情况是因为系统默认会存在一个叫做掩码的概念;
最终权限 = 起始权限 & (~umask)
例如:
umask 0002
后三位是002
(八进制 ),转为二进制是000 000 010
(对应所有者、所属组、其他用户权限位 );- 目录最大默认权限
777
转为二进制是111 111 111
。
所有者:111 - 000 = 111(7)
所属组:111 - 000 = 111(7)
其他用户:111 - 010 = 101(5)
所以最终的权限为上图所示的775
umask目的是什么?
希望凡是umask中出现的权限,都不应该在最终权限出现。
如 umask 0022
时,文件最终权限 644
(其他用户写权限被屏蔽 )、目录 755
(其他用户写权限被屏蔽 ),防止文件因默认权限太开放,被无关用户随意修改、删除。
为什么要有umask?
通过动态调整新文件 / 目录的默认权限,既避免了权限过度开放导致的安全问题,又简化了权限配置流程,让不同用户、场景能灵活管控文件访问权限,是 Linux 多用户环境下保障系统有序、安全运行的关键机制。