setfacl 命令:用于管理文件的 ACL 规则,格式为“setfacl [参数] 文件名称”。文件的 ACL 提供的是在所有者、所属组、其他人的读/写/执行权限之外的特殊权限控制,使用 setfacl 命令可以针对单一用户或用户组、单一文件或目录来进行读/写/执行权限的控制。
1、ACL 基本用法
文件权限管理之: ACL 设置基本权限(r、w、x)
UGO 设置基本权限: 只能一个用户,一个组和其他人
一般我们会用这两个命令:
getfacl:取得某个文件/目录的ACL设置项目
setfacl:设置某个文件/目录的ACL设置项目
setfacl 参数
参数 | 意义 |
---|---|
-m | 设置后续acl参数 |
-x | 删除后续acl参数 |
-b | 删除全部的acl参数 |
-k | 删除默认的acl参数 |
-R | 递归设置acl,包括子目录 |
-d | 设置默认acl |
1.1设置:
[root@c66 ~]# touch /home/test.txt
[root@c66 ~]# ll /home/test.txt
-rw-r--r-- 1 root root 0 Feb 19 11:43 /home/test.txt
[root@c66 ~]# getfacl /home/test.txt
# file: home/test.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--
[root@c66 ~]# setfacl -m u:alice:rw /home/test.txt
[root@c66 ~]# setfacl -m u:john:- /home/test.txt
1.2查看/删除:
查看:
[root@c66 ~]# ll /home/test.txt
-rw-rw-rw-+ 1 root root 0 Feb 19 11:43 /home/test.txt
[root@c66 ~]# getfacl /home/test.txt
# file: home/test.txt
# owner: root
# group: root
user::rw-
user:alice:rw-
user:john:---
group::r--
mask::rw-
other::rw-
设置组 user1的 acl 权限
[root@c66 ~]# setfacl -m g:user1:r /home/test.txt
[root@c66 ~]# getfacl /home/test.txt //查看
getfacl: Removing leading '/' from absolute path names
# file: home/test.txt
# owner: root
# group: root
user::rw-
group::r--
group:user1:r--
mask::r--
other::rw-
删除:
[root@c66 ~]# setfacl -x g:user1 /home/test.txt //删除组 user1的 acl 权限
[root@c66 ~]# setfacl -b /home/test.txt //删除所有 acl 权限
[root@c66 ~]# getfacl /home/test.txt //查看acl权限
# file: home/test.txt
# owner: root
# group: root
user::rw-
group::r--
other::rw-
[root@c66 ~]#
1.3查看帮助
[root@c66 ~]# man setfacl
SETFACL(1) Access Control Lists SETFACL(1)
NAME
setfacl - set file access control lists
SYNOPSIS
setfacl [-bkndRLPvh] [{-m|-x} acl_spec] [{-M|-X} acl_file] file ...
setfacl --restore=file
DESCRIPTION
This utility sets Access Control Lists (ACLs) of files and directories. On
the command line, a sequence of commands is followed by a sequence of files
(which in turn can be followed by another sequence of commands, ...).
......
1.4权限复制
复制file1的 ACL权限给file2
[root@c66 ~]# getfacl file1 |setfacl --set-file=- file2
[root@c66 ~]# getfacl file1
# file: file1
# owner: root
# group: root
user::rw-
group::r--
other::r--
[root@c66 ~]# getfacl file2
# file: file2
# owner: root
# group: root
user::rw-
group::r--
other::r--
[root@c66 ~]#
2、ACL 高级用法
mask:
用于临时降低用户或组(除属主和其他人)的权限
建议:
为了方便管理文件权限,其他人的权限置为空
[root@c66 ~]# setfacl -m m::--- /home/test.txt
[root@c66 ~]# getfacl /home/test.txt
# file: home/test.txt
# owner: root
# group: root
user::rw-
group::r-- #effective:---
group:user1:r-- #effective:---
mask::---
other::rw-
[root@c66 ~]#
default: 继承(默认)
要求: 希望 alice 能够对/home 以及以后在/home 下新建的文件
有读、写、执行权限
思路:
步骤一: 赋予 alice 对/home 读、写、执行权限
[root@c66 ~]# setfacl -m u:alice:rwx /home
[root@c66 ~]# getfacl /home
# file: home
# owner: root
# group: root
user::rwx
user:alice:rwx
group::r-x
mask::rwx
other::r-x
[root@c66 ~]#
步骤二: 赋予 alice 对以后在/home 下新建的文件有读、写、执行权限 (使 alice 的权限继承)
[root@c66 ~]# setfacl -m d:u:alice:rwx /home
[root@c66 ~]# getfacl /home
# file: home
# owner: root
# group: root
user::rwx
user:alice:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:alice:rwx
default:group::r-x
default:mask::rwx
default:other::r-x
[root@c66 ~]#