setfacl命令----可以用来细分linux下的文件权限。
chmod命令----可以把文件权限分为u,g,o三个组,而setfacl可以对每一个文件或目录设置更精确的文件权限。
换句话说,setfacl可以更精确的控制权限的分配。
比如:让某一个用户对某一个文件具有某种权限。
这种独立于传统的u,g,o的rwx权限之外的具体权限设置叫ACL(Access Control List)
ACL可以针对单一用户、单一文件或目录来进行r,w,x的权限控制,对于需要特殊权限的使用状况有一定帮助。
如,某一个文件,不让单一的某个用户访问。
setfacl命令可以识别以下的规则格式:
[d[efault]:] [u[ser]:]uid [:perms] 指定用户的权限,文件所有者的权限(如果uid没有指定)。
[d[efault]:] g[roup]:gid [:perms] 指定群组的权限,文件所有群组的权限(如果gid未指定)
[d[efault]:] m[ask][:] [:perms] 有效权限掩码
[d[efault]:] o[ther] [:perms] 其他的权限
# getfacl /tengqing/ getfacl: Removing leading '/' from absolute path names # file: tengqing/ #文件名为:tengqing # owner: root #文件拥有者是root # group: root #文件属组是group user::rwx #拥有者root的权限 user:tengqing:rwx #用户tengqing权限,通过命令:setfacl -m u:tengqing:rwx tengqing 来可以设定 group::r-x #属组root的权限 mask::rwx #掩码 other::r-x #其它人的权限 default:user::rwx #默认权限,当用户创建文件时,会使用这个权限应用到新创建的文件 default:user:tengqing:rwx #用户tengqing的默认权限,通过命令:setfacl -m d:u:tengqing:rwx tengqing 来设定
default:group::r-x
default:mask::rwx
default:other::r-x
# setfacl --version #本篇所使用的setfacl版本 setfacl 2.2.49 # tune2fs -l /dev/sda3 | grep option #查看文件系统是否支持acl权限控制 Default mount options: acl
开启acl支持有两种方法:
1)、修改mount选项:
# mount -o remount,acl /dev/vda3 /mnt/acltest # vim /etc/fstab #开机自动挂载
/dev/vda3 /mnt/acltest ext4 defaults,acl 0 0 2)
2)、使用tune2fs修改文件系统信息:
tune2fs开启acl后已是永久有效,无需再改fstab的mount选项:
# tune2fs -o acl /dev/vda3 #修改文件系统自身信息来设置acl选项 # tune2fs -o ^acl /dev/vda3 #取消acl选项 # setfacl -m u:joe:rx bobdir/ #给某个用户设置权限
# setfacl -m g:aclgp1:rx bobdir/ #给某个组设置权限
# setfacl -x g:aclgp1 bobdir/ #取消某项权限
对于组权限,setfacl设置的权限只对主组(即useradd -g或usermod -g的组)有效,对附加组(即useradd -G或usermod -aG的组)无效,即使文件的所有组已改为附加组。
setfacl和chmod设置的权限可以相互覆盖,当二者设置的权限不一致时,以使用getfacl看到的“#effective:”后的权限为准。