一、ACL是什么
为了实现对linux下文件权限更细化的控制,linux提供了acl的方式实现。访问控制列表(Access Control Lists,ACL)
chmod命令把文件权限分为u,g,o三种权限组,而acl可以对每一个文件或目录设置更细化的文件权限,
例如:指定某用户对某一个文件/目录具有某种权限。
二、场景
共享目录/test 权限为root root 700,实现时,不允许更改/test 的拥有者和属组
让test1用户具备rx
权限
让test2 用户具备rw
权限
让test1组具备rwx
权限
让test2组具备rw
权限
通过ACL的方式实现
可以针对一个文件/目录
,授予一个用户/组
指定的权限
三、配置方法
3.1 针对用户设置
语法:setfacl -m -R u:用户名:权限 文件/目录
setfacl -Rm u:test1:rx /mnt/test
setfacl -Rm u:test2:rw /mnt/test
-m 设置
-R 为递归,让目录下的文件可以继承
u:用户名:权限
3.2 查看文件的acl
语法 :getfcal 文件/目录名
getfacl /test
3.3 针对组设置
语法:setfacl -m -R g:用户名:权限 文件/目录
setfacl -Rm g:test1:rwx /test
setfacl -Rm g:test2:rw /test
3.4 删除
setfacl -x g:test1 /test
-x
删除单条acl配置,针对用户/组就可以了,不需要加上权限
setfacl -b /mnt/test
-b
删除文件/目录的所有acl配置
3.5 对目录下面新创建的目录不会继承,因为以上命令只是对当前目录生效
解决: 针对该目录设置默认acl
语法:setfacl -m -R d:g:用户名:权限 文件/目录
d:
为default的配置
setfacl -m d:u:test1:r-x /test
3.6 修改mask
getfacl查看时,如果有一个参数effective,为有效权限的意思
mask就是有效权限的范围,配置的acl权限和mask的权限不同以mask的权限为准
语法:setfacl -m m:rwx 文件/目录
如果没有配置默认值,支队当前生效,mask也可以设置默认值
语法:setfacl -m d:m:rwx 文件/目录