1.ACL访问控制概述 上一章节我们学习了基础权限UGO
、特殊权限,但所有的权限是针对某一类用户设置的, 如果希望对文件进行自定义权限控制,就需要用到文件的访问控制列表ACL
UGO设置基本权限: 只能一个用户,一个组和其他人 ACL设置基本权限: r、w、x 设定acl
只能是root
管理员用户. 相关命令: getfacl
, setfacl
acl
基本使用方式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 //环境准备 [root@lqz ~] //文件在没有设定acl, 看到的和传统权限是一样 [root@lqz ~] -rw-r--r-- 1 root root 0 10-26 13:59 /home/test.txt //使用getacl查看权限 [root@lqz ~] user::rw- //文件owner权限 group::r-- //文件拥有组权限 other::r-- //其他人权限
1.设定acl
权限案例如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 -rw-r--r-- 1 root root 1380 Feb 27 11:25 passwd alice 拥有读写权限 rw bgx 没有任何权限 - jack 组拥有读权限 r 匿名用户拥有读写权限 rw //建立相关用户 [root@lqz ~] [root@lqz ~] [root@lqz ~] //增加用户 alice 权限 [root@lqz ~] //增加用户 bgx 权限 [root@lqz ~] //增加匿名用户权限 [root@lqz ~] //增加组权限 [root@lqz ~] 注意: 如果用户同时属于不同的两个组,并且两个组设定了acl访问控制 1.根据acl访问控制优先级进行匹配规则 2.如有用户拥有多个组的权限不同的权限,优先使用最高权限(模糊匹配)
2.查看acl
权限 1 2 3 4 5 6 7 8 9 10 11 12 13 14 [root@lqz ~] -rw-rw-rw-+ 1 root root 1531 Jan 26 07:52 passwd [root@lqz ~] user::rw- user:bgx:--- user:alice:rw- group::r-- group:jack:r-- mask::rw- other::rw-
3.移除acl
权限 1 2 3 4 5 6 7 8 9 10 11 //移除jack组的acl权限 [root@lqz ~] //移除bgx用户的acl权限 [root@lqz ~] //移除文件和目录所有acl权限 [root@lqz ~] //移除默认的acl [root@lqz ~]
4.查看acl
帮助 1 2 3 4 5 6 //EXAMPLES 示例文档 [root@lqz ~] //复制 file1 的 ACL 权限给 file2 [root@lqz ~] [root@lqz ~]
2.ACL高级特性MASK mask
用于临时降低用户或组的权限,但不包括文件的所有者和其他人。mask
最主要的作用是用来决定用户的最高权限。
mask
默认不会对匿名用户降低权限,所以为了便于管理文件的访问控制,建议匿名用户的权限置为空
1 2 //临时降低用户或组权限 [root@lqz ~]
小结 1.mask
会影响哪些用户,除了所有者和其他人。 2.mask
权限决定了用户访问文件时的最高权限。(如何影响) 3.mask
用于临时降低用户访问文件的权限。(mask做什么) 4.任何重新设置acl
访问控制会清理mask
所设定的权限。
3.ACL高级特性Default default: 继承(默认)
alice
能够对/opt
目录以及以后在/opt
目录下新建的文件有读、写、执行权限
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 //赋予 alice 对/home 读写执行权限 [root@lqz ~] //赋予 alice 对以后在/home 下新建的文件有读写执行权限(使 alice 的权限继承) [root@lqz ~] //检查对应的权限 [root@linux-node1 ~] getfacl: Removing leading '/' from absolute path names user::rwx user:alice:rwx group::rwx mask::rwx other::rwx default:user::rwx default:user:alice:rwx default:group::rwx default:mask::rwx default:other::rwx
4.ACL访问控制实践案例 案例1: 将新建文件的属性修改tom:admin
, 权限默认为644 要求: tom
对该文件有所有的权限, mary
可以读写该文件, admin
组可以读写执行该文件, jack
只读该文件, 其他人一律不能访问该文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 //实验前, 建立几个普通用户 [root@lqz ~] [root@lqz ~] [root@lqz ~] [root@lqz ~] [root@lqz ~] [root@lqz ~] [root@lqz ~] [root@lqz ~] //检查用户属性 [root@linux-node1 ~] uid=1004(tom) gid=1004(tom) groups =1004(tom) [root@linux-node1 ~] uid=1006(mary) gid=1006(mary) groups =1006(mary),1007(admin) [root@linux-node1 ~] uid=1005(bean) gid=1005(bean) groups =1005(bean),1007(admin) [root@linux-node1 ~] uid=1002(jack) gid=1002(jack) groups =1002(jack) [root@linux-node1 ~] uid=1007(sutdent) gid=1008(sutdent) groups =1008(sutdent) //准备相关文件 [root@linux-node1 ~] [root@linux-node1 ~] [root@linux-node1 ~] //检查设定前的acl列表 [root@linux-node1 ~] user::rw- group::r-- other::r-- //设定acl权限 [root@linux-node1 ~] //检查acl权限 [root@linux-node1 ~] user::rwx user:jack:r-- user:mary:rw- group::r-- group:admin:rwx mask::rwx other::---
acl的控制规则是从上往下匹配 1.tom
由于是文件的拥有者,所以直接按照user::rwx
指定的权限去操作 2.mary
用户从上往下寻找匹配规则,发现user:mary:rw-
能够精确匹配mary
用户,尽管mary
属于admin
组,同时admin
组有rwx
的权限,但是由于mary
用户的规则在前面,所有优先生效。 3.bean
由于找不到精确匹配的规则,而bean
是属于admin
组,根据文件的定义,该文件是属于admin
组,所以bean
的权限是按照group:admin:rwx
的权限去操作。 4.jack
用户从上往下寻找匹配规则,发现user:jack:r--
能够精确匹配jack
用户。 5.student
用户找不到精确匹配的user
定义规则, 也找不到相关组的定义规则,最后属于other
。
案例2: lab acl setup
1 2 3 4 5 6 7 8 9 10 controller组成员有:student sodor组成员有:thomas,james 目录: /shares/steamies 文件: /shares/steamies/file 脚本: /shares/steamies/test.sh controller属于该目录的所属组, 新建文件必须属于controller组 sodor组的成员对该目录拥有rwx权限 sodor组成员james对该目录及子目录(包括以后新建立的文件)没有任何权限
实际操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 //准备用户 [root@linux-node1 ~] [root@linux-node1 ~] [root@linux-node1 ~] [root@linux-node1 ~] [root@linux-node1 ~] //准备目录 [root@linux-node1 ~] [root@linux-node1 ~] [root@linux-node1 ~] [root@linux-node1 ~] [root@linux-node1 ~] [root@linux-node1 ~] //设定权限(X表示,如果原本有执行权限就保留,如果没有则不添加) [root@linux-node1 ~] //设定继承规则 [root@linux-node1 ~] [root@linux-node1 steamies] getfacl: Removing leading '/' from absolute path names user::rwx user:james:--- group::r-x group:sodor:rwx mask::rwx other::r-x default:user::rwx default:group::r-x default:group:sodor:rwx default:mask::rwx default:other::r-x