访问控制列表(Access Control List,ACL)其实就是一个框架结构,其目的是为了对某种访问进行控制。在我们Linux中FACL就是文件访问控制列表了,通过设置,我们可以使同一个文件,让不同的用户有不同的权限。例如我们可以让A用户对这个文件有读的权限,而让B用户对这个文件什么权限都没有。那么怎样在Linux中实现访问控制列表呢?下面就来看看吧!这里我们以前面创建的磁盘阵列/dev/md1这个文件系统。
1、挂载文件系统
文件系统在挂载的时候是不会自动启用acl功能的,需要在挂载的时候指定acl这个挂载选项。我们可以使用两种方法。一是永久性的:就是直接编辑配置文件了。另一种就是临时性的:就是使用命令重新挂载的时候指定acl选项了。
临时性:
- [root@stu14 data]# mount –o remount,acl /dev/md1 /data
或
- [root@stu14 data]# tune2fs –o acl /dev/md1
这种方式只要重启系统或重新挂载时不指定acl选项,就会失效的;
永久性:
- [root@stu14 data]# vim /etc/fstab
- /dev/md1 /data ext3 defaults,acl 0 0
编辑配置文件保存即可,可以重新挂载使其生效。
2、设定ACL
查看文件的acl列表的命令的使用格式:
- # getfacl FIlENAME
例:
- [root@stu14 data]# getfacl test
- # file: test
- # owner: root
- # group: magedu
- user::rw-
- group::r--
- other::r--
这里只有这个文件的默认权限,相信一看就可以看懂了;
设置acl列表的命令的使用格式
- #setfacl <mx> <u:username:mode|g:groupname> FILE
-m:用来设定某项acl的;
-x:取消某项acl的;
u:对用户进行acl设定;
g:对组进行acl设定;
例:添加acl记录
- [root@stu14 data]# setfacl -m u:gentoo:rw- test
- [root@stu14 data]# getfacl test
- # file: test
- # owner: root
- # group: magedu
- user::rw-
- user:gentoo:rw-
- group::r--
- mask::rw-
- other::r--
是不是看到多了一行,那一行就是我们加进来的,这是好gentoo用户就可以对这个文件进行读写了。对组设置无非就是把u改成g,用户改成组就ok了,很简单的。
需要注意一点的是只有文件的属主和root用户可以设置文件的访问控制列表;
例:删除acl记录
- [root@stu14 data]# setfacl -x u:gentoo test
- [root@stu14 data]# getfacl test
- # file: test
- # owner: root
- # group: magedu
- user::rw-
- group::r--
- mask::r--
- other::r--
取消一项记录直接-x,u加username就行了,不用再指定权限了。
3、设置默认acl
- [root@stu14 data]# setfacl –m d:u:gentoo:rw- test1/
- [root@stu14 data]# setfacl –m d:u:gentoo:rw- test1/
所谓的默认acl就是我们为一个目添加acl记录,在这个目录下创建的所有文件都会自动添加这个acl记录,这个实现也很简单,只要在u或g前面加d:就ok了。不过这样不长用的。
4、递归设置acl
- [root@stu14 data]# setfacl –R –m u:gentoo:rw- test1/
这个所谓的递归就是这个目录中有文件有目录时,我们只为目录test1添加acl,这个目录下的所有文件都会添加这个acl记录的;
5、权限的生效次序
首先我们再对test文件添加用户和组的acl记录,再来看看acl记录的顺序;
- [root@stu14 data]# setfacl -m u:gentoo:rw- test
- [root@stu14 data]# setfacl -m g:centos:rw- test
- [root@stu14 data]# getfacl test
- # file: test
- # owner: root
- # group: magedu
- user::rw-
- user:gentoo:rw-
- group::r--
- group:centos:rw-
- mask::rw-
- other::r--
从中我们就可以看出一些端倪了,我们添加的acl记录并不是添加在最后面的,而是有次序的。其实,从上到下就是权限的生效次序了:属主-->用户ACL-->属组-->组ACL-->其它用户。
最后说下,如果我们想将这些添加好acl的文件归档且保留这些acl信息怎么办呢?这就需要我们在归档的时候使用--acls这个选项了,因为我们使用tar归档的时候默认是不会将acl信息归档的。我想tar的使用就不用多写了吧!呵呵
一起努力!
转载于:https://blog.51cto.com/rrliang/800862