ACL权限

ACL权限简介

ACL权限是解决文件对用户身份不足的问题的,ACL的全称是 Access Control List (访问控制列表) ,一个针对文件/目录的访问控制列表。它在UGO权限管理的基础上为文件系统提供一个额外的、更灵活的权限管理机制。它被设计为UNIX文件权限管理的一个补充。ACL允许你给任何的用户或用户组设置任何文件/目录的访问权限。

开启ACL

  • 查看acl权限是否开启
[root@ddkk.com ~]# dumpe2fs -h /dev/sda2
# dumpe2fs命令是查询指定分区详细文件系统信息的命令
......
Default mount options:    user_xattr acl 
#默认开启了acl权限
......

  • 开启acl权限

使用命令暂时开启:

[root@ddkk.com ~]# mount -o remount,acl /
#重新挂载,给予acl权限

修改配置文件/etc/fstab一直开启acl权限:

[root@ddkk.com ~]# vim /etc/fstab
......
UUID=71577b29-baae-4109-8436-558b7fc032e0 /                       ext4    defaults,acl        1 1
#在defaults后面加上acl
......

ACL权限命令

命令格式:

  • 查询acl权限
getfacl 文件名 查询文件的acl权限

  • 设置acl权限
setfacl 选项 文件名 设定ACL权限

选项:

  • -m :设定acl权限
  • -b:删除acl权限

例:

[root@ddkk.com ~]# setfacl -m u:u3:5 /test 为用户u3设置5的权限
[root@ddkk.com ~]# ll -d /test   查看/test权限
drwxrwx---+ 2 root test 4096 1月  25 02:08 /test  权限位最后一位的"+"表示该文件有acl权限
[root@ddkk.com ~]# getfacl /test  查看/test目录的acl权限
getfacl: Removing leading '/' from absolute path names
# file: test
# owner: root
# group: test
user::rwx
user:u3:r-x  u3有5的权限
group::rwx
mask::rwx
other::---
[root@ddkk.com ~]# setfacl -b /test  删除/test目录的acl权限

  • 递归设置acl权限
[root@ddkk.com ~]# setfacl -m u:u3:5 -R /test
#让目录及目录下的所有文件对于u3有5的权限
[root@ddkk.com ~]# setfacl -m d:u:u3:5 -R /test
#让目录下之后创建的文件对u3有5的权限

acl权限的递归设置有一个无法解决的问题,那就是会造成权限的溢出,因为权限对于文件和目录来说是不同的,执行权限对于目录来说是基本权限,对于文件来说是最大权限。

  • 最大有效权限mask
[root@ddkk.com /]# getfacl test
# file: test
# owner: root
# group: test
user::rwx
user:u3:r-x
group::rwx
mask::rwx  mask有效权限
other::---

文件的acl权限是由用户权限和mask最大权限共同决定的,两个是逻辑与的关系,那如何修改mask权限呢。

[root@ddkk.com /]# setfacl -m m:6 test  将mask有效权限改为6
[root@ddkk.com /]# getfacl test
# file: test
# owner: root
# group: test
user::rwx
user:u3:r-x			#effective:r--
group::rwx			#effective:rw-
mask::rw-
other::---