『学了就忘』Linux权限管理|『学了就忘』Linux权限管理 — 53、ACL权限详解
目录
- 1、什么是ACL权限
- 2、开启ACL
- 3、ACL权限的相关命令
- (1)设定ACL权限
- (2)查询文件的ACL权限
- (3)设置文件ACL权限给用户组
- (4)给文件夹和里边的文件同时赋予ACL权限
- (5)ACL默认权限
- (6)总结
- 4、最大有效权限mask
- 5、删除ACL权限
前面我们之前说过,Linux系统的权限分为六种。有读写执行的基本权限,
umask
默认权限。今天我们来说一下ACL权限。
提示:每一个文件,只能有一个所有者,只能有一个所属组,剩下的都是other(其他人)。1、什么是ACL权限 比如我是一个老师,创建可一个共享文件夹,这个文件夹的所有者肯定是我,我把所有的学生都加入到一个组里,把文件夹的所属组定义到学生组。这样我就能够分别定义我操作文件夹的权限,和学生对文件夹的操作权限,和其他人(其他班的同学)对文件夹的操作权限。但是如果我的班级要有试听同学,试听同学对文件夹的操作权限和班中同学的权限肯定要不同。就会出现下面的情况。
- 如果定义所有者为试听同学,肯定不行。
第一,我创建的文件夹,我已经是所有者了,虽然可以改,但是感觉会非常混乱。
第二,一个文件的所有者只能有一个,而试听同学可能会有多个。 - 如果试听同学定义成other(其他人),肯定不行。
因为试听同学能看了,那其他班级的同学也就能看了。 - 如果试听同学定义成所属组,这样也不行。
因为要求试听同学要有一定的对文件夹操作的权限,但是和班级的正式同学要有区别。
ACL概述:ACL是用于解决用户对文件身份不足的问题的。
上边的描述如下图:
文章图片
2、开启ACL
# dumpe2fs命令是查询指定分区详细文件系统信息的命令
[root@localhost ~]# dumpe2fs -h /dev/sda3选项:
-h 仅显示超级块中信息,而不显示磁盘块组的详细信息。
/dev/sda3
文件内容,如下图:文章图片
这就表示Linux分区支持ACL权限。默认开启,查看一下,以防万一。
如果没有开启,手工开启分区的ACL权限。
# 重新挂载根分区,并挂载加入acl权限。(临时生效)
[root@localhost ~]# mount -o remount,acl /
也可以通过修改
/etc/fstab
文件,永久开启ACL权限。(永久生效)注意:/etc/fstab
文件要慎重修改,改错了,系统可能启动不了。
# 加入acl
[root@localhost ~]# vi /etc/fstab
UUID-c2ca6f57-b15c-43ea-bca0-f239083d8bd2 / ext4 defaults,acl(在/目录的该位置添加上acl)1 1 # 重新挂载文件系统或重启动系统,使修改生效
[root@localhost ~]# mount -o remount /
3、ACL权限的相关命令 (1)设定ACL权限
[root@localhost ~]# setfacl [选项] 文件名
选项:
-m
:设定ACL权限-b
:删除ACL权限-x
:删除单个用户的ACL权限
# 格式:
[root@localhost ~]# setfacl -m u:用户名:权限(数字和字母都行) 文件名# 示例
[root@localhost ~]# setfacl -m u:st:5 /www/
查看一下
/www/
文件夹,如下图所示:文章图片
(2)查询文件的ACL权限
执行命令:
[root@localhost ~]# getfacl 文件名
结果如下图所示:
文章图片
第一行有一个报错,错误是说不识别左侧的
/
(根目录标识),他推荐进入到根目录,用相对路径的方式进行查看。这个报错并不影响我们查看结果,可以忽略。说明字段含义:
# file:www
:文件名。#owner: sc
:所有者。# group:tg
:所属组。user::rwx
:所有者权限。user:st:r-x
:这里就是文件的ACL权限。group::rwx
:所属组权限。mask::rwx
:最大有效权限。other::--
:其他人权限。
# 命令格式
[root@localhost ~]# setfacl -m g:组名:权限 文件名# 示例
[root@localhost ~]# setfacl -g u:st:5 /www/
(4)给文件夹和里边的文件同时赋予ACL权限
[root@localhost ~]# setfacl -m u:st:5 -R /www/
选项:
-R
:递归注意:赋予递归ACL权限,只能赋予目录。也就是说如果文件被赋予了ACL权限,那么我们用# setfacl -m u:st:5 -R /www/
最后的/www/
位置,一定要是文件夹,不能是文件。
ll
命令查看到文件的权限,可能是不准确的,如果想要看准确的,需要通过getfacl 文件名
命令查看。如下图所示:
文章图片
(5)ACL默认权限
上边的目录中如果再创建新的文件,新创建的文件是否有ACL权限?
答案是没有的。可以在命令中加入
d
选项,设置ACL默认权限,就可以解决。[root@localhost ~]# setfacl -m d:u:aa:rwx -R /test
注意:默认权限只能赋予目录。下图为设置ACL默认权限的文件夹,通过
getfacl 文件名
命令查看权限。文章图片
(6)总结
如果给目录赋予ACL权限,两条命令都要输入。
递归与默认的区别:
setfacl -m u:cc:rx -R soft/
——》只对已经存在的文件生效。setfacl -m d:u:aa:rwx -R /test
——》只对以后新建的文件生效。
拓展:4、最大有效权限mask 最大有效权限
ACL权限,一旦递归之后,不可避免的出现权限溢出。
所以正常情况下还是使用所有者,所属组,其他人权限来处理。
- 什么是权限溢出?
ACL权限递归之后,目录和目录中的文件都会有相同的执行权限。目录的执行权限是进入目录,而文件的执行权限就非常危险了,相当于赋予了文件最大权限。这个问题是没法解决的。
以后通过shell脚本,能解决ACL权限递归造成的权限溢出问题,判断文件夹里边的文件类型,文件赋予4,文件夹赋予5,这样就能解决。但这就不是一个单一命令了。
mask
值,是用来控制文件的最大有效权限的。如下图所示:
文章图片
mask
值分别和所有者、所属组、其他人、ACL权限,相与的结果,来最终决定一个身份的权限是什么。【『学了就忘』Linux权限管理|『学了就忘』Linux权限管理 — 53、ACL权限详解】例如:设定一个文件的
mask
权限为rw-
。使用
m:权限
格式:[root@localhost www]# setfacl -m m:6 /www/
结果如下图:
文章图片
5、删除ACL权限 示例如下:
# 删除指定用户和用户组的ACL权限
[root@localhost ~]# setfacl -x u:st /project/# 会删除文件的所有的ACL权限
[root@localhost ~]# setfacl -b project/
推荐阅读
- 2018-02-06第三天|2018-02-06第三天 不能再了,反思到位就差改变
- 爱就是希望你好好活着
- 拍照一年啦,如果你想了解我,那就请先看看这篇文章
- 烦恼和幸福
- 参保人员因患病来不及到指定的医疗机构就医,能否报销医疗费用()
- 活着就是生命的全部意义
- 其实你就是个普通人
- 是你,情愿
- 有些人真的走着走着就散了
- 有句话忍很久了,女生要求买房怎么就物质了()