权限-3 添加个别特殊的用户的权限(一般 UGO之外)

FACL控制

file access control list

可以对一些特别用户设置权限,而不是只是单一的 UGO权限设置

设定 acl 的只能是 root 管理员用户,相关命令:getfacl setfacl

 

//使用 getfacl 查看权限

[root@yxlll ~]# touch /home/test.txt
[root@yxlll ~]# ll /home/test.txt 
-rw-r--r-- 1 root root 0 Nov  5 09:58 /home/test.txt
[root@yxlll ~]# getfacl /home/test.txt 
getfacl: Removing leading '/' from absolute path names
# file: home/test.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--
[root@yxlll ~]#

 

//使用 setfacl 查看权限

[root@yxlll ~]# getfacl /home/test.txt 
getfacl: Removing leading '/' from absolute path names
# file: home/test.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--

[root@yxlll ~]# setfacl -m u:yxlaa1:rw /home/test.txt 
[root@yxlll ~]# getfacl /home/test.txt 
getfacl: Removing leading '/' from absolute path names
# file: home/test.txt
# owner: root
# group: root
user::rw-
user:yxlaa1:rw-
group::r--
mask::rw-
other::r--

[root@yxlll ~]# 

上例表示 添加有个用户名 yxlaa1 ,权限为 rw,再次使用 getfacl 得到 user除了 UGO设置的之外还多了一个 yxlaa1,权限为 rw

下例为 添加一个组 yxlaagroup 的权限

[root@yxlll ~]# groupadd yxlaagroup
[root@yxlll ~]# tail -1 /etc/passwd
yxlaa1:x:1008:1008::/home/yxlaa1:/bin/bash
[root@yxlll ~]# setfacl -m g:yxlaagroup:r /home/test.txt 
[root@yxlll ~]# getfacl /home/test.txt 
getfacl: Removing leading '/' from absolute path names
# file: home/test.txt
# owner: root
# group: root
user::rw-
user:yxlaa1:rw-
group::r--
group:yxlaagroup:r--
mask::rw-
other::r--

[root@yxlll ~]# 

当再次用 ll命令查看文件权限时候,会出现 +,此时的文件权限就已经不能用 ll来展示,需要用 getfacl来表示

[root@yxlll ~]# ll /home/test.txt 
-rw-rw-r--+ 1 root root 0 11月  5 09:58 /home/test.txt
[root@yxlll ~]# ll /home/test1.txt 
-rw-r--r-- 1 root root 0 11月  5 11:50 /home/test1.txt
[root@yxlll ~]# 

其中, text.txt 是修改过权限的文件,有个 +,text1.txt是没有修改过的文件,只有 UGO权限

 

当切换到别的用户时候,其他用户是不能修改文件,而 yxlaa1用户可以

 

当 用户 yxlaa2的权限是 ---,而用户所属组 yxlaagroup的权限为 rw-时,用户的权限以用户名为准

  当用户的有多个组的权限不相同时,则可以满足所有包含的权限

[root@yxlll ~]# getfacl /home/test.txt 
getfacl: Removing leading '/' from absolute path names
# file: home/test.txt
# owner: root
# group: root
user::rw-
user:yxlaa1:rw-
user:yxlaa2:---
group::r--
group:yxlaa2:-w-
group:yxlaagroup:r--
mask::rw-
other::---

[root@yxlll ~]#-

例如,yxlaa2用户的权限为 rw- ,而其所属组 yxlaa2 和 yxlaagroup分别为 -w- ,r--,但是用户对文件权限依旧是 ---

[root@yxlll ~]# setfacl -x u:yxlaa2
[root@yxlll ~]# getfacl /home/test.txt 
getfacl: Removing leading '/' from absolute path names
# file: home/test.txt
# owner: root
# group: root
user::rw-
user:yxlaa1:rw-
group::r--
group:yxlaa2:-w-
group:yxlaagroup:r--
mask::rw-
other::---

[root@yxlll ~]# 

当用 setfacl-x 删除用户 yxlaa2的权限时,用户的权限为 rw-,包含了2个组的权限

 

 ACL高级特性  Default

default :继承

alice可以对文件夹目录及之后再目录下建的文件有读写执行权限的规划

[root@yxlll ~]# setfacl -R -m u:yxlaa1:rwX /home
[root@yxlll ~]# setfacl -m d:u:yxlaa1:rwX /home
[root@yxlll ~]# tree /home/
/home/
├── amy
├── jerry
├── john
├── kim
├── tansir
├── test
├── test1.txt
├── test.txt
├── yxlaa1
├── yxlaa2
└── zhaosir
9 directories, 2 files
[root@yxlll ~]# touch /home/text2.txt
[root@yxlll ~]# getfacl /home/text2.txt
getfacl: Removing leading '/' from absolute path names
# file: home/text2.txt
# owner: root
# group: root
user::rw-
user:yxlaa1:rwx   #effective:rw-
group::r-x   #effective:r--
mask::rw-
other::r--
[root@yxlll ~]#
 

// setfacl -R 表示递归,更改所有已有的文件的权限

// setfacl -d 表示继承,设定了 用户yxlaa1的权限,之后在目录下创建的文件,yxlaa1也具有权限

 

 实例

touch text.txt  //默认权限是 750

chmod 640 text.txt  //设置UGO权限为 640

setfacl xxxxxxxxx  //再添加各个用户的权限

 

 

 

 

 

 

 

  

 

posted @ 2020-11-04 18:20  yxlll  阅读(138)  评论(0编辑  收藏  举报