Linux权限管理——ACL权限
我们已经知道Linux的文件有所有者,所属组,其他人三种权限,但这是远远不够的,比如说,有一个project,项目管理员将所有项目人员添加到该项目的所属组中,分配权限770,有一天,临时来了一个成员,该成员需要先进行学习,然后才能工作,这时我们需要对该成员对project分配读和可执行的权限,不能将其他*限设为5,文件只有一个所属组,所以对project分配两个所属组的方式不成立,显然此时的权限管理方式无法满足要求,这时候就用到ACL权限了,所谓的acl权限,可以简单的理解为为某一用户或某一组分配不属于所有,所属组,其他人的额外权限。
1)
acl权限是对文件系统的管理,但它需要文件所在的分区支持acl权限
#查看文件所在分区
dumpe2fs -h 分区
若分区不支持acl权限:
#临时使分区支持acl权限,重新挂载分区支持acl权限
mount -o remount,acl 分区
#永久生效,修改配置文件,重启或重新挂载
vi /etc/fstab
mount -o remount /
注意:/etc/fstab文件是系统启动时自动检测挂载分区的识别文件,如果想让系统启动时自动挂载某一分区,可手动添加,注意添加格式
2)
#设定acl权限
#setfacl 选项 文件名
#-m 设定acl权限
setfacl -m u:用户名:权限 文件
setfacl -m g:组名:权限 文件
#查看acl权限
getfacle 文件名
#删除acl权限
setfacl -b 文件名 删除该文件下的所有acl权限
setfacl -x u:用户名 文件名 删除指定用户的acl权限
setfacl -x g:组名 文件名 删除指定组的acl权限
3)
从getfacl中我们看到有个mask类权限,称之为最大有效权限,就是说我们在给文件赋予acl权限时,最终得到的是赋予的权限与mask权限的“与运算”结果
我们可以修改mask的权限
修改mask
setfacl -m m:权限 文件名
通过对mask权限的设置,可以避免权限赋予过大的问题
4)
递归acl权限和默认acl权限
递归针对已经存在的文件
该目录下所有的文件都具有与目录相同的acl权限(注意-R位置)
setfacl -m u:用户名:权限 -R 目录
setfacl -m g:组名:权限 -R 目录
默认针对新添加的文件
该目录下新添加的文件都具有与目录相同的acl权限
setfacl -m d:u:用户名:权限 目录
setfacl -m d:g:组名:权限 目录