ACL权限梳理

什么是ACL权限?

对Linux原有权限扩充,ACL可以针对单一用户、单一文件或目录来进行r、w、x的权限设置,对于需要特殊权限的使用状况非常有帮助。

安装ACL权限:

系统默认的是不会安装ACL权限的,安装方法:

  • RPM 包:

前提:能够获取到系统安装包
命令:rpm -ivh libacl-x.x.xx-x.x acl-x.x.xx-x.x.rpm

  • yum:

前提:主机已经联网,且yum可用
命令:yum -y insatll libacl acl

ACL文件设置:

最常用的有以下2个命令:

getfacl: 获取文件或目录的ACL设置信息
命令: getfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...
参数:
-a , --access:显示文件或目录的访问控制列表
-d , --default:显示文件或目录的默认(缺省)的访问控制列表
-c , --omit-header:不显示默认的访问控制列表
-R , --recursive:操作递归到子目录

setfacl:设置文件或目录的ACL设置信息
命令:setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...
参数:
-m, --modify=acl:修改文件或目录的扩展ACL设置信息
-x, --remove=acl:从文件或目录删除一个扩展的ACL设置信息
-b, --remove-all:删除所有的扩展的ACL设置信息
-k, --remove-default:删除缺省的acl设置信息
-n, --no-mask:不要重新计算有效权限。setfacl默认会重新计算ACL mask,除非mask被明确的制定
-d, --default:设置默认的ACL设置信息(只对目录有效)
-R, --recursive:操作递归到所有子目录和 文件


如果有一个用户,想单独给这个用户开特殊权限:

setfacl -m user:用户:rx 路径

设置前:

[niesh@niesh tmp]$ getfacl Project/ 
# file: Project/ 
# owner: niesh 
# group: niesh 
user::rwx 
group::rwx 
other::---


设置后:

[niesh@niesh tmp]$ getfacl Project/ 
# file: Project/ 
# owner: niesh 
# group: niesh 
user::rwx 
user:用户:r-x 
group::rwx 
mask::rwx 
other::---

说明:

user:用户:r-x: 表示用户具备的ACL权限为 r-x
mask::rwx: 表示ACL的最大权限,用你分配给用户的权限与mask相与(类似于子网掩码),用户和用户组所设定的权限必须在

mask: 权限设定的范围之内才能生效,mask权限就是最大有效权限。不过我们一般不更改 mask 权限,只要给予 mask 最大权限 rwx,那么任何权限和 mask 权限相与,得出的值都是权限本身。也就是说,我们通过给用户和用户组直接赋予权限,就可以生效,这样做更直观。

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

学习链接:http://c.biancheng.net/view/863.html
学习链接:https://www.cnblogs.com/sparkdev/p/5536868.html

你可能感兴趣的:(Linux)