Linux 文件系统权限复习笔记
一、特殊权限数字设置
除基础 rwx 权限外,Linux 还有 SUID、SGID、Sticky Bit 三大特殊权限,支持字符、四位数字两种配置方式。
1. 字符方式配置
- SUID(属主特殊权限) 开启:
chmod u+s 文件名/目录名取消:chmod u-s 文件名/目录名 - SGID(属组特殊权限) 开启:
chmod g+s 文件名/目录名取消:chmod g-s 文件名/目录名 - Sticky Bit 粘滞位(其他用户权限) 开启:
chmod o+t 目录名取消:chmod o-t 目录名
标识说明:权限位显示
s/t代表原有执行权限 x;显示S/T代表无执行权限,特殊权限不生效。
2. 四位数字方式配置
命令格式:chmod 四位数字 文件名/目录名规则:第一位为特殊权限位,后三位为普通 u/g/o 基础权限
表格
| 特殊权限组合 | 二进制 | 数字 |
|---|---|---|
| 无特殊权限 | 000 | 0 |
| Sticky Bit | 001 | 1 |
| SGID | 010 | 2 |
| SGID + Sticky Bit | 011 | 3 |
| SUID | 100 | 4 |
| SUID + Sticky Bit | 101 | 5 |
| SUID + SGID | 110 | 6 |
| SUID + SGID + Sticky Bit | 111 | 7 |
示例:chmod 4755 test,4 代表开启 SUID,755 为基础权限 rwxr-xr-x。
二、ACL 访问控制列表
1. 作用
基础权限仅划分所有者、所属组、其他用户三类,权限管控粒度粗。ACL 可针对指定单个用户 / 用户组单独设置权限,实现精细化授权。 识别特征:文件 / 目录权限末尾带有+符号,代表已配置 ACL。
2. 核心命令
查看 ACL
bash
运行
getfacl 文件名/目录名设置与管理 ACL(setfacl)
表格
| 参数 | 功能 |
|---|---|
| -m | 添加 / 修改 ACL 权限 |
| -x | 删除单条指定用户 / 组的 ACL |
| -b | 清空所有 ACL 权限 |
| -d | 为目录设置默认 ACL(子文件 / 目录自动继承) |
| -k | 删除目录默认 ACL |
| -R | 递归配置目录及内部文件 |
常用语法:
bash
运行
# 给指定用户设置权限 setfacl -m u:用户名:权限 目标文件/目录 # 给指定用户组设置权限 setfacl -m g:组名:权限 目标文件/目录 # 删除单个用户 ACL setfacl -x u:用户名 目标 # 清空全部 ACL setfacl -b 目标3. mask 说明
mask 是 ACL 的权限上限,限制除文件所有者、other 之外,所有 ACL 用户 / 组的最大可用权限。
4. 实操案例
需求:目录/project归属 QQgroup 组,额外给用户 pt 分配 r-x 权限
bash
运行
# 创建组、用户并配置归属 groupadd QQgroup useradd zhangsan useradd lisi gpasswd -M zhangsan,lisi QQgroup chown root:QQgroup /project chmod 770 /project # 配置 ACL 权限 useradd pt setfacl -m u:pt:r-x /project三、权限掩码 umask
1. 作用
umask 用于控制新建文件、目录的默认权限。
2. 权限计算规则
实际默认权限 = 理论最大权限 - umask 值
- 普通文件:理论最大权限
0666(系统默认文件无执行权限) - 目录:理论最大权限
0777(目录必须拥有执行权限才可进入)
3. 基础操作
bash
运行
# 查看当前 umask 值 umask # 临时修改(仅当前终端生效) umask 掩码值 # 永久修改(所有用户) vim /etc/profile # 文件末尾添加:umask 掩码值 source /etc/profile # 永久修改(仅当前用户) vim ~/.bashrc # 文件末尾添加:umask 掩码值 source ~/.bashrc4. 随堂练习计算
- umask = 077
- 普通文件:666 - 077 = 600 → 权限:
-rw-------
110 110 110 (文件初始 0666) & 111 000 000 (取反后的 umask) -------------------------------- 110 000 000- 目录:777 - 077 = 700 → 权限:
drwx------
111 111 111 (目录初始 0777) & 111 000 000 (取反后的 umask) -------------------------------- 111 000 000- umask = 033
- 普通文件:666 - 033 = 644 → 权限:
-rw-r--r--
110 110 110 (文件初始 0666) & 111 100 100 (取反后的 umask) -------------------------------- 110 100 100- 目录:777 - 033 = 744 → 权限:
drwxr--r--
111 111 111 (目录初始 0777) & 111 100 100 (取反后的 umask) -------------------------------- 111 100 100运算本质
umask 是权限屏蔽码,Linux 权限计算依靠二进制按位取反 + 按位与,不是十进制数学减法。
四、核心知识点速记
- ACL 权限:用于对单独用户 / 组精细化授权;查权限用
getfacl,配权限用setfacl -m,清权限用setfacl -b。 - umask 掩码:文件基准 666、目录基准 777,通过减法计算默认权限;区分临时修改、全局永久修改、个人永久修改三种方式。
