linux系统文件权限管理之 'ACL'

一 ACL 权限简介

Linux 下用户对文件的操作权限有 r-读, w-写, x-可执行三种,而对linux 下的文件而言,用户身份分为:所有者, 所属组, 其它人, 且文件的所有者,所属组都只能是一个,所以在对文件分配用户的使用权限时,只能对这三种身份进行分配rwx 权限.Linux 主要作为服务器系统使用,用户众多.所以在实际使用场景中,这三种身份并不能很好地实现资源权限分配问题,所以就有了ACL权限. ACL 权限就是为了解决linux 下三种身份不能满足资源权限分配需求的问题的.

   setfacl命令格式:   setfacl 选项 文件目录名
    -m 设定ACL权限
    -x 删除指定用户,用户组的ACL权限,针对用户,用户组
    -b 删除文件所有的ACL权限,针对文件
    -d 设定默认ACL权限
    -k 删除默认ACL权限
    -R 递归设置ACL权限

二 设置ACL权限

1. 设置用户ACL权限:指定特定用户对此文件/目录拥有的r/w/x权限
1. 命令格式: setfacl -m u:用户名:权限(rwx) 目录/文件名
2. 使用示例: setfacl -m u:user1:rwx /aclTest
3. 注意: 用户具体拥有的权限并不一定是设置acl时指定的权限,和设置的最大默认权限进行与操作后得到的权限才为用户实际拥有的权限

2. 设置用户组ACL权限:指定特定用户组对此文件/目录拥有的r/w/x权限

1. 命令格式: setfacl -m g:用户名:权限(rwx) 目录/文件名
2. 使用示例: setfacl -m g:group2:rwx /aclTest

3. 注意: 用户组中的用户具体拥有的权限并不一定是设置acl时指定的权限,和设置的最大默认权限进行与操作后得到的权限才为用户组中的用户实际拥有的权限

3. 设置最大ACL权限:指定资源ACL权限的最大权限,防止给予用户/用户组ACL权限过高

1. 命令格式: setfacl -m m:权限(rwx) 目录/文件名
2. 使用示例: setfacl -m m:rwx /aclTest
3. 注意: 如果不显示设置用户最大权限,那么默认最大权限为用户第一次设置ACL时指定的权限值

4. 设置递归权限: 指对目前此目录下的所有文件均进行此ACL设置

1. 命令格式: setfacl -m u/g:用户名:权限(rwx) -R 目录
2. 使用示例: setfacl -m u:user1:rw -R /aclTest
3. 注意: 针对的是设置此ACL权限之前已经创建好的所有文件,都会默认新增此ACL权限,之后创建的文件不会新增此ACL限制

5. 设置默认权限: 指对之后此目录下新建的文件默认进行此ACL权限设置

1. 命令格式: setfacl -m d:u/g:用户名:权限(rwx) 目录
2. 使用示例: setfacl -m d:u:user1:rw /aclTest
3. 注意:针对的是设置ACL权限之后新建的文件默认具有的ACL权限,无论是此目录的子文件,子子文件,新建后都会拥有此ACL权限

6. 最佳实践:
同时设置目录的默认权限和递归权限,确保此目录下新建的文件和目录目前所有的文件都具有相同的ACL权限

setfacl -m u:用户名:权限(rwx) -R 目录

setfacl -m d:u/g:用户名:权限(rwx) -R 目录

三 查看ACL权限

1. 简单查看: ls -ld 目录名

设置了ACL权限的文件或目录,权限后会新增一个+

2. 查看ACL权限详情: getfacl 文件/目录名
  在这里插入图片描述

四 删除ACL权限

1. 针对用户/用户组删除: setfacl -x u/g:用户名/组名 文件/目录名 : 删除文件或目录具体的ACL组/用户权限
  
eg.1 setfacl -x g:group2 /project/ : 删除/project 的group2 组ACL权限
eg.2 setfacl -x u:user1 /project/ : 删除/project 的user1 用户ACL权限

  1. 针对文件删除: setfACL -b 文件/目录名 : 删除文件目录所有的ACL权限
    eg.1 setfacl -b /project : 删除/project的所有ACL权限

五 检测分区是否支持ACL(了解)

ACL 权限,需要文件所在分区支持ACL权限,默认情况下,linux 下创建的分区都是支持ACL 权限的.
1. 查看分区是否支持acl 权限: dumpe2fs -h 分区名

在这里插入图片描述

2. 假如分区不支持ACL 权限,那么可以手工开启:(了解即可)
1. 重新挂载分区: mount -o remount,ACL /home :临时生效

2. 修改/etc/fastab: fasttab 是系统启动时,加载需要挂载的分区的文件,千万不能写错,修改只需在default后添加,ACL即可,修改之后需要重启或者重新挂载分区

在这里插入图片描述

原文链接:https://blog.csdn.net/zgf19930504/article/details/52071535

猜你喜欢

转载自blog.csdn.net/weixin_43279032/article/details/84551294