传统权限模型缺点
传统的UGO权限模型无法应对复杂的权限设置需求,如对于一个文件只能设置一个组,并且对改组进行权限控制,但是如果该文件有多个组会对其进行访问,并且都要进行权限限制时,传统的UGO模型就无法满足需求了。
ACL (Access Control List)是一种高级权限机制,允许我们对一个文件或文件夹进行灵活的、复杂的权限设置。
ACL需要在挂载文件的时候打开ACL功能:
mount -o acl /dev/sda5 /mnt
ACL允许针对不同用户、不同组对一个目标文件/文件夹进行权限设置,不受UGO模型限制。
查看一个文件/文件夹的ACL设置
getfacl test
针对一个用户对文件进行ACL设置
setfacl -m u:nash_su:rwx test
针对一个组对文件进行ACL设置
setfacl -m g:training:rw test
删除一个ACL设置
setfacl -x u:nash_su test
实例
假设文件test用户、组如下:
组 用户
numbers 123,456 manage stave,david boss boos
现要求为各部门、员工建立相应的工作文件夹,要求如下:
所有目录、文件保存在统一的一个文件下
每个部门拥有一个独立的文件夹
不同部门之间不可访问各自文件夹
每个员工在所在部门文件夹下拥有一个所属的文件夹
同部门不同员工之间可以查看各自文件夹内容,但不可修改。用户仅能够修改自己的内容
boss组的用户对所有组的文件均有访问权限,但无修改权限
mkdir test groupadd numbers groupadd manage groupadd boos useradd -G numbers 123 useradd -G numbers 456 useradd -G manage stave useradd -G manage david useradd -G boos boos mkdir numbers mkdir manage chgrp numbers numbers/ chgrp manage manage/ chmod o-rwx numbers chmod o-rwx manage chmod g+s numbers chmod g+s manage cd numbers mkdir 123 mkdir 456 chown 123 123 chown 456 456 cd manage mkdir stave mkdir david chown stave stave chown david david setfacl -m g:boos:rx numbers setfacl -m g:boos:rx manage