Linux-ACL权限

来源:互联网 发布:python串口编程实例 编辑:程序博客网 时间:2024/04/30 10:34

ACL   access control list  访问控制列表

1 ACL权限简介

当你了解了Linux中的属主属组其他人权限后,就会发现,这样的权限划分并不能满足我们的需求。比如你有个文件,你的权限为rwx,文件所属组的权限为rwx,而其它人没有权限。现在需要给某个用户分配rx权限,那么在不打破现在属主属组其它人的权限的情况下,就没有办法实现这种权限分配了。那么此时就用到了ACL权限。

2 查看、开启、设定与删除ACL权限

    2.1 查看

    ACL权限是作用于分区的,属于挂载权限,当你挂载的时候指定使用ACL权限才会开启。

    dumpe2fs -h /dev/sda1  

    #查看指定分区详细文件系统信息,从而得知该分区的ACL权限情况  -h 表示仅显示超级块分区信息


    2.2 开启

    在上一步的查看中,如果指定的分区没有开启ACL权限,那么就需要我们手动开启。

    临时开启:

    mount -o remount,acl /   # mount -o remount,acl  /dev/sda1  重新挂载指定分区

    # 重新挂载根分区,并加入ACL权限

    永久开启:

    修改配置文件  vim /etc/fstab 

    (defaults,acl)  在defaults后加上 acl  

    不过我这里的defaults 已经包含 acl 就不必再额外加acl了

    

    mount -o remount /

    #重新挂载文件系统或重启系统,使修改生效

    2.3 设定

    查看文件的ACL权限以便管理ACL权限   getfacl  文件名

    设定文件的ACL权限  setfacl 选项 文件名

     选项:

     -m 设定ACL权限

     -x  删除指定的ACL权限

     -b  删除所有的ACL权限

     -d 设定默认的ACL权限

     -k  删除默认ACL权限

     -R 递归设定ACL权限

     setfacl -m u:testuser:rx /testdir

     # 给用户 testuser 赋予 r-x 权限,使用 u:用户名:权限 格式


     # 给用户组 testgroup 赋予 r-x 权限,使用 g:组名:权限 格式 

 

    2.4 删除 

    setfacl -x u:testuser 文件名  #删除指定文件的指定用户的ACL权限

    setfacl -b 文件名  #删除指定文件的所有用户的ACL权限

3 最大有效权限

在getfacl 命令的输出中,我们可以看到一个 mask 值,如下图:


mask是用来指定最大权限的。如果我们给用户赋予了ACL权限,是需要和mask的权限进行“与”运算,才能得到用户的真正权限。所以最大有效权限是给用户设定的权限与mask相与的结果。

设定mask的值:  setfacl -m m:rwx 文件名

比如针对 testdir 给用户 testuser 分配的权限为 rwx

而 mask 为 r-x  那么用户的实际权限为 r-x 如下图:

'与' 运算结果为 r-x


4 默认ACL权限和递归ACL权限

递归ACL权限:

setfacl -m u:testuser:rx -R testdir/   

# 递归的把testdir目录以及其下的所有文件给testuser分配  rx   ACL权限 仅针对目录

默认ACL权限:

默认ACL权限的作用是如果给父目录设定了默认ACL权限,那么父目录下的所有新建的子文件都会继承父目录的ACL权限。

setfacl -m d:u:testuser:rw -R  /home/testdir # 赋予目录默认权限 仅针对目录有效


1 0
原创粉丝点击