前言:
ACL是什么?
ACL(Access Control List)是一种权限控制机制,用于在Linux系统中对文件和目录进行细粒度的访问控制。传统的Linux权限控制机制基于所有者、所属组和其他用户的三个权限类别(读、写、执行),而ACL则允许管理员为文件和目录添加更多的用户和组,以控制其访问权限。
通过使用ACL,管理员可以为特定用户或组设置特定的权限,而不局限于默认的所有者、所属组和其他用户。例如,管理员可以允许某个用户只读取文件,而阻止其修改或删除文件。
增加:
[root@localhost ~]# mkdir /project
添加测试目录
[root@localhost ~]# useradd zs
添加测试用户
[root@localhost ~]# useradd ls
添加测试组
[root@localhost ~]# groupadd tgroup
将用户添加到组
[root@localhost ~]# gpasswd -a zs tgroup
正在将用户“zs”加入到“tgroup”组中
[root@localhost ~]# gpasswd -a ls tgroup
正在将用户“ls”加入到“tgroup”组中
查看创造的组是否正常建立
cat /etc/group
修改目录的所有者和所属组
[root@localhost ~]# chown root:tgroup /project
[root@localhost ~]# ll -d /project
drwxr-xr-x. 2 root tgroup 6 2月 23 18:35 /project
设定需要的权限
[root@localhost ~]# chmod 770 /project
[root@localhost ~]# ll -d /project
drwxrwx---. 2 root tgroup 6 2月 23 18:35 /project
为临时用户分配权限
首先我们需要添加临时用户
[root@localhost ~]# useradd tempuser
[root@localhost ~]# passwd tempuser
为临时用户分配特定权限
[root@localhost ~]# setfacl -m u:tempuser:rx /project
[root@localhost ~]# getfacl /project
getfacl: Removing leading '/' from absolute path names
# file: project
# owner: root
# group: tgroup
user::rwx
user:tempuser:r-x
group::rwx
mask::rwx
other::---
查看目录权限,注意+,表示文件或目录有acl权限
[root@localhost ~]# ll -d /project
drwxrwx---+ 2 root tgroup 6 2月 23 18:35 /project
验证ACL权限
切换到临时用户tempuser
[root@localhost ~]# su tempuser
[tempuser@localhost root]$
验证可以进入project目录
[tempuser@localhost root]$ cd /project
[tempuser@localhost project]$
验证不能在project中创建文件
[tempuser@localhost project]$ touch test.txt
touch: 无法创建"test.txt": 权限不够
控制组的ACL权限
创建一个temp组
[tempuser@localhost project]$ su root
密码:
[root@localhost project]# groupadd temp
设置组的ACL
[root@localhost project]# setfacl -m g:temp:rx /project
查看设置后ACL
[root@localhost project]# getfacl /project
getfacl: Removing leading '/' from absolute path names
# file: project
# owner: root
# group: tgroup
user::rwx
user:tempuser:r-x
group::rwx
group:temp:r-x
mask::rwx
other::---
创建一个用户
[root@localhost project]# useradd tempu02
[root@localhost project]# passwd tempu02
将用户添加到temp组中
[root@localhost project]# gpasswd -a tempu02 temp
正在将用户“tempu02”加入到“temp”组中
验证
[root@localhost project]# su tempu02
#可以进入目录
[tempu02@localhost project]$ cd /project
#不能创建文件
[tempu02@localhost project]$ touch aa.txt
touch: 无法创建"aa.txt": 权限不够
删除ACL权限
# 删除指定ACL权限
[root@localhost ~]# setfacl -x u:tempuser /project
[root@localhost ~]# getfacl /project
getfacl: Removing leading '/' from absolute path names
# file: project
# owner: root
# group: tgroup
user::rwx
group::rwx
group:temp:r-x
mask::rwx
other::---
# 删除所有ACL权限
[root@localhost ~]# setfacl -b /project
[root@localhost ~]# getfacl /project
getfacl: Removing leading '/' from absolute path names
# file: project
# owner: root
# group: tgroup
+
user::rwx
group::rwx
other::---
# 注意: 权限没有 +
[root@localhost ~]# ll -d /project
drwxrwx---. 2 root tgroup 6 8月 23 13:07 /project
总之,ACL权限是Linux系统中一种更灵活的权限控制机制,允许管理员为文件和目录设置细粒度的访问控制。