Linux权限管理之设置ACL权限

PS:一个用户既不属于文件的所有者u,所属组人员g也不属于其他人o,那么他想访问服务器里面的文件则需要给他设置ACL权限,这样他才有访问该文件的权限。

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

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

  Linux权限管理之设置ACL权限_第1张图片

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

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

  Linux权限管理之设置ACL权限_第2张图片

 

2、开启分区 ACL 权限

  ①、临时开启分区 ACL 权限

1

mount -o remount,acl /

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

  ②、永久开启分区 ACL 权限

  一、修改配置文件 /etc/fstab

  Linux权限管理之设置ACL权限_第3张图片

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

1

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

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

1

mount -o remount /

 

回到顶部

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

  Linux权限管理之设置ACL权限_第4张图片

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

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

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

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

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

   Linux权限管理之设置ACL权限_第5张图片

  目录 /project 的所有者和所属组其他人权限设定为 770。接下来我们创建旁听用户 pt,并赋予 acl 权限 rx

  Linux权限管理之设置ACL权限_第6张图片

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

  Linux权限管理之设置ACL权限_第7张图片

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

  

 

回到顶部

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

  Linux权限管理之设置ACL权限_第8张图片

 

5、最大有效权限 mask

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

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

1

setfacl -m m:权限 文件名

  Linux权限管理之设置ACL权限_第9张图片

 

回到顶部

6、删除 ACL 权限

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

1

setfacl -x u:用户名 文件名

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

1

setfacl -x g:组名 文件名

  ③、删除文件的所有 ACL 权限

1

setfacl -b 文件名

 

7、递归 ACL 权限

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

1

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

8、默认 ACL 权限

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

1

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

 

9、如果想要一个文件里面并且子文件里面拥有ACL权限,那么可以使用以下方式:

      setfacl -m u:st(用户名):rwx(读写执行权限) -R /project(指定文件名)        

     setfacl -m d:u:st(用户名):rwx(读写执行权限) -R /project(指定文件名)

  

你可能感兴趣的:(Linux)