Linux权限非常的重要,正常情况下一个文件或目录有三种角色,分别为:目录或文件拥有者(User)、所属群组(Group)、其他用户(Other),每个角色对应:读、写、可执行(rwx)。这也是我们最常见的权限,#ls -l所看到第一列内容。第一位是文件类型,如:d是目录、-是普通文件、l是链接文件、c是字符文件、b是块文件等。 剩下9位即是文件对应三种角色的权限。如下图:
还会有其它一些特殊权限,如:SUID、SGID、 Sticky bit,还有一些需要通过命令lsattr来查看和chattr来设置的隐藏权限。
然而这些权限并没有办法单纯的针对某一用户或群组来设定特定的权限需求。这时候ACL可以帮助我们解决这个问题。
1.什么是ACL?
ACL(Access Control List)即访问控制列表。主要是针对单一用户,单一文件或目录进行rwx权限的细部设定。可以针对用户(User)、群组(Group)、默认属性掩码(mask)进行设置。
2.设置ACL前的准备工作
ACL是Linux系统权限额外支持的一项功能,需要文件系统的支持,例如:ReiserFS , EXT2 , EXT3 , EXT4 , JFS , XFS等都支持ACL功能。如果你的文件系统支持ACL,接下来查看你的ACL功能是否启用。在RHEL6中查看文件系统是否启用ACL。
(1)使用#mount命令查看ACL
可以看到sda7的ACL已经启用。
注意:
如果是用tune2fs命令启用分区的ACL功能,用mount命令是看不到的,要使用tune2fs -l <分区>,查看“Default mount options:”的信息。
(2)永久启用ACL
方法一:
如果你想永久在某个partition上启用ACL功能,可以修改 /etc/fstab 。 在rhel6的fstab文件中是用UUID来挂载,所以可以先来确定sda7的UUID号,如下图:
事实上由mount这条命令,你可以知道sda7是挂载在 /data目录。所以在fstab文件中找到挂载在该目录下partition就是一定是sda7了。当然也可以用更加可靠的做法,就是确定这个partition的UUID值。用blkid这条命令查到UUID,再和fstab中比对。
在sda7上启用ACL功能,只需在defaults后加上acl,如下图:
修改完成,保存退出后。重新用mount 命令挂载这个分区。命令如下:
#mount -o remount /dev/sda7
之后再用mount 查看所有已挂载设备,应该能够看 (rw,acl) 字样。
方法二:
还可以使用tune2fs命令设置分区永久启用ACL。
tune2fs -o acl <分区> #设置分区永久启用ACL。
tune2fs -l <分区> #查看分区详细信息
3.ACL相关设置命令
有以下三条命令:
getfacl:取得文件或目录的ACL设置信息。
setfac:设置文件或目录的ACL设置信息。
chacl:同setfacl,也是用来设定ACL设置信息。用法类似于chmod。不常用。
这里主要介绍getfacl和setfacl命令。下图是三条命令的man page:
