美文网首页Linux
从零开始学习Linux(二十四):ACL权限查看与设置

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

作者: 通靈鹿小六 | 来源:发表于2020-12-15 07:36 被阅读0次

1、设置ACL权限

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

  • -m:设定ACL权限;
  • -x:删除指定的ACL权限;
  • -b:删除所有的ACL权限;
  • -d:设定默认的ACL权限;
  • -k:删除默认ACL权限;
  • -R:递归设定ACL权限;

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

整个过程如下:
(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权限的文件,查看结果如下图所示:

普通未设置ACL权限的文件 设置ACL权限的文件

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

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

3、ACL最大有效权限

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

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

与计算逻辑,举例说明:

A B 与计算
r r r
r - -
- r -
- - -

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

setfacl -m m:rx /project

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

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

4、删除ACL权限

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

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

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

setfacl -x u:learnc /project

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

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

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

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

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

setfacl -x g:learngroup /project

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

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

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

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

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

setfacl -b /project

再次查看如下图所示:

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

整个过程如下图所示:

6、设置默认ACL权限

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

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

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

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

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

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

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

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

相关文章

  • 从零开始学习Linux(二十四):ACL权限查看与设置

    1、设置ACL权限 命令格式:setfacl [选项] 文件名;选项说明: -m:设定ACL权限; -x:删除指定...

  • 2019-12-20 目录与文件 ACL权限设置命令setfac

    查看目录或文件当前ACL权限 getfacl /app #app为目录名称 设置目录或文件ACL权限 setfac...

  • Linux权限管理--ACL权限

    Linux setfacl 命令帮助: 选项 Linux权限管理--ACL权限 ACL权限不是针对某个文件或某个目...

  • ACL权限

    ACL权限ZooKeeper的ACL可针对znodes设置相应的权限信息。 一个 ACL 权限设置通常可以分为 3...

  • T-05-Linux使用者管理大纲

    1. Linux账号管理与ACL权限设置 要登入 Linux 系统一定要有账号与密码才行,否则怎么登入,您说是吧?...

  • acl 权限列表

    什么是权限列表对与文件的权限进行附加补充说明的一个权限设定方式 如何去查看权限列表 如何设定acl权限 acl默认...

  • 20170724 文件权限

    概要 linux文件权限linux文件特殊权限ACL 访问控制列表 一、linux文件权限 (一)linux文件属...

  • Linux之——ACL

    ACL: 访问控制列表 access control list 实现灵活的权限管理设置ACL权限setfac...

  • Linux账号管理与ACL权限设置

    《鸟哥的Linux私房菜》笔记 1、Linux的账号与用户组 如何管理好一个服务器主机的账号,以及在管理主机账号时...

  • Sphinx整合PHP

    1.linux下网站开发 : (1).acl权限设置 (2).修改apache进程执行者 (3).修改samba的...

网友评论

    本文标题:从零开始学习Linux(二十四):ACL权限查看与设置

    本文链接:https://www.haomeiwen.com/subject/nxwmgktx.html