linux设置acl策略,从零开始学习Linux(二十四):ACL权限查看与设置

1、设置ACL权限

命令格式:setfacl [选项] 文件名;

选项说明:

-m:设定ACL权限;

-x:删除指定的ACL权限;

-b:删除所有的ACL权限;

-d:设定默认的ACL权限;

-k:删除默认ACL权限;

-R:递归设定ACL权限;

我们以上一小节中的举例说明:

2eeeeec5eb3e

整个过程如下:

(1)创建两个用户codea、codeb,作为团队开发人员;

(2)创建学习用户learnc;

(3)创建开发团队devgroup;

(4)创建项目目录/project;

(5)将项目目录的所有者变更为root,所属组变更为devgroup;

(6)将项目目录权限设置为rwxrwx---(770);

(7)使用ACL方式给用户赋予r-x权限;

(8)创建学习团队learngroup;

(9)使用ACL方式给团队learngroup赋予r-x权限;

[root@VM-0-8-centos ~]# useradd codea

[root@VM-0-8-centos ~]# useradd codeb

[root@VM-0-8-centos ~]# useradd learnc

[root@VM-0-8-centos ~]# groupadd devgroup

[root@VM-0-8-centos ~]# mkdir /project

[root@VM-0-8-centos ~]# chown root:devgroup /project/

[root@VM-0-8-centos ~]# chmod -R 770 /project/

[root@VM-0-8-centos ~]# setfacl -m u:learnc:rx /project

[root@VM-0-8-centos ~]# groupadd learngroup

[root@VM-0-8-centos ~]# setfacl -m g:learngroup:rx /project/

说明:

(1)为用户分配权限,使用 u:用户名:权限 格式。

(2)为组分配权限,使用 g:组名:权限 格式。

2、查看ACL权限

命令格式:getfacl 文件名;

执行命令,查看/project目录的ACL权限:

getfacl /project/

分别查看未设置ACL权限和设置ACL权限的文件,查看结果如下图所示:

2eeeeec5eb3e

普通未设置ACL权限的文件

2eeeeec5eb3e

设置ACL权限的文件

同时查看/project和/project2目录文件,如下图所示:

2eeeeec5eb3e

设置了ACL权限的文件夹比未设置的多了一个+号。

3、ACL最大有效权限

mask是用来指定最大有效权限的。

如果给某用户赋予了ACL权限,需要和mask权限进行“与”计算后,才能得到用户的真正权限。

此举是为了防止给用户或者用户组的权限过高,提前设定,做到权限的双重保证。

与计算逻辑,举例说明:

A

B

与计算

r

r

r

r

-

-

-

r

-

-

-

-

命令格式:setfacl -m m:权限 文件名;

setfacl -m m:rx /project

2eeeeec5eb3e

更改完mask最大权限以后,查看/project目录的ACL权限,如下图所示:

2eeeeec5eb3e

图中红框标注的信息表示:虽然group组的权限设置的是rwx,但是真正有效的权限是r-x。mask最大有效权限不影响所有者权限。

4、删除ACL权限

4.1、删除指定用户的ACL权限

命令格式:setfacl -x u:用户名 文件名;

执行命令,删除用户learnc的ACL权限:

setfacl -x u:learnc /project

整个直接过程如下图所示:

2eeeeec5eb3e

在删除命令执行前有user:learnc:r-x选项,执行后再次查看learnc的ACL权限消失。而且,此时设置的mask权限也恢复成rwx。

4.2、删除指定用户组的ACL权限

命令格式:setfacl -x g:组名 文件名;

执行命令,删除learngroup组的ACL权限:

setfacl -x g:learngroup /project

整个直接过程如下图所示:

2eeeeec5eb3e

4.3、删除文件所有的ACL权限

命令格式:setfacl -b 文件名;

在4.2章节中,我们将用户learnc和用户组learngroup的ACL权限给删除了。现在我们重新添加上,并且查看/project目录的ACL权限。如下图所示:

2eeeeec5eb3e

执行命令删除/project目录的所有的ACL权限:

setfacl -b /project

再次查看如下图所示:

2eeeeec5eb3e

5、递归设置ACL权限

递归是父目录在设定ACL权限时,所有的子文件、子目录以及子目录中的子文件也会拥有相同的ACL权限。

命令格式:setfacl -m u:用户名:权限 -R 目录名;

注意:-R选项必须放在后面才行,不能放在-m之前否则会报错!!!

执行命令,递归设置learnc用户/project目录的权限为rx:

setfacl -m u:learnc:rx -R /project

执行命令之前查看/project目录没有任何ACL权限,执行命令后再次查看,发现/project/china目录learnc用户都有了rx权限。

整个过程如下图所示:

2eeeeec5eb3e

6、设置默认ACL权限

默认ACL权限的作用是如果给父目录设定默认ACL权限,那么父目录中所有新建的子文件和子目录都会继承父目录的ACL权限;

命令格式:setfacl -m d:u:用户名:权限 目录名;

说明:可以在此命令后面加-R来进行递归,达到一条命令同时设置ACL默认权限和设置递归;

在/project/china目录下面新建文件shanxi,查看文件的ACL权限,如下图所示:

2eeeeec5eb3e

发现此时新创建的文件没有ACL权限。

执行命令为/project/china文件设置默认ACL权限:

setfacl -m d:u:learnc:rx /project/china/

在/project/china目录下面创建文件neimenggu,然后查看neimenggu文件对应的ACL权限,如下图所示:

2eeeeec5eb3e

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值