Linux ACL 介绍:
ACL 是 Access Control List 缩写,是普通权限(所有者,所有组,其他用户)的补充.
如果要使用ACL权限.必须要有分区系统的支持,ReiserFS, EXT2/EXT3, JFS, XFS等文件系统都是默认就支持ACL权限的.不需要特地开启此功能,由于默认就支持所以可以直接使用命令配置权限就OK啦.不过在 CentOS 则默认不支持 ACL,需要另行开启.
开启ACL:
现在假设我们有一个独立的分区并且被挂载到了/engine目录上.那么我们就可以使用以下命令来开启这个分区的ACL功能.
[root@localhost /]#mount /dev/hda5 /engine -o remount,acl上面的命令其实就可以让/engine所挂载的分区支持ACL了,但是千万不要忘了,mount命令所做的操作在系统重新启动后就会失效.所以我们还需要修改/etc/fstab文件.
[root@localhost /]#vi /etc/fstab
/dev/hda5 /engine ext3 defaults,acl 0 0
/etc/fstab里面可能会有好多行,不过没关系,我们只需要把这一行按照自己的分区情况写到最后一行就好了.
设置与查看ACL权限:
getfacl:用于查看某个文件和目录的ACL权限.
用法如下,假设我们有一个文件名为china.txt并且设置好了ACL权限,那么就可以使用以下命令来查看china.txt的ACL权限:
[root@localhost /]#getfacl china.txt
# file: china.txt #文件名
# owner: root #文件所有者和ls -l看到的是一样的.
# group: root #文件所有组和ls -l看到的是一样的.
user::rwx #所有者权限和ls -l看到的是一样的.
user:yue:r-x #这里就是ACL为yue这个用户单独设置的权限了.
group::r-- #所有组权限和ls -l看到的是一样的.
mask::r-x #权限掩码,正对目录有效,下级文件会继承这个权限.
other::r-- #其他用户权限和ls -l看到的是一样的.
setfacl:此命令是用于设置ACL权限的命令,它有几个主参数
-m :设置文件ACL的u,g,o权限.
-x :删除文件ACL的u,g,o权限.
-b :移除所有的 ACL 参数
-k :移除预设权限.
-R :递归设置权限.
-d :设置预设权限.
举例:
[root@www ~]# touch china.txt[root@www ~]# ll china.txt
-rw-r--r-- 1 root root 0 Feb 27 13:28 china.txt
[root@www ~]# setfacl -m u:yue:rx china.txt
[root@www ~]# ll acl_test1