ACL权限

1. ACL权限简介

当一个特殊用户或者组(比如:spuser)的权限,不能属于Linux分配的三种身份(u:所有者 g:所属组 o:其他人)权限,同时,又必须给它分配一个不同于这三种权限的权限时,可以使用acl权限。

acl权限可以给一个特殊用户或者组单独分配权限。

2. 开启ACL权限

是否能够对一个文件设置acl权限,关键在于文件所在的分区是否开启(或者说支持)ACL权限。

一般来说,我们都是对根分区的某个文件来设置ACL权限。

可以先使用df命令,查看磁盘的分区情况:

[root@localhost ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       8.6G  854M  7.3G  11% /
tmpfs           504M     0  504M   0% /dev/shm
/dev/sda1       190M   24M  157M  13% /boot

可以看到根分区的设备文件名是 /dev/sda3,然后使用 dumpe2fs 命令查看该分区是否开启了ACL权限。

dumpe2fs -h /dev/sda3

如果上述命令的显示结果中包含 “Default mount options: user_xattr acl”,就说明根分区开启了acl权限。只有分区开启了ACL权限,才可以设置ACL权限。

一般来说,Linux系统的分区都是默认开启了ACL权限的,当然,也不排除特殊情况。

万一某个分区没有开启ACL权限,可以参考下面的两种方法。

方法一:临时开启ACL权限

只会临时生效,系统一旦重启,ACL权限就会失效。

相关命令:

mount -o remount,acl /
重新挂载根分区,使其支持ACL权限

方法二:永久开启ACL权限

修改 /etc/fstab 文件,给相关的分区加上acl权限,然后,重新挂载文件系统或重启系统,使修改生效。

vi /etc/fstab
编辑该文件

将 
UUID=cd0ef157-7993-488e-ab41-40114a0643d6 /                       ext4    defaults        1 1
该为
UUID=cd0ef157-7993-488e-ab41-40114a0643d6 /                       ext4    defaults,acl        1 1
保存退出

mount -o remount /
重新挂载根分区的文件系统,使修改生效

3. 查看和设定ACL权限

3.1 查看ACL权限

命令格式:getfacl 文件或文件夹名

[root@localhost tmp]# getfacl test
# file: test
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
3.2 设置ACL权限

命令格式:setfacl 选项 文件或文件夹名

选项:

-m:设定ACL权限
-x:删除指定用户或组的ACL权限
-b:删除所有的ACL权限
-d:设定默认的ACL权限
-k:删除默认的ACL权限
-R:递归设定ACL权限

常见用法:

setfacl -m u:spuser:rx /tmp/test        
对于/tmp/test文件夹,将rx(读、执行)的权限单独分配给特殊用户spuser

再来查看/tmp/test文件夹的ACL权限,结果如下:
[root@localhost tmp]# getfacl test
# file: test
# owner: root
# group: root
user::rwx
user:spuser:r-x
group::r-x
mask::r-x
other::r-x

给用户组设定ACL权限,方法如下:
groupadd tgroup2
setfacl -m g:tgroup2:rx /tmp/test
对于/tmp/test文件夹,将rx(读、执行)的权限单独分配给特殊组tgroup2

4. 最大有效权限和删除ACL权限

4.1 最大有效权限

mask是用来指定最大有效权限的。如果给某个用户赋予了ACL权限,是需要和mask的权限“相与”才能得到用户的真正权限。

相与是指ACL权限和mask权限同时拥有某种权限(比如读权限)时,才真正拥有该权限。

也就是说,通过acl权限分配给某个用户或者组的权限,其真正有效的权限是它和mask“相与”的结果。

修改最大有效权限(mask)的命令如下:

setfacl -m m:rx 文件名

setfacl -m m:rwx /tmp/test
将/tmp/test文件夹的最大有效权限设置为rwx
4.2 删除ACL权限
setfacl -x u:spuser /tmp/test   
对于/tmp/test文件夹,删除用户spuser的acl权限

setfacl -b /tmp/test
对于/tmp/test文件夹,删除其所有的acl权限

5. 递归ACL权限和默认ACL权限

5.1 递归ACL权限

递归ACL权限是指在给文件夹递归设定ACL权限时,所有已经存在的子文件和子文件夹也会拥有相同的ACL权限。

命令格式:

setfacl -m u:用户名:权限 -R 文件夹名
或
setfacl -m g:组名:权限 -R 文件夹名

常见用法:

setfacl -m u:spuser:rx -R /tmp/test     
对于/tmp/test及其已经包含的子文件和子文件夹,将rx的权限单独分配给特殊用户spuser
注意:上面通过 -R 递归赋予的ACL权限,只能对test文件夹中已经存在的子文件和子文件夹有效。如果是之后新创建的子文件或者子文件夹,也需要分配acl权限的话,必须用到下面的默认acl权限。
5.2 默认ACL权限

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

命令格式:setfacl -m d:u:用户名:权限 文件夹名

常见用法:

setfacl -m d:u:spuser:rx /tmp/test   
对于/tmp/test及其将要包含的新的子文件和子文件夹,将rx的权限单独分配给特殊用户spuser。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值