用户身份与文件权限---文件访问控制列表
一般权限、特殊权限、隐藏权限的一个共性——权限时针对某一类用户设置的。
如果希望对某个指定用户进行单独权限控制,需要用到文件的访问控制列表(ACL)
- 基于普通文件或目录设置ACL,其实是针对指定用户或用户组设置文件或目录的操作权限
- 针对某个目录设置了ACL,则目录中文件会继承其ACL
- 若针对文件设置了ACL,则文件不再继承其所在目录的ACL
1,setfacl
命令
setfacl
命令用于管理文件的ACL规则,格式为 setfacl [参数] 文件名称
- 文件的ACL提供的是在所有者、所属组、其他人的 rwx 之外的特殊权限控制
- 使用setfacl命令可以针对单一用户或用户组、单一文件或目录来进行 rwx 的权限控制
- 针对目录文件需要用
-R
递归参数 - 针对普通文件使用
-m
参数 - 删除某个文件的ACL,使用
-b
参数
示例:为普通用户增加 /root
的 rwx 权限
[root@study doc]# su - chen
Last login: Wed Dec 19 17:44:47 CST 2018 on pts/0
[chen@study ~]$ cd /root
-bash: cd: /root: Permission denied
[chen@study ~]$ exit
logout
[root@study doc]# setfacl -Rm u:chen:rwx /root
[root@study doc]# su - chen
Last login: Thu Dec 20 15:04:42 CST 2018 on pts/0
[chen@study ~]$ cd /root
[chen@study root]$ ls
backup.taar.gz linux mysql80-community-release-el7-1.noarch.rpm
[chen@study root]$ echo "for test" > test
[chen@study root]$ exit
logout
[root@study doc]# ls -ld /root/
dr-xrwx---+ 5 root root 4096 Dec 20 15:06 /root/
注意:文件的权限最后一个点(.)变成了加号(+),这意味该文件已经设置了ACL
2,getfacl
命令
getfacl
用于显示文件上设置的ACL信息,格式为 getfacl 文件名称
示例:
显示 root 用户家目录的所有 ACL 信息
[root@study doc]# getfacl /root
getfacl: Removing leading '/' from absolute path names
# file: root
# owner: root
# group: root
user::r-x
user:chen:rwx
group::r-x
mask::rwx
other::---
删除 /root
的ACL
[root@study doc]# setfacl -Rb /root
[root@study doc]# getfacl /root
getfacl: Removing leading '/' from absolute path names
# file: root
# owner: root
# group: root
user::r-x
group::r-x
other::---
[root@study doc]# ls -ld /root/
dr-xr-x---. 5 root root 4096 Dec 20 15:06 /root/
文件权限的最后一个加号(+)变成了一个点(.)