Linux_ACL权限、mask值

小丫4个月前技术文章107

acl权限在什么情况下使用:
当要给一个用户与文件的属主、属组、其他人权限都不同的时候使用。也就是说,这个用户对应于这个文件不属于三个身份中的任何一种,是属于第四种身份,那么我们就需要使用acl权限去给他赋予单独的权限。


facl ——文件的访问控制列表


使用facl:


 getfacl 文件名			//查看文件的facl权限
 setfacl -m u:用户名:权限 文件名			//修改当前文件的acl权限
 ll  文件名
 -rwxrwxrw-+ 1 jack root 86 Jun 13 15:53  文件名     //在低11个字符处若有“+”,则说名文件有acl权限。
 setfacl -x u:jack 文件名         //删除jack对文件的属主权
 setfacl -b 文件名     //移除所有用户、组、其他的权限


setfacl其他用法:


用法: setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...
-m,       --modify-acl 更改文件的访问控制列表
-M,       --modify-file=file 从文件读取访问控制列表条目更改
-x,       --remove=acl 根据文件中访问控制列表移除条目
-X,       --remove-file=file 从文件读取访问控制列表条目并删除
-b,       --remove-all 删除所有扩展访问控制列表条目
-k,       --remove-default 移除默认访问控制列表
          --set=acl 设定替换当前的文件访问控制列表
          --set-file=file 从文件中读取访问控制列表条目设定
          --mask 重新计算有效权限掩码
-n,       --no-mask 不重新计算有效权限掩码
-d,       --default 应用到默认访问控制列表的操作
-R,       --recursive 递归操作子目录
-L,       --logical 依照系统逻辑,跟随符号链接
-P,       --physical 依照自然逻辑,不跟随符号链接
          --restore=file 恢复访问控制列表,和“getfacl -R”作用相反
          --test 测试模式,并不真正修改访问控制列表属性
-v,       --version           显示版本并退出
-h,       --help              显示本帮助信息


实例:


[root@erhou ~]# getfacl file1
# file: file1
# owner: jack
# group: root
user::rwx
group::rwx
other::rw-

[root@erhou ~]# setfacl -m u:tom:rx file1

[root@erhou ~]# ll file1
-rwxrwxrw-+ 1 jack root 86 Jun 13 15:53 file1

[root@erhou ~]# getfacl file1
# file: file1
# owner: jack
# group: root
user::rwx
user:tom:r-x
group::rwx
mask::rwx
other::rw-

[root@erhou ~]# setfacl -x u:tom file1

[root@erhou ~]# ll file1
-rwxrwxrw-+ 1 jack root 86 Jun 13 15:53 file1

[root@erhou ~]# getfacl file1
# file: file1
# owner: jack
# group: root
user::rwx
group::rwx
mask::rwx
other::rw-

[root@erhou ~]# setfacl -b file1

[root@erhou ~]# ll file1
-rwxrwxrw- 1 jack root 86 Jun 13 15:53 file1

[root@erhou ~]# getfacl file1
# file: file1
# owner: jack
# group: root
user::rwx
group::rwx
other::rw-


mask 权限,指的是用户或群组能拥有的最大 ACL 权限,也就是说,给用户或群组设定的 ACL 权限不能超过 mask 规定的权限范围,超出部分做无效处理。


举个例子,如果像上面命令那样,给 tom用户赋予访问 file1的 r-x 权限,此时并不能说明 tom 用户就拥有了对该文件的读和访问权限,还需要和 mask 权限对比,r-x 确实是在 rwx 范围内,这时才能说 tom用户拥有 r-x 权限。


需要注意的是,这里将权限进行对比的过程,实则是将两权限做“按位相与”运算,最终得出的值,即为 tom用户有效的 ACL 权限。这里以读(r)权限为例,做相与操作的结果如表 1 所示:


读权限做相与操作


A 	B 	and
r 	r 	r
r 	- 	-
- 	r 	-
- 	- 	-


但是,如果把 mask 权限改为 r--,再和 tom 用户的权限 r-x 比对(r-- 和 r-w 做与运算),由于 r-w 超出 r-- 的权限范围,因此 tom 用户最终只有 r 权限,手动赋予的 w 权限无效。这就是在设定 ACL 权限时 mask 权限的作用。


大家可以这样理解 mask 权限的功能,它将用户或群组所设定的 ACL 权限限制在 mask 规定的范围内,超出部分直接失效。


mask 权限可以使用 setfacl 命令手动更改,比如,更改 file1文件 mask 权限值为 r-x,可执行如下命令:


[root@ergou ~]# setfacl -m m:rx file1
#设定mask权限为r-x,使用"m:权限"格式


[root@ergou ~]# getfacl file1
#file:file1
#owner: jack
#group: root
user::rwx
group::rwx
mask::r-x  <--mask权限变为r-x
other::---


不过,我们一般不更改 mask 权限,只要赋予 mask 最大权限(也就是 rwx),则给用户或群组设定的 ACL 权限本身就是有效的。


相关文章

Hive优化之配置参数的优化(一)

Hive优化之配置参数的优化(一)

 Hive是大数据领域常用的组件之一,主要是大数据离线数仓的运算,关于Hive的性能调优在日常工作和面试中是经常涉及的一个点,因此掌握一些Hive调优是必不可少的一项技能。影响Hive效率的...

Redis 源码安装

Redis 源码安装

1. 下载安装包Linux 中常用两种安装方法,第一种是通过操作系统软件管理软件来安装,例如 CentOS 中的 yum Ubuntu 中的 apt。由于 Redis 更新比较快,而这些软件也不一定更...

大数据平台袋鼠云托管运维与自建集群运维对比

对比维度袋鼠云托管运维自建hadoop集群运维成本根据业务需求定制架构,预估业务增涨合理规划,低成本高性价比需自行预估资源,规划架构性能大量集群优化经验,根据业务需求进行点对点优化采用开源社区版本,性...

MySQL主从复制配置

一、master服务器配置1)用户添加及授权在master 服务器授权一个账户,拥有slave权限12mysql> GRANT REPLICATION SLAVE,REPLICATION CLI...

HBase导出表和备份表操作

HBase导出表和备份表操作

HBase提供了几种导出数据的方式,包括使用HBase自带的工具和使用HBase的API。本文主要是讲的使用HBase自带的工具进行导出首先我们创建一个表 插入一些数据hbase shelllistc...

MySQL性能优化(五)字符集不一致导致的隐式类型转换

MySQL性能优化(五)字符集不一致导致的隐式类型转换

上一篇文章中,我们介绍了隐式类型转换。这里我们介绍另一种形式的隐式类型转换,由于字符集不一致,导致关联查询无法使用索引。一个例子SELECT *  FROM funds...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。