ACL权限名叫ACL文件权限管理也是UGO权限的加强版。
一、ACL和UGO的区别
UGO基本权限:只能一个用户、一个组合、其他人这三个对象进行授权
ACL文件权限管理:设置不同用户,不同的基本权限(r、w、x),对象数量不同
总结:UGO是针对用户、组、其他人三个对象的文件授权,ACL是可以针对指定用户指定组和其他人的文件授权。
二、用法
1、语法
setfacl -m u:用户或用户组:权限 文件 //给指定用户或组授权
getfacl 文件 //查看文件有哪些ACL权限
2、准备文件以及用户
准备一个测试用的文件夹以及用户在文件夹内创建一个文件,这里不做详细解释
mkdir /test //创建文件夹
touch /test/t1 //创建文件t1
useradd zhangsna //创建用户zhangsan
useradd lisi //创建用户lisi
3、设置ACL权限
1)首先先查看一下新创好的文件有哪些ACL权限
[root@localhost ~]# getfacl /test/t1 //查看t1的ACL权限
getfacl: Removing leading '/' from absolute path names
# file: test/t1 //文件的位置
# owner: root //文件拥有者
# group: root //文件所属组
user::rw- //用户的权限
group::r-- //组的权限
other::rw- //其他人的权限
2)设置用户zhangsan、lisi权限
[root@localhost ~]# setfacl -m u:zhangsan:rwx /test/t1 //给zhangsan授予可以对文件读写执行的权利
[root@localhost ~]# setfacl -m u:lisi:rwx /test/t1 //给lisi授予可以对文件读写执行的权利
[root@localhost ~]# getfacl /test/t1 //查看t1的ACL权限
getfacl: Removing leading '/' from absolute path names
# file: test/t1
# owner: root
# group: root
user::rw-
user:zhangsan:rwx //权限增加成功
user:lisi:rwx
group::r--
mask::rwx
other::rw-
小拓展:在设置完ACL权限之后使用ls查看文件内容会有所不一样,查看的时候文件的权限可能会叠加上ACL的权限,但是具体的权限内容还是需要用getfacl来查看因为是在设置ACL权限使用一getfacl命令查看的为主。
[root@localhost ~]# ll /test/t1
-rw-rwxrw-+ 1 root root 0 9月 27 14:46 /test/t1
用ls命令查看后会发发现权限字段上多了一个+号,这个加号代表着有ACL权限,不止有显示的这些权限,具体权限用getfacl命令查看。
3)对组S1进行ACL授权
[root@localhost ~]# setfacl -m g:S1:rw /test/t1 //给S1组授予对文件t1读写权限
[root@localhost ~]# getfacl /test/t1 //查看t1的ACL权限
getfacl: Removing leading '/' from absolute path names
# file: test/t1
# owner: root
# group: root
user::rw-
user:zhangsan:rwx
user:lisi:rwx
group::r--
group:S1:rw- //授权成功
mask::rwx
other::rw-
4)对其他人授权
[root@localhost ~]# setfacl -m o::rwx /test/t1 //给其他人授予对文件t1的读写执行的权限
[root@localhost ~]# getfacl /test/t1 //查看t1ACL权限
getfacl: Removing leading '/' from absolute path names
# file: test/t1
# owner: root
# group: root
user::rw-
user:zhangsan:rwx
user:lisi:rwx
group::r--
group:S1:rw-
mask::rwx
other::rwx //成功
注意:setfacl -m o::rwx /test/t1 ,o后面有两个冒号是不能少的,其他人是不用用户名的,虽然不用写用户名但仍然要加冒号表示一个站位,不然命令不够这个长度是无法执行的。
5)删除ACL权限
命令setfacl -x 对象:名称 文件
删除用户的权限
[root@localhost ~]# setfacl -x u:zhangsan /test/t1 //删除用户张三对文件的权限
[root@localhost ~]# getfacl /test/t1 //查看t1的ACL权限
getfacl: Removing leading '/' from absolute path names
# file: test/t1
# owner: root
# group: root
user::rw-
user:lisi:rwx //只有lisi的权限在,张三的权限已经移除
group::r--
group:S1:rw-
mask::rwx
other::rwx
删除组的权限
[root@localhost ~]# setfacl -x g:S1 /test/t1 //删除组S1的权限
[root@localhost ~]# getfacl /test/t1 //查看问价t1的ACL权限
getfacl: Removing leading '/' from absolute path names
# file: test/t1
# owner: root
# group: root
user::rw-
user:lisi:rwx
group::r--
mask::rwx
other::rwx
清空所有设置的ACL权限(将文件的ACL权限恢复到默认)
命令:setfacl -b 文件
[root@localhost ~]# setfacl -b /test/t1 //清空ACL的所有扩展权限
[root@localhost ~]# getfacl /test/t1 //查看t1的ACL权限
getfacl: Removing leading '/' from absolute path names
# file: test/t1
# owner: root
# group: root
user::rw-
group::r--
other::rwx
[root@localhost ~]# ll /test/t1 //查看t1文件信息
-rw-r--rwx. 1 root root 0 9月 27 14:46 /test/t1 //原本的+号不在了,没有设置ACL权限
ACL权限分享到这,下一篇分享特殊权限。