linux权限之ACL权限

柳三千

文章最后更新时间:2022年09月13日已超过736天没有更新。

学习目标:

 ACL权限的作用及设定

 最大有效权限以及删除ACL权限

 默认ACL权限和递归ACL权限


ACL权限的作用及设定

ACL权限的作用


环境需求:

有个财务部共享文件夹,要求设置以下权限,

财务总监(cwzj)的账户拥有 读写执行(rwx)权限

财务专员(cwzy)的账户拥有 只读执行(rx)权限

除此之外,其他人没有权限访问


有一天,你老板心血来潮,想要看财务报表,并且要求拥有所有权限

即是老板(boss)的账户拥有 读写执行(rwx)权限


行政总监也要看财务报表

行政总监(xzzj)的账户 只读执行(rx)权限


请问你怎么完成这个需求呢?


想了几天几夜之后,你会发现依靠 所有者、所属组、其他人 的基本权限,完全无法实现以上的需求


ACL权限就是解决你这个问题,也就是解决身份不足的问题。


新建个财务(cw)组,财务总监与财务专员默认在此组,然后新建各个账号测试:

groupadd cw
useradd -g cw cwzj
useradd -g cw cwzy
useradd test
useradd boss
useradd xzzj
mkdir /cw
chown cwzj /cw/
chmod 750 /cw/
[root@192 ~]# ll -d /cw/
drwxr-x--- 2 cwzj root 6 May 15 03:14 /cw/

通过以上权限可以看出,只能设置所有者,所属组、其他人权限,但老板与行政总监的权限应该怎么设置呢?用什么身份访问呢?


ACL权限设置

ACL权限设置:将老板与行政总监的账号设置ACL权限

[root@192 ~]# setfacl -m u:boss:rwx /cw
[root@192 ~]# setfacl -m u:xzzj:rx /cw
[root@192 ~]# getfacl /cw    //查看ACL权限
getfacl: Removing leading '/' from absolute path names
# file: cw   //文件名
# owner: cwzj  //所有者
# group: root   //所属组
user::rwx  //所有者权限
user:boss:rwx   //boss ACL权限
user:xzzj:r-x   //xzzj ACL权限
group::r-x  //所属组权限
mask::rwx   //mask权限
other::---  //其他人权限


boss账户测试:

passwd boss
[root@192 ~]# su - boss
[boss@192 ~]$ cd /cw
[boss@192 cw]$ echo 'I am boss !' > boss.txt
[boss@192 cw]$ pwd
/cw
[boss@192 cw]$ ls
boss.txt
[boss@192 cw]$ cat boss.txt 
I am boss !

以上案例得知,boss拥有rwx权限,已达到想要的效果。


行政总监账号测试:

[root@192 ~]# su - xzzj
[xzzj@192 ~]$ cd /cw/
[xzzj@192 cw]$ ls
boss.txt
[xzzj@192 cw]$ cat boss.txt 
I am boss !
[xzzj@192 cw]$ echo 'I am xzzj !' > xzzj.txt
-bash: xzzj.txt: Permission denied

以上案例得知,xzzj拥有rx权限,并没有写入权限,已达到想要的效果。

其他账号设置:

[root@192 ~]# su - test
[test@192 ~]$ cd /cw
-bash: cd: /cw: Permission denied

以上案例得知,test用户没有任何权限。

财务总监账号设置:

[root@192 ~]# su - cwzj
[cwzj@192 ~]$ cd /cw
[cwzj@192 cw]$ echo 'I am cwzj !' > cwzj.txt
[cwzj@192 cw]$ ls
boss.txt  cwzj.txt
[cwzj@192 cw]$ cat cwzj.txt 
I am cwzj !

以上案例得知,cwzj拥有rwx权限,已达到想要的效果。

财务专员设置:
[root@192 ~]# su - cwzy
[cwzy@192 ~]$ cd /cw/
-bash: cd: /cw/: Permission denied

直接被拒绝,原来所属组是root,得修改所属组

[cwzy@192 ~]$ su - root
Password: 
Last login: Sun May 15 03:31:07 EDT 2022 on pts/0
[root@192 ~]# ll -d /cw
drwxrwx---+ 2 cwzj root 38 May 15 03:29 /cw
[root@192 ~]# chown :cw /cw/
[root@192 ~]# ll -d /cw/
drwxrwx---+ 2 cwzj cw 38 May 15 03:29 /cw/
[root@192 ~]# su - cwzy
Last login: Sun May 15 03:31:14 EDT 2022 on pts/0
[cwzy@192 ~]$ cd /cw/
[cwzy@192 cw]$ touch test.txt
touch: cannot touch ‘test.txt’: Permission denied
[cwzy@192 cw]$ ls
boss.txt  cwzj.txt
[cwzy@192 cw]$ cat boss.txt 
I am boss !

现在成功了,并且只有只读权限,已达到想要的效果。


最大有效权限以及删除ACL权限

最大有效权限

被赋予的ACL权限要与mask权限进行相 “与”

,才是最终的权限;也就是说ACL拥有写的权限,此时mask也拥有写的权限,最终权限就是拥有写的权限,反之则是没有写的权限。

[root@192 ~]# setfacl -m m:rx /cw
[root@192 ~]# getfacl /cw/
getfacl: Removing leading '/' from absolute path names
# file: cw/
# owner: cwzj
# group: cw
user::rwx
user:boss:rwx#effective:r-x
user:xzzj:r-x
group::r-x
mask::r-x
other::---

此时mask权限是rx,那么boss权限真的拥有rwx权限吗?

[root@192 ~]# su - boss
Last login: Sun May 15 03:23:50 EDT 2022 on pts/0
[boss@192 ~]$ cd /cw/
[boss@192 cw]$ touch boss02.txt
touch: cannot touch ‘boss02.txt’: Permission denied
[boss@192 cw]$ ll -d /cw/
drwxr-x---+ 2 cwzj cw 38 May 15 03:29 /cw/
[boss@192 cw]$ getfacl /cw/
getfacl: Removing leading '/' from absolute path names
# file: cw/
# owner: cwzj
# group: cw
user::rwx
user:boss:rwx#effective:r-x
user:xzzj:r-x
group::r-x
mask::r-x
other::---

以上案例得知,boss也丧失写入的权限了;因为mask权限rx原因,所以ACL最大有效权限只能是rx。


删除ACL权限

setfacl -x 指定用户名或者用户组
setfacl -b 删除所有ACL的权限
[cwzj@192 cw]$ setfacl -x u:boss /cw
[cwzj@192 cw]$ getfacl /cw
getfacl: Removing leading '/' from absolute path names
# file: cw
# owner: cwzj
# group: cw
user::rwx
user:xzzj:r-x
group::r-x
mask::r-x
other::---

[cwzj@192 cw]$ setfacl -b /cw
[cwzj@192 cw]$ getfacl /cw/
getfacl: Removing leading '/' from absolute path names
# file: cw/
# owner: cwzj
# group: cw
user::rwx
group::r-x
other::---


默认ACL权限和递归ACL权限

存在的问题:

主目录拥有ACL权限,但是里边的文件及子目录都没有ACL权限。

[root@192 ~]# setfacl -m u:boss:rwx /cw
[root@192 ~]# ll /cw/
total 8
-rw-rw-r-- 1 boss boss 12 May 15 03:25 boss.txt
drwxr-xr-x 2 cwzj cw    6 May 15 04:23 cwzj
-rw-r--r-- 1 cwzj cw   12 May 15 03:30 cwzj.txt
-rw-r--r-- 1 cwzj cw    0 May 15 04:11 test

设置ACL递归权限

[root@192 ~]# setfacl -m u:boss:rwx -R /cw/
[root@192 ~]# ll /cw/
total 8
-rw-rwxr--+ 1 boss boss 12 May 15 03:25 boss.txt
drwxrwxr-x+ 2 cwzj cw    6 May 15 04:23 cwzj
-rw-rwxr--+ 1 cwzj cw   12 May 15 03:30 cwzj.txt
-rw-rwxr--+ 1 cwzj cw    0 May 15 04:11 test

设置新建的子文件都默认ACL权限

[root@192 ~]# setfacl -m d:u:boss:rwx -R /cw/
[root@192 ~]# mkdir /cw/test2 
[root@192 ~]# touch /cw/123
[root@192 ~]# ll /cw/
total 8
-rw-rw----+ 1 root root  0 May 15 04:35 123
-rw-rwxr--+ 1 boss boss 12 May 15 03:25 boss.txt
drwxrwxr-x+ 2 cwzj cw    6 May 15 04:23 cwzj
-rw-rwxr--+ 1 cwzj cw   12 May 15 03:30 cwzj.txt
-rw-rwxr--+ 1 cwzj cw    0 May 15 04:11 test
drwxrwx---+ 2 root root  6 May 15 04:29 test


文章版权声明:除非注明,否则均为柳三千运维录原创文章,转载或复制请以超链接形式并注明出处。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码