ACL 访问控制概述
ACL 高级特性 MASK
ACL 高级特性 Default
ACL 访问控制实践案例
一、ACL 访问控制概述
的权限是针对某一类用户设置的,如果希望对某个指定的用户进行单独的权限控制,就需要用到文件的访问控制列表 ACL
设定 acl 只能是 root 管理员用户. 相关命令: getfacl
setfacl
acl 基本使用方式
环境准备
[root@liza ~]# cp /etc/passwd /root/passwd
复制代码
文件在没有设定 acl, 看到的和传统权限是一样
[root@liza ~]# ll passwd
-rw-r--r--. 1 root root 2287 Jan 12 14:25 passwd
复制代码
使用 getacl 查看权限
[root@liza ~]# getfacl passwd
# file: passwd
# owner: root
# group: root
user::rw-
group::r--
other::r--
复制代码
user::rw- //文件owner权限
group::r– //文件拥有组权限
other::r– //其他人权限
1.设定 acl 权限案例如下
-rw-r–r– 1 root root 1380 Feb 27 11:25 passwd
alice 拥有读写权限 rw
bgx 没有任何权限 -
jack 组拥有读权限 r
匿名用户拥有读写权限 rw
建立相关用户
[root@liza ~]# useradd alice
[root@liza ~]# useradd bgx
[root@liza ~]# groupadd jack
复制代码
增加用户 alice 权限
[root@liza ~]# setfacl -m u:alice:rw passwd
复制代码
增加用户 bgx 权限
[root@liza ~]# setfacl -m u:bgx:- passwd
复制代码
增加匿名用户权限
[root@liza ~]# setfacl -m o::rw passwd
复制代码
增加组权限
[root@liza ~]# setfacl -m g:jack:r passwd
复制代码
注意: 如果用户同时属于不同的两个组,并且两个组设定了 acl 访问控制
根据 acl 访问控制优先级进行匹配规则
如有用户拥有多个组的权限不同的权限,优先使用最高权限(模糊匹配)
2. 查看 acl 权限
[root@liza ~]# ll passwd
-rw-rw-rw-+ 1 root root 2287 Jan 12 14:25 passwd
[root@liza ~]# getfacl passwd
# file: passwd
# owner: root
# group: root
user::rw-
user:alice:rw-
user:bgx:---
group::r--
group:jack:r--
mask::rw-
other::rw-
复制代码
3.移除 acl 权限
移除 jack 组的 acl 权限
[root@liza ~]# setfacl -x g:jack passwd
复制代码
移除 bgx 用户的 acl 权限
[root@liza ~]# setfacl -x u:bgx passwd
复制代码
移除文件和目录所有 acl 权限
[root@liza ~]# setfacl -b passwd
复制代码
4.查看 acl 帮助
EXAMPLES 示例文档
[root@liza ~]# man setfacl
复制代码
复制 file1 的 ACL 权限给 file2
[root@liza ~]# touch file1 ;touch file2
[root@liza ~]# setfacl -m u:alice:rw,u:bgx:r,g:jack:rw file1
[root@liza ~]# getfacl file1 | setfacl --set-file=- file2
[root@liza ~]# getfacl file2
# file: file2
# owner: root
# group: root
user::rw-
user:alice:rw-
user:bgx:r--
group::rw-
group:jack:rw-
mask::rw-
other::rw-
复制代码
二、ACL 高级特性 MASK
mask 用于临时降低用户或组的权限,但不包括文件的属主和匿名用户,那么 mask 最主要的作用是用来决定他们的最高权限
mask 默认不会对匿名用户降低权限,所以为了便于管理文件的访问控制,建议匿名用户的权限置为空
临时降低用户或组权限
[root@liza ~]# setfacl -m mask::rw passwd
复制代码
提示
mask 会影响所有用户,但不会影响属主属组以及匿名用户
mask 权限决定了用户访问文件时的最高权限
mask 用于临时降低用户访问文件的权限
任何重新设置 acl 访问控制会清理 mask 所设定的权限
三、.ACL 高级特性 Default
default: 继承(默认)
alice 能够对/opt 目录以及以后在/opt 目录下新建的文件有读、写、执行权限
赋予 alice 对/home 读写执行权限
[root@liza ~]# setfacl -R -m u:alice:rwx /opt/
复制代码
赋予 alice 对以后在/home 下新建的文件有读写执行权限(使 alice 的权限继承)
[root@liza ~]# setfacl -m d:u:alice:rwx /opt/
复制代码
检查对应的权限
[root@liza ~]# getfacl /opt/
getfacl: Removing leading '/' from absolute path names
# file: opt/
# owner: root
# group: root
# flags: -s-
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
复制代码
四、ACL 访问控制实践案例
案例 1: 将新建文件的属性修改 tom:admin, 权限默认为 644
要求:tom 对该文件有所有的权限 mary 可以读写该文件 admin 组可以读写执行该文件 jack 只读该文件其他人一律不能访问该文件
实验前, 建立几个普通用户
[root@liza ~]# groupadd admin
[root@liza ~]# useradd -G admin mary
[root@liza ~]# useradd -G admin bean
[root@liza ~]# useradd tom
[root@liza ~]# useradd jack
[root@liza ~]# useradd student
复制代码
检查用户属性
[root@liza ~]# id mary
uid=1009(mary) gid=1012(mary) groups=1012(mary),1011(admin)
[root@liza ~]# id bean
uid=1010(bean) gid=1013(bean) groups=1013(bean),1011(admin)
[root@liza ~]# id mary
uid=1009(mary) gid=1012(mary) groups=1012(mary),1011(admin)
[root@liza ~]# id jack
uid=1012(jack) gid=1015(jack) groups=1015(jack)
[root@liza ~]# id student
uid=1013(student) gid=1016(student) groups=1016(student)
复制代码
准备相关文件
[root@liza ~]# cp /etc/passwd /root/
[root@liza ~]# chown tom:admin passwd
[root@liza ~]# chmod 644 passwd
复制代码
检查设定前的 acl 列表
[root@liza ~]# getfacl passwd
# file: passwd
# owner: tom
# group: admin
user::rw-
group::r--
other::r--
复制代码
设定 acl 权限
[root@liza ~]# setfacl -m u::rwx,u:mary:rw,u:jack:r,g:admin:rwx,o::- passwd
复制代码
检查 acl 权限
[root@liza ~]# getfacl passwd
# file: passwd
# owner: tom
# group: admin
user::rwx
user:mary:rw-
user:jack:r--
group::r--
group:admin:rwx
mask::rwx
other::---
复制代码
acl 的控制规则是从上往下匹配
tom 由于是文件的拥有者,所以直接按照 user::rwx 指定的权限去操作
mary 用户从上往下寻找匹配规则,发现 user:mary:rw-能够精确匹配 mary 用户,尽管 mary 属于 admin 组,同时 admin 组有 rwx 的权限,但是由于 mary 用户的规则在前面,所有优先生效
bean 由于找不到精确匹配的规则,而 bean 是属于 admin 组,根据文件的定义,该文件是属于 admin 组,所以 bean 的权限是按照 group:admin:rwx 的权限去操作
jack 用户从上往下寻找匹配规则,发现 user:jack:r–能够精确匹配 jack 用户
student 用户找不到精确匹配的 user 定义规则, 也找不到相关组的定义规则,最后属于 other
案例 2: lab acl setup
controller 组成员有:student
sodor 组成员有:thomas,james
目录: /shares/steamies
文件: /shares/steamies/file
脚本: /shares/steamies/test.sh
controller 属于该目录的所属组, 新建文件必须属于 controller 组
sodor 组的成员对该目录拥有 rwx 权限
sodor 组成员 james 对该目录及子目录(包括以后新建立的文件)没有任何权限
准备用户
[root@liza ~]# groupadd controller
[root@liza ~]# groupadd sodor
[root@liza ~]# useradd -G controller student
[root@liza ~]# useradd -G sodor thomas
[root@liza ~]# useradd -G sodor james
复制代码
准备目录
[root@liza ~]# mkdir -p /shares/steamies
[root@liza ~]# echo "file" >> /shares/steamies/file
[root@liza ~]# echo "echo 123" >> /shares/steamies/test.sh
[root@liza ~]# chmod 755 /shares/steamies/test.sh
[root@liza ~]# chown -R :controller /shares/steamies/
[root@liza ~]# chmod g+s /shares/steamies/
复制代码
设定权限(X 表示,如果原本有执行权限就保留,如果没有则不添加)
[root@liza ~]# setfacl -R -m g:sodor:rwx,u:james:- /shares/steamies/
复制代码
设定继承规则
[root@liza ~]# setfacl -R -m d:g:sodor:rwX,d:u:james:- /shares/steamies/
[root@liza ~]# getfacl /shares/steamies/
getfacl: Removing leading '/' from absolute path names
# file: shares/steamies/
# owner: root
# group: controller
# flags: -s-
user::rwx
user:james:---
group::rwx
group:sodor:rwx
mask::rwx
other::rwx
default:user::rwx
default:user:james:---
default:group::rwx
default:group:sodor:rwx
default:mask::rwx
default:other::rwx
复制代码
评论