Linux facl文件访问控制getfacl、setfacl

前言:
安全

    当一个用户须要读写一个文件时,其文件的属主和属组都没有相应的权限,若是给other读写权限的话,这样全部的用户都有了读写权限,此时风险比较大,不安全。这时就须要一个附加权限了。
bash

    facl(文件访问控制列表):附加原有权限模型之上另外一层权限控制机构,保存至文件扩展属性信息中;
ide

一、getfacl命令spa

    #显示文件访问控制列表
orm

[root@vms002 www]# whatis getfacl
getfacl (1)          - get file access control lists

    命令语法:
递归

getfacl [-aceEsRLPtpndvh] file ...

    例:
get

[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--

二、setfacl命令it

    1)功能:设置文件访问控制列表
table

[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权限

三、实战演示

    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权限生效。

四、总结

    1)getfacl命令:查看文件/目录的访问控制列表权限;

    2)setfacl命令:设置文件/目录的访问控制列表权限;

    3)setfacl选项:-m设置facl权限,-x取消facl权限;

    4)d为默认的facl权限,生效于目录中新建立的文件;

    5)m为临时权限。

相关文章
相关标签/搜索