前言:
当一个用户需要读写一个文件时,其文件的属主和属组都没有相应的权限,如果给other读写权限的话,这样所有的用户都有了读写权限,此时风险比较大,不安全。这时就需要一个附加权限了。
facl(文件访问控制列表):附加原有权限模型之上另一层权限控制机构,保存至文件扩展属性信息中;
1、getfacl命令
#显示文件访问控制列表
[root@vms002 www]# whatis getfacl getfacl (1) - get file access control lists
命令语法:
getfacl [-aceEsRLPtpndvh] file ...
例:
[root@vms002 www]# ls rhel.txt [root@vms002 www]# getfacl rhel.txt # file: rhel.txt # owner: root # group: root user::rw- group::r-- mask::r-- other::r--
说明:带#号的是系统默认权限,下面的才是ACL控制权限
[root@vms002 www]# getfacl --omit rhel.txt user::rw- group::r-- mask::r-- other::r--
2、setfacl命令
1)功能:设置文件访问控制列表
[root@vms002 www]# whatis setfacl setfacl (1) - set file access control lists
2)命令语法
setfacl [-bkndRLPvh] [{-m|-x} acl_spec] [{-M|-X} acl_file] file ...
3)常用选项
选项 |
含义 |
-m |
修改文件的当前访问控制权限 -m u:username:perms file \\设置用户的facl权限(文件) -m g:groupname:perms file \\设置组的facl权限(文件) -m m::Perms file \\设定mask值 -m d:u:username:Perms dir \\d给目录设置facl默认权限(目录) -m d:g:groupname:Perms dir \\d给目录设置facl默认权限(目录) |
-x |
取消facl权限 -x u:username file \\取消用户的facl权限(文件) -x g:groupname file \\取消组的facl权限(文件) -x d:u:username dir \\取消目录的用户的facl默认权限(目录) -x d:g:groupname dir \\取消目录的组的facl默认权限(目录) |
-R |
递归 |
-b |
删除全部的facl权限 |
-k |
删除默认的facl权限 |
-d |
设置默认facl权限 |
3、实战演示
1)给rhel.txt文件设置facl读写权限以及取消facl权限[root@vms002 www]# ls rhel.txt #查看rhel.txt的facl权限 [root@vms002 www]# getfacl rhel.txt # file: rhel.txt # owner: root # group: root user::rw- group::r-- mask::r-- other::r-- #设置用户jerry对rhel.txt文件拥有facl的读写权限 [root@vms002 www]# setfacl -m u:jerry:rw- rhel.txt #查看rhel.txt的facl权限,是否设置成功 [root@vms002 www]# getfacl rhel.txt # file: rhel.txt # owner: root # group: root user::rw- user:jerry:rw- #jerry用户已拥有读写权限 group::r-- mask::rw- other::r-- #取消用户jerry对rhel.txt文件拥有facl的读写权限 [root@vms002 www]# setfacl -x u:jerry rhel.txt #查看rhel.txt的facl权限,是否取消成功 [root@vms002 www]# getfacl rhel.txt # file: rhel.txt # owner: root # group: root user::rw- group::r-- mask::r-- other::r--
2)给www目录设置facl的默认rwx权限以及取消facl的默认权限
[root@vms002 www]# ls rhel.txt www #查看www目录的facl默认权限 [root@vms002 www]# getfacl www/ # file: www/ # owner: root # group: root user::rwx group::r-x other::r-x #设置jerry用户对www目录拥有facl的默认rwx权限 [root@vms002 www]# setfacl -m d:u:jerry:rwx www/ #查看www目录的facl默认权限,是否设置facl权限成功 [root@vms002 www]# getfacl www/ # file: www/ # owner: root # group: root user::rwx group::r-x other::r-x default:user::rwx default:user:jerry:rwx #jerry用户已拥有facl的rwx默认权限 default:group::r-x default:mask::rwx default:other::r-x #取消jerry用户对www目录的facl默认权限 [root@vms002 www]# setfacl -x d:u:jerry www/ #查看www目录的facl默认权限,是否取消facl默认权限成功 [root@vms002 www]# getfacl www/ # file: www/ # owner: root # group: root user::rwx group::r-x other::r-x default:user::rwx default:group::r-x default:mask::r-x default:other::r-x
提示:这个d的意思是说default,不管谁在www目录里创建的文件/目录,对jerry用户都有一个默认的facl权限rwx,这里强调的是www目录里新创建的,不包含父目录本身和旧文件。
3)设置rhel.txt文件的mask临时权限
[root@vms002 www]# ls rhel.txt www #查看rhel.txt文件的mask的值 [root@vms002 www]# getfacl rhel.txt # file: rhel.txt # owner: root # group: root user::rw- group::r-- mask::r-- other::r-- #设置rhel.txt文件的mask临时权限为读写权限 [root@vms002 www]# setfacl -m m::rw- rhel.txt #查看rhel.txt文件的mask的值,是否设置成功 [root@vms002 www]# getfacl rhel.txt # file: rhel.txt # owner: root # group: root user::rw- group::r-- mask::rw- #mask值已设置(临时权限) other::r--
提示:mask为临时权限,如果mask的权限设置为---,则o生效;如果mask的权限非---,则mask权限生效。
4、总结
1)getfacl命令:查看文件/目录的访问控制列表权限;
2)setfacl命令:设置文件/目录的访问控制列表权限;
3)setfacl选项:-m设置facl权限,-x取消facl权限;
4)d为默认的facl权限,生效于目录中新创建的文件;
5)m为临时权限。