Linux mask有效权限详解
[root@localhost /]# getfacl project
#file: project <-文件名
#owner: root <-文件的属主
#group: tgroup <-文件的属组
user::rwx <-用户名栏是空的,说明是所有者的权限
group::rwx <-组名栏是空的,说明是所属组的权限
other::--- <-其他人的权限
[root@localhost ~]# setfacl -m u:st:rx /project
#给用户st设定针对project目录的rx权限
[root@localhost /]# getfacl project
#file: project
#owner: root
#group: tgroup
user::rwx
user:st:r-x <-用户 st 的权限
group::rwx
mask::rwx <-mask 权限
other::---
mask 权限,指的是用户或群组能拥有的最大 ACL 权限,也就是说,给用户或群组设定的 ACL 权限不能超过 mask 规定的权限范围,超出部分做无效处理。
举个例子,如果像上面命令那样,给 st 用户赋予访问 project 目录的 r-x 权限,此时并不能说明 st 用户就拥有了对该目录的读和访问权限,还需要和 mask 权限对比,r-x 确实是在 rwx 范围内,这时才能说 st 用户拥有 r-x 权限。
需要注意的是,这里将权限进行对比的过程,实则是将两权限做“按位相与”运算,最终得出的值,即为 st 用户有效的 ACL 权限。这里以读(r)权限为例,做相与操作的结果如表 1 所示:
A | B | and |
---|---|---|
r | r | r |
r | - | - |
- | r | - |
- | - | - |
但是,如果把 mask 权限改为 r--,再和 st 用户的权限 r-x 比对(r-- 和 r-w 做与运算),由于 r-w 超出 r-- 的权限范围,因此 st 用户最终只有 r 权限,手动赋予的 w 权限无效。这就是在设定 ACL 权限时 mask 权限的作用。
大家可以这样理解 mask 权限的功能,它将用户或群组所设定的 ACL 权限限制在 mask 规定的范围内,超出部分直接失效。
mask 权限可以使用 setfacl 命令手动更改,比如,更改 project 目录 mask 权限值为 r-x,可执行如下命令:
[root@localhost ~]# setfacl -m m:rx /project
#设定mask权限为r-x,使用"m:权限"格式
[root@localhost ~]# getfacl /project
#file:project
#owner:root
#group:tgroup
user::rwx
group::rwx
mask::r-x <--mask权限变为r-x
other::---
所有教程
- socket
- Python基础教程
- C#教程
- MySQL函数
- MySQL
- C语言入门
- C语言专题
- C语言编译器
- C语言编程实例
- GCC编译器
- 数据结构
- C语言项目案例
- C++教程
- OpenCV
- Qt教程
- Unity 3D教程
- UE4
- STL
- Redis
- Android教程
- JavaScript
- PHP
- Mybatis
- Spring Cloud
- Maven
- vi命令
- Spring Boot
- Spring MVC
- Hibernate
- Linux
- Linux命令
- Shell脚本
- Java教程
- 设计模式
- Spring
- Servlet
- Struts2
- Java Swing
- JSP教程
- CSS教程
- TensorFlow
- 区块链
- Go语言教程
- Docker
- 编程笔记
- 资源下载
- 关于我们
- 汇编语言
- 大数据
- 云计算
- VIP视频