Linux系统中关于ACL的简单介绍

一、什么是ACL,及其作用是什么?##

: 传统的权限设置仅有三种身份(ower、group、other),搭配三种权限(read、write、execute),并没有办法单纯针对某一个用户或某一个组来设置特定的权限需求。为了解决这一问题,就提出了ACL的办法。

ACL就是Access Control List的缩写,中文意思就是访问控制列表,其主要作用可以用来提供除传统的ower、group、others的read、write、execute权限之外的具体权限的设置。ACl可以针对单一用户、单一文件或目录进行读写执行等权限的设置,可以实现更加灵活的权限设置,这样的权限设置对于有特殊权限需求的使用情况是非常有帮助的。

ACl可以进行一下三种控制权限操作:

  • 1、对特定用户和文件/目录设定权限
    2、对特定的组合文件/目录设置权限
    3、对指定目录文件及其下新建的文件/目录设置默认的权限
## 二、ACL启动 ##

CentOS7中,无论是操作系统安装时还是之后手工创建的文件系统(xfs、ext4)均会开启ACL功能。

CentOS6及之前的版本,仅操作系统安装时创建的文件系统才会默认开启ACL,手工创建的文件系统,需要手工开启ACL功能。

启动方式:

  • mount -o acl /dev/sda1 取消的方式,重新挂载时不指定即可
    mount -o remount,acl /dev/sda1
    以上两种方式开启的ACL可以通过mount |grep sdaX
    tune2fs -o acl /dev/sda7
    取消的方式 tune2fs -o ^acl /dev/sda1
    使用以上方式开启的ACL可以通过tune2fs -l /dev/sda1|grep option
## 三、ACL设置技巧 ##

ACL的设置主要是通过以下两条命令实现的:

  • getfacl:用于取得某个文件/目录的ACL设置
    setfacl:用于设置某个目录/文件的ACL规定

1、getfacl命令
getfacl命令大多只是用来查询文件/目录的ACL设置的,其他使用较少。

  查询的命令为:getfacl filename
- 以下为getfacl查询结果的输出格式:

Linux系统中关于ACL的简单介绍_第1张图片

     第一至三行显示文件名,拥有者,所属组信息
     第四行显示文件的特殊权限位信息
     第五、七、十行显示文件的基础权限位,对应于文件原有权限位的用户、组和其他字段。
     第六、八行显示新增的用户名、组名及相应权限
     第九行显示有效的权限掩码,仅限制新增的组和用户的有效权限。
         (文件权限不受有效权限掩码的影响)
     第十一至第十五行显示与被设置的目录相关的默认ACL

2、setfacl命令

命令格式:setfacl 参数 作用对象 目标文件/目录

参数介绍:

  • -m:修改文件当前的ACL,不可与-x参数合用
    -x:从文件的ACL中单独移除一条权限
    -b:移除文件的全部ACL
    -k:删除默认的ACL
    -d:为目录设置默认的ACL(该参数只对目录有效)
    -R:递归设置ACL,其子目录也将会被设置
- eg1:针对特定用户权限的设置

命令格式:setfacl -m u:username列表:[rwx] filename
Linux系统中关于ACL的简单介绍_第2张图片

- eg2:针对特定用户组权限的设置

命令格式:setfacl -m g:grouprname列表:[rwx] filename
Linux系统中关于ACL的简单介绍_第3张图片

## 四、 有效权限mask##

有效权限mask的意思就是对新增的用户或组所设置的权限,必须要存在于mask权限内才会生效。意思就是说新增用户或组的有效权限是其设定的权限与mask的权限取合集。再说的直白点就是:mask里有的权限,新增用户或组同时也设置相应权限了,其权限才会有效;mask里没有设置的权限,新增用户或组即使设置了,也是不会生效的。

一般情况下最好是将mask的权限设置为:rwx,然后再分别依据不同的用户或组设置不同的权限。

- eg3:针对有效权限mask的设置

命令格式:setfacl -m m:[rwx] filename
Linux系统中关于ACL的简单介绍_第4张图片

## 五、默认权限 ##

setfacl命令中的 -d 参数是用来设置默认权限的,但是此设置只对目录有效,不能对文件进行设置。设置后,此目录下新建的子目录及文件都将继承此权限,也就是能够实现递归设置。

- eg4:针对默认权限的设置

命令格式: setfacl -m d:u:username列表:[rwx] /…/directoryname

    • setfacl -m d:g:groupname列表:[rwx] /…/directoryname
      :
      Linux系统中关于ACL的简单介绍_第5张图片
      Linux系统中关于ACL的简单介绍_第6张图片

你可能感兴趣的:(知识点整理)