目录
[1. 用户权限和切换](#1. 用户权限和切换)
[2. 权限的暂时提升](#2. 权限的暂时提升)
[3. 权限的概念](#3. 权限的概念)
[4. 角色分类](#4. 角色分类)
[5. 文件属性](#5. 文件属性)
[6. 权限更改](#6. 权限更改)
[7. root用户权限特性](#7. root用户权限特性)
[8. 可执行权限注意事项](#8. 可执行权限注意事项)
[9. 更改拥有者和所属组](#9. 更改拥有者和所属组)
[10. 权限的二进制表示](#10. 权限的二进制表示)
[11. 目录权限](#11. 目录权限)
[12. 默认权限和umask](#12. 默认权限和umask)
[13. 多人协作权限管理](#13. 多人协作权限管理)
[14. 粘滞位 (Sticky Bit)](#14. 粘滞位 (Sticky Bit))
1. 用户权限和切换
Linux系统中包括两种主要用户类型:
-
root超级用户:拥有最高权限
-
普通用户:权限受限
切换用户命令:
-
su或su -:从普通用户切换成超级用户 -
Ctrl+D:退回普通用户
su/和su - 的区别:
-
su/:目录不变,仅切换用户身份 -
su -:重新登录,路径变化到新用户的家目录
2. 权限的暂时提升
sudo命令 :前面加上sudo,输入普通账号密码,即可短暂提升权限。
使用场景 :安装软件(到/user/bin中)
原理:为什么输入普通用户的密码可以提升权限到root?
-
白名单机制:信任用户名单
-
管理员可以将普通用户加入到白名单中
-
只有在白名单的用户才可以短暂提权
注意 :普通用户加上sudo后,如果不在白名单中,只会报错"不信任"。
3. 权限的概念
作用:控制用户行为,防止错误发生。
权限机制:
-
首先限制的是角色(人)
-
其次要求目标必须是对应属性
-
权限 = 角色 + 目标属性
4. 角色分类
Linux系统中有三种角色:
-
拥有者 (Owner):文件的所有者
-
所有组 (Group):文件所属的用户组
-
其他用户 (Other):既不是所有者也不在所属组的用户
所有组的作用:假设一个文件要让同组的人看,但不想让对手看到,就可以将同组放到所有组,对手保持other。这样做可以进行更加精细化的权限管理。
5. 文件属性
文件属性包括三种权限:
-
读 (r):读取文件内容
-
写 (w):修改文件内容
-
可执行 (x):执行文件

当用ll查看文件的属性时,会出现如:-rw-r--r--
权限解析:
-
第一个
-:文件类型标识 -
之后有三组三个字符:
-
第一组 (rw-):对于拥有者,这个文件可读可写不可执行
-
第二组 (r--):对于所属组,这个文件可读不可写不可执行
-
第三组 (r--):对于其他用户,这个文件可读不可写不可执行
-
因此文件的权限就可以用"角色+目标属性"描述。
6. 权限更改
作为拥有者,可以用chmod修改权限。
角色标识:
-
u:用户(拥有者) -
g:所属组 -
o:其他用户
示例:
bash
chmod u-r test.txt # 减去拥有者的读权限
chmod u+r test.txt # 加上拥有者的读权限

重要规则:
-
当减去读权限后,访问文件会出现"Permission denied"
-
组成员有但所有者没有的权限,所有者也不可以执行
-
在CentOS下,用户角色确定顺序:拥有者 → 所属组 → other
7. root用户权限特性
root用户(超级用户)拥有最高权限,可以绕过普通权限限制。

可以看到,虽然对于other不能写,但是root依旧可以读写文件。
8. 可执行权限注意事项
重要:拥有可执行权限 ≠ 文件可执行,还需要文件本身是有效的可执行程序。
9. 更改拥有者和所属组
命令:
-
chown:更改文件拥有者 -
chgrp:更改文件所属组

限制 :普通用户不能直接把文件所有者改为别人,否则就乱套了,需要sudo短暂提权后才能更改。
10. 权限的二进制表示
由于rwx权限都为非黑即白,可以直接用0和1表示是否有对应的权限。
二进制表示:
-
r= 4 (100) -
w= 2 (010) -
x= 1 (001)
示例:
-
rw-= 110(二进制)= 6(十进制) -
rw-rw-r--= 664

快捷修改权限:
bash
chmod 664 1.txt
11. 目录权限
目录权限的特殊性:
-
想进入一个目录,需要
x权限(可执行权限) -
r权限:查看目录的文件列表 -
w权限:在目录中创建、删除文件

将目录权限改为666(只保留读写)后,就无法进入了。
默认设置:创建目录时,默认给予rwx权限。
Linux用户隔离方式:只有目录的拥有者才拥有完整的rwx权限。
12. 默认权限和umask
新建文件的默认权限:
-
普通文件:666(可读可写不可执行)
-
目录文件:777(可读可写可执行)
umask(权限掩码):
-
最终权限 = 默认权限 & (~umask)
-
原因:凡是在umask中出现的权限都不应该在最终权限中出现
umask的作用:
-
在特殊情况下配置权限掩码可以控制默认权限
-
让代码权限设置更加可控
13. 多人协作权限管理
场景:先用root账号在普通用户路径下创建一个文件,设置成别人不可读写。

关键发现:
-
普通账户不可读写,但是可以删除文件
-
这是合理的,因为删除与文件的权限无关,只与路径权限有关
-
一般情况下不会出现别人的文件
协作方案 :
既然用户无法进入到别的用户的目录,那么如何两人一起配置文件?
- 可以放到共享目录(如根目录下的共享文件夹)
14. 粘滞位 (Sticky Bit)
粘滞位 (t):在有t属性的目录里,就算有权限也不能删别人的文件。
设置粘滞位:
bash
chmod +t tmp
设置了粘滞位的目录会带上t标志。

应用场景 :公共目录(如/tmp)通常设置粘滞位,防止用户误删他人文件。