ACL是Access Control List的缩写,可以针对单一用户、单一文件或目录进行r、w、x权限的设置。
举个例子,你就会很快明白ACL的用途:
假如现在的有一个开发团队,这个团队有3个人:user1、user2、user3,他们在同一个目录(/project)下工作(即附加组),而且每一个开发人员都有自己的主文件夹和基本的私有组。 他们可以修改其他人的权限(这里可以使用SGID),但是他们的头头(user)可以对此项目目录中的任何数据进行查看,就是不能修改。 此时就需要用到ACL了! 下面来详细介绍ACL吧!1、如何查看文件系统是否支持ACL,并让我们的文件系统支持ACL:
(1)使用mount命令直接查看挂载参数,以/dev/sda1为例,没有看到acl:
(2)使用dumpe2fs命令可以看到RHEL5默认是支持acl的:
(3)可以使用下面的操作来支持acl:
(4)要想永久有效,可以修改文件/etc/fstab,添加如下行:
2、 设置ACL: 文件系统支持ACL后,设置ACL可以由2个命令就可以搞定了! 命令: getfacl:查看某个文件/目录的ACL设置 setfacl:设置某个文件/目录的ACL 下面来详细介绍两个命令的使用方法: (1)命令getfacl的用法: getfacl file ...
- [root@linli acl_test]# cp /var/log/messages ./
- [root@linli acl_test]# ll
- total 84
- -rw------- 1 root root 76547 Jul 5 13:30 messages
- [root@linli acl_test]# getfacl messages
- # file: messages
- # owner: root
- # group: root
- user::rw-
- group::---
- other::---
- [root@linli acl_test]# setfacl -m u:magedu:rw messages
- [root@linli acl_test]# getfacl messages
- # file: messages
- # owner: root
- # group: root
- user::rw-
- user:magedu:rw- // 可以看到magedu这个用户对messages具有rw权限
- group::---
- mask::rw-
- other::---
- [root@linli acl_test]# setfacl -m g:redhat:rx messages
- [root@linli acl_test]# getfacl messages
- # file: messages
- # owner: root
- # group: root
- user::rw-
- user:magedu:rw-
- group::---
- group:redhat:r-x
- mask::rwx
- other::---
- [root@linli acl_test]# setfacl -m m:r messages
- [root@linli acl_test]# getfacl messages
- # file: messages
- # owner: root
- # group: root
- user::rw-
- user:magedu:rw- #effective:r-- //可以看到实际生效的只有r权限
- group::---
- group:redhat:r-x #effective:r-- //可以看到实际生效的只有r权限
- mask::r-- //mask定义的权限与给某个用户或组定义的权限的交集是实际生效的权限
- other::---
注意: 这主要用于规定最大允许权限,就能够避免不小心开放某些权限给其他用户或组了。
对于默认权限的acl_specl的设置方法是:
d:[ug]:用户账号列表:[rwx]- [root@linli ~]# setfacl -m d:u:student:rwx /acl_test/
- [root@linli ~]# getfacl /acl_test/
- # file: acl_test
- # owner: root
- # group: root
- user::rwx
- group::r-x
- other::r-x
- default:user::rwx
- default:user:student:rwx
- default:group::r-x
- default:mask::rwx
- default:other::r-x
- //新建一个文件test测试一下,是否可以继承权限
- [root@linli acl_test]# touch test
- [root@linli acl_test]# ll test
- -rw-rw-r--+ 1 root root 0 Jul 5 13:42 test
- [root@linli acl_test]# getfacl test //可以看到已经生效
- # file: test
- # owner: root
- # group: root
- user::rw-
- user:student:rwx #effective:rw-
- group::r-x #effective:r--
- mask::rw-
- other::r--
注意:这主要是为让ACL的权限设置能够被子目录继承。
-x:表示取消某个文件/目录的ACL 对于用户acl_specl的设置方法是: u:[用户账号列表]- [root@linli acl_test]# setfacl -x u:student test
- [root@linli acl_test]# getfacl test
- # file: test
- # owner: root
- # group: root
- user::rw-
- group::r-x
- mask::r-x
- other::r--
- [root@linli acl_test]# setfacl -x g:redhat messages
- [root@linli acl_test]# getfacl messages
- # file: messages
- # owner: root
- # group: root
- user::rw-
- user:magedu:rw-
- group::---
- mask::rw-
- other::---
-b:删除所有的ACL设置
setfacl -b file- [root@linli acl_test]# setfacl -m g:redhat:rx messages
- [root@linli acl_test]# getfacl messages
- # file: messages
- # owner: root
- # group: root
- user::rw-
- user:magedu:rw-
- group::---
- group:redhat:r-x
- mask::rwx
- other::---
- [root@linli acl_test]# setfacl -b messages
- [root@linli acl_test]# getfacl messages
- # file: messages
- # owner: root
- # group: root
- user::rw-
- group::---
- other::---