Linux系列教程(十六)——Linux权限管理之ACL权限

  经过前面的两篇博客咱们介绍了Linux系统的用户管理,Linux用户和用户组管理之相关配置文件 讲解了用户管理的相关配置文件,包括用户信息文件/etc/passwd,用户密码文件/etc/shadow;而后介绍了用户组信息文件/etc/group,用户组密码文件/etc/gshadow。用户的家目录,以及用户的模板目录;Linux用户和用户组管理之用户管理命令 讲解了管理用户和用户组的命令,包括新建、修改、查看等等以及用的比较多的切换用户命令 su。那么用户管理结束以后,咱们将进入linux的权限管理介绍,本篇博客介绍的是Linux权限管理的ACL权限。html

一、什么是 ACL 权限?

  好比有以下场景:java

  某大牛在QQ群内直播讲解Linux系统的权限管理,讲解完以后,他在一个公有的Linux系统中建立了一个 /project 目录,里面存放的是课后参考资料。那么 /project 目录对于大牛而言是全部者,拥有读写可执行(rwx)权限,对于QQ群内的全部用户他们都分配的一个所属组里面,也都拥有读写可执行(rwx)权限,而对于 QQ 群外的其余人,那么咱们不给他访问/project 目录的任何权限,那么 /project 目录的全部者和所属组权限都是(rwx),其余人权限无。linux

  问题来了,这时候直播有旁听的人参与(不属于QQ群内),听完以后,咱们容许他访问/project目录查看参考资料,可是不能进行修改,也就是拥有(r-x)的权限,这时候咱们该怎么办呢?咱们知道一个文件只能有一个所属组,咱们将他分配到QQ群所在的所属组内,那么他拥有了写的权限,这是不被容许的;若是将这个旁听的人视为目录/project 的其余人,而且将/project目录的其余人权限改成(r-x),那么不是旁听的人也能访问咱们/project目录了,这显然也是不被容许的。怎么解决呢?windows

  

  咱们想一想windows系统里面给某个文件分配权限的办法:post

  

  如上图,咱们想要让某个用户不具有某个权限,直接不给他分配这个目录的相应权限就好了。那么对应到Linux系统也是这样,咱们给指定的用户指定目录分配指定的权限,也就是 ACL 权限分配。htm

  

二、查看分区 ACL 权限是否开启:dump2fs

  咱们看某个文件(Linux系统中目录也是文件,一切皆是文件)是否支持 ACL 权限,首先要看文件所在的分区是否支持 ACL 权限。blog

  ①、查看当前系统有哪些分区:df -h

  

  ②、查看指定分区详细文件信息:dumpe2fs -h 分区路径

  下面是查看 根分区/ 的详细文件信息继承

  

三、开启分区 ACL 权限

  ①、临时开启分区 ACL 权限

mount -o remount,acl /

  从新挂载根分区,并挂载加入 acl 权限。注意这种命令开启方式,若是系统重启了,那么根分区权限会恢复到初始状态。递归

  ②、永久开启分区 ACL 权限

  1、修改配置文件 /etc/fstabrem

  

  上面是修改根分区拥有 acl 权限

UUID=490ed737-f8cf-46a6-ac4b-b7735b79fc63 /                       ext4    defaults,acl        1 1

  2、从新挂载文件系统或重启系统,使得修改生效

mount -o remount /

 

四、设定 ACL 权限:setfacl 选项 文件名

  

  ①、给用户设定 ACL 权限:setfacl -m u:用户名:权限 指定文件名

  ②、给用户组设定 ACL 权限:setfacl -m g:组名:权限 指定文件名

  注意:咱们给用户或用户组设定 ACL 权限其实并非真正咱们设定的权限,是与 mask 的权限“相与”以后的权限才是用户的真正权限,通常默认mask权限都是rwx,与咱们所设定的权限相与就是咱们设定的权限。mask 权限下面咱们会详细讲解

  范例:全部者root用户在根目录下建立一个文件目录/project,而后建立一个QQ群所属组,所属组里面建立两个用户zhangsan和lisi。全部者和所属组权限和其余人权限是770。

     而后建立一个旁听用户 pt,给他设定/project目录的 ACL 为 r-x。

   

  目录 /project 的全部者和所属组其余人权限设定为 770。接下来咱们建立旁听用户 pt,并赋予 acl 权限 rx

  

  为了验证 pt 用户对于 /project 目录没有写权限,咱们用 su 命令切换到 pt 用户,而后进入 /project 目录,在此目录下建立文件,看是否能成功:

  

  上面提示权限不够,说明 acl 权限赋予成功,注意以下所示,若是某个目录或文件下有 + 标志,说明其具备 acl 权限。

  

 

五、查看 ACL 权限:getfacl 文件名

  

 

六、最大有效权限 mask

  前面第4点咱们讲过,咱们给用户或用户组设定 ACL 权限其实并非真正咱们设定的权限,是与 mask 的权限“相与”以后的权限才是用户的真正权限,通常默认mask权限都是rwx,与咱们所设定的权限相与就是咱们设定的权限。

  咱们经过 getfacl 文件名 也能查看 mask 的权限,那么咱们怎么设置呢?

setfacl -m m:权限 文件名

  

 

七、删除 ACL 权限

  ①、删除指定用户的 ACL 权限

setfacl -x u:用户名 文件名

  ②、删除指定用户组的 ACL 权限

setfacl -x g:组名 文件名

  ③、删除文件的全部 ACL 权限

setfacl -b 文件名

 

八、递归 ACL 权限

  经过加上选项 -R 递归设定文件的 ACL 权限,全部的子目录和子文件也会拥有相同的 ACL 权限。

setfacl -m u:用户名:权限 -R 文件名

 

九、默认 ACL 权限

  若是给父目录设定了默认的 ACL 权限,那么父目录中全部新建的子文件会继承父目录的 ACL 权限。

setfacl -m d:u:用户名:权限 文件名

 

十、总结

  本篇博客咱们介绍了权限管理的ACL权限,经过设定 ACL 权限,咱们为某个用户指定某个文件的特定权限,在实际权限管理中仍是用的比较多的。

相关文章
相关标签/搜索