3.2 设置权限ACL(access control list)
假设:/data所有者与所属组均为root,在不改变所有者的前提下,要求用户tom对该目录有完全访问权限(rwx)。只能考虑:
方法一:给/data的其他人增加rwx权限
方法二:将tom加入到root组中,并为root组分配rwx权限
ACL文件权限管理:对不同用户设置不同的基本权限(rwx),可设置对象数量不同
ACL是UGO的补充,优先级别比UGO高。
3.2.1 setfacl
setfacl命令可以用来细分linux下的文件权限,可以对每一个文件或目录设置更精确的文件权限,setfacl可以更精确的控制权限的分配。比如:让某一个用户对某一个文件具有某种权限。
ACL可以针对单一用户、单一文件或目录来进行r,w,x的权限控制,对于需要特殊权限的使用状况有一定帮助。
如,某一个文件,不让单一的某个用户访问。
setfacl
命令的基本语法如下:
setfacl [选项] [目录|文件]
参数说明:
-
-m
:设置后续acl参数 -
-x
:删除后续acl参数 -
-b
:删除全部的acl参数 -
-k
:删除默认的acl参数 -
-R
:递归设置acl,包括子目录 -
-d
:设置默认acl
例:
为用户sam设置文件file1的读写权限,为li设置无权限
useradd sam
useradd li
setfacl -m u:sam:rw /tmp/file1
setfacl -m u:li:- /tmp/file1
# 对象:对象名:权限
为组group2设置文件file1的读写执行权限
setfacl -m g:group2:rwx /tmp/file1
将其他人对文件file1的权限设置为可读写
setfacl -m o::rw /tmp/file1
删除sam对文件file1的权限
setfacl -x u:sam /tmp/file1
删除文件file1所有扩展访问权限
setfacl -b /tmp/file1
3.2.2 getfacl
使用getfacl命令可以查看文件的ACL信息。对于每一个文件和目录,getfacl命令显示文件的名称、用户所有者、组群所有者和访问控制列表(ACL)。
getfacl
命令的基本语法如下:
getfacl [选项] [目录|文件]
参数说明:
-
-a
: --access,仅显示文件访问控制列表。 -
-d
:--default,仅显示默认的访问控制列表。 -
-c
: --omit-header,不显示注释表头。 -
-e
:--all-effective,打印所有有效权限注释,即使与 ACL 条目定义的权限相同。 -
-E
:--no-effective,显示无效权限。 -
-s
:--skip-base,跳过仅包含基本 ACL 条目(owner、group 和 others)的文件。 -
-R
:--recursive,递归显示子目录。
例:
查看文件file1的ACL信息
[root@centos-1 ~]# getfacl /tmp/file1
getfacl: Removing leading '/' from absolute path names
# file: tmp/file1
# owner: 1008
# group: root
user::rw-
group::r--
other::r--