facl文件访问控制列表


facl 针对某个用户单独设置权限,权限设置精度更高

设置facl权限

setfacl

添加facl权限

# 给用户添加权限
setfacl -m u:zhangsan:rwx file

# 给用户组添加权限
setfacl -m g:dev:r-- file

删除facl权限

# 删除指定用户的权限
setfacl -x u:zhangsan file

# 删除指定用户组的权限
setfacl -x g:dev file

清空facl权限

# 清空文件的facl权限
setfacl -b file

查看facl权限

getfacl

facl权限匹配规则

facl权限是从上到下匹配的,一旦匹配到就停止匹配

# 创建用户zhangsan
useradd zhangsan
# 给文件设置用户zhangsan的权限为---
setfacl -m u:zhangsan:--- file

# 给文件设置用户组zhangsan的权限为rw-
setfacl -m g:zhangsan:rw- file

# 查看facl权限
[zhangsan@localhost ~]$ getfacl file
# file: file
# owner: zhangsan
# group: zhangsan
user::rw-
user:zhangsan:---
group::rw-
group:zhangsan:rw-
mask::rw-
other::r--


# 使用zhangsan用户cat file
[zhangsan@localhost ~]$ cat file
cat: file: 权限不够

mask

实验

# 先创建一个目录facltest
mkdir facltest
# 将权限设置为000
chmod 000 facltest
# 针对zhangsan用户设置rwx权限
setfacl -Rm u:zhangsan:rwx facltest
# facltest目录会产生rwx权限
## 注意.变成了+
[root@localhost ~]# ls -ld facltest/
d---rwx---+ 2 root root 6 815 18:44 facltest/
## 这时候除了root和zhangsan用户,都无法访问facltest目录了

# 查看facltest目录的facl权限
[root@localhost ~]# getfacl facltest/
# file: facltest/
# owner: root
# group: root
user::---
user:zhangsan:rwx
group::---
mask::rwx
other::---