访问控制列表(ACL)
ACL:Access Control List 访问控制列表
作用:作用:实现更加灵活的权限管理,打破了三类用户的权限管理
CentOS 7 默认创建的xfs和ext4文件系统具有ACL功能
CentOS 7 之前版本,系统安装时候创建的文件系统有ACL功能,默认手工创建的ext4文件系统无ACL功 能,需手动增加。
ACL 生效 顺序:所有者,自定义用户,自定义组,其 他
ACL基本操作
- getfacl : 获取文件或目录访问控制列表
# getfacl file # 获取文件权限
# getfacl dir # 获取目录权限
- setfacl : 设置文件或目录访问权限列表
添加ACL权限
setfacl -m u:lpx:000 file # 禁止lpx 用户对file文件操作
setfacl -m g:lv:000 file # 禁止 lv 组对file文件操作
setfacl -m u:lpx:rw file # 使lpx 用户对指定file文件有读写权限
setfacl -m g:lv:rw file # 使lv组对指定file文件有读写权限
删除ACL权限
setfacl -x u:lv file # 删除lv 用户对指定file文件的ACL权限
setfacl -X g:lv file # 批量删除lv 组对指定file文件的ACL权限
ACL权限下的mask
facl的mask是高压线,是影响自定义用户和自定义组的权限,有了mask后,会与自定义的用户和组的权限做逻辑与,这之后是自定义用户和组的真实权限。
默认是没有高压线的,默认值一般都是所有自定义用户和组的最高权限累加。
如果设置了,就相当于设定了高压线,高于这个高压线的权限,会降低到高压线之下。
# setfacl -m u:lpx:rwx file # 修改file文件的acl权限,添加一个lpx用户权限
# setfacl -m g:lv:rw- file # 修改file文件的acl权限,添加一个lv组权限
# setfacl -m m:r-- file # 设置了高压线
# getfacl file4 #查看访问控制列表
# file: file
# owner: root
# group: root
user::rw-
user:lpx:rwx #effective:r--
group::r--
group:lv:rw- #effective:r--
mask::r--
other::r--
我们可以看到,设置了高压线后,自定义用户和自定义组的有效值(effective)是不超过mask的r--
ACL权限下的备份和恢复
- ACL权限的备份和恢复
# getfacl -R . > acl.txt # 将当前目录下的所有文件的权限备份到acl.txt 文件中
# setfacl --restore=acl.txt # 恢复acl.txt文件中备份的文件权限