【|NO.Z.00036|——————————|LinuxBasicEnd|——|Linux&权限管理.V02|】青春须早为,岂能长少年。这篇文章主要讲述|NO.Z.00036|——————————|LinuxBasicEnd|——|Linux&权限管理.V02|相关的知识,希望能为你提供帮助。
一、ACL 权限
### --- ACL 概述:~~~ACL 是用于解决用户对文件身份不足的问题的
文章图片
二、开启 ACL
### --- 开启 ACL
### --- dumpe2fs 命令是查询指定分区详细文件系统信息的命令
### --- 选项:
~~~-h 仅显示超级块中信息,而不显示磁盘块组的详细信息。
~~~...省略部分输出...
Default mount options: user_xattr acl
~~~...省略部分输出...[root@localhost ~]# dumpe2fs -h /dev/sda3
~~~如果没有开启,手工开启分区的 ACL 权限:
~~~重新挂载根分区,并挂载加入 acl 权限
~~~也可以通过修改/etc/fstab 文件,永久开启 ACL 权限:
[root@localhost ~]# mount -o remount,acl /
~~~加入 acl
[root@localhost ~]# vi /etc/fstab
UUID=c2ca6f57-b15c-43ea-bca0-f239083d8bd2 / ext4~~~重新挂载文件系统或重启动系统,使修改生效
[root@localhost ~]# mount -o remount /
### --- ACL权限没有开启,手动开启ACL权限[root@server11 ~]# dumpe2fs -h /dev/sda3
Default mount options:user_xattr acl// 默认挂载权限由acl权限
三、ACL 基本命令
### --- ACL 基本命令~~~getfacl文件名查询文件的 ACL 权限
~~~setfacl 选项文件名设定 ACL 权限
~~~-m设定 ACL 权限
~~~-b删除 ACL 权限
~~~-x:用户删除单个用户的 ACL 权限
~~~setfacl -mu:用户名:权限文件名
~~~setfacl -mg:组名:权限文件名
~~~setfacl -m u:aa:rwx /test给 test 目录赋予 aa 是读写执行的 ACL 权限
~~~setfacl-m u:cc:rx -R soft/赋予递归 ACL 权限,只能赋予目录
~~~-R递归
~~~setfacl -m d:u:aa:rwx -R /testACL 默认权限。注意:默认权限只能赋予目录
~~~注意:如果给目录赋予 acl 权限,两条命令都要输入
### --- 递归与默认的区别:~~~setfacl-m u:cc:rx -R soft/只对已经存在的文件生效
~~~setfacl -m d:u:aa:rwx -R /test只对以后新建的文件生效
### --- 设置ACL权限
~~~添加一个新的用户
[root@server21 ~]# useradd www3
[root@server21 ~]# passwd www3~~~授予ACL权限
[root@server21 ~]# setfacl -m u:www3:5 /www/// u:www3:5用户:用户名:权限数字或者权限数字也可以
~~~查看有个+号[root@server21 ~]# ll -d /www/
drwxrwx---+ 2 www1 www 4096 Feb4 10:29 /www/
[root@server21 ~]# getfacl /www/
~~~file: www/// 文件名
~~~owner: www1// 所有者
~~~group: www// 所属组
user::rwx// 用户权限
user:www3:r-x// 单独的用户拥有5权限
group::rwx// 所属组权限
mask::rwx// 最大权限
other::---// 其他人权限
~~~验证:他可以进入到该目录,但是不可以创建文件// 只能查看文件内容,但是没有操作权限[root@server21 ~]# su - www3
[www3@server21 ~]$ cd /www/
[www3@server21 www]$ touch www
touch: cannot touch# `www: Permission denied
### --- 递归创建子文件:针对已经存在子文件生效[root@server21 ~]# touch /www/wwwtest1
[root@server21 ~]# touch /www/wwwtest2
[root@server21 ~]# setfacl -m u:www3:5 -R /www/
~~~查看www下的所有文件都有ACL权限[root@server21 ~]# ll /www/
-rw-r-xr--+ 1 root root 0 Feb4 10:35 wwwtest1
-rw-r-xr--+ 1 root root 0 Feb4 10:35 wwwtest2
[root@server21 ~]# getfacl /www/wwwtest1
getfacl: Removing leading / from absolute path names
# file: www/wwwtest1
# owner: root
# group: root
user::rw-
user:www3:r-x
group::r--
mask::r-x
other::r--
~~~再创建一个文件,是没有ACL权限的[root@server21 ~]# touch /www/wwwtest3
[root@server21 ~]# ll /www/
total 0
-rw-r-xr--+ 1 root root 0 Feb4 10:35 wwwtest1
-rw-r-xr--+ 1 root root 0 Feb4 10:35 wwwtest2
-rw-r--r--1 root root 0 Feb4 10:38 wwwtest3// 是没有ACL权限,递归只能对已经存在的文件生效
~~~对于新建的文件也会有ACL权限[root@server21 ~]# setfacl -m d:u:www3:5 -R /www/// 加入d参数
[root@server21 ~]# getfacl /www/
default:user::rwx
default:user:www3:r-x
default:group::rwx
default:mask::rwx
default:other::---
[root@server21 ~]# touch /www/wwwtest4
[root@server21 ~]# ll /www/
total 0
-rw-r-xr--+ 1 root root 0 Feb4 10:35 wwwtest1
-rw-r-xr--+ 1 root root 0 Feb4 10:35 wwwtest2
-rw-r--r--1 root root 0 Feb4 10:38 wwwtest3// 这个文件还是没有ACL权限,刚好卡在这两个权限生效之间,所以不会生效
-rw-rw----+ 1 root root 0 Feb4 10:40 wwwtest4// 新建的文件有ACL权限
### --- ACL权限最大的问题:一旦递归之后,不可避免权限溢出~~~setfacl-m u:cc:rx -R soft/// 只对已经存在的文件生效
~~~setfacl -m d:u:aa:rwx -R /test// 只对以后新建的文件生效
四、 最大有效权限 mask
### --- 最大有效权限 mask[root@localhost /]# setfacl -m m:rx project/
~~~设定 mask 权限为 r-x。使用“m:权限”格式[root@localhost /]# getfacl project/
~~~file: project/
~~~owner: root
~~~group: tgroup
user::rwx
group::rwx// effective:r-x
mask::r-x
~~~mask 权限变为了 r-x
other::---
### --- 调整最大权限[root@server21 ~]# getfacl /www/
mask::rwx// 调整最大权限的
[root@server21 ~]# setfacl -m m:6 /www/
[root@server21 ~]# getfacl /www/
user::rwx
user:www3:r-x// effective:r--- 只读;建议使用默认的
group::rwx// effective:rw-
mask::rw-
other::---
default:user::rwx
default:user:www3:r-x
default:group::rwx
default:mask::rwx
default:other::---
[root@server21 ~]# setfacl -m m:7 /www/
五、删除 ACL 权限
### --- 删除 ACL 权限
~~~删除指定用户和用户组的 ACL 权限
[root@localhost /]# setfacl -x u:st /project/
~~~会删除文件的所有的 ACL 权限
[root@localhost /]# setfacl -b project/
### --- 删除 ACL 权限
### --- 再添加一个用户授予ACL权限[root@server21 ~]# setfacl -m u:www2:5 /www/
[root@server21 ~]# getfacl /www/
user:www2:r-x
user:www3:r-x
### --- 删除某一个用户的ACL权限
[root@server21 ~]# setfacl -x u:www2 /www/
[root@server21 ~]# getfacl /www/
user:www3:r-x// 只能查看到www3用户的ACL权限### --- 删除所有的ACL权限
[root@server21 ~]# setfacl -b /www/
[root@server21 ~]# getfacl /www/
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warmd both hands before the fire of life.It sinks, and I am ready to depart ——W.S.Landor
推荐阅读
- Go语言入门系列二
- |NO.Z.00030|——————————|LinuxBasicEnd|
- |NO.Z.00033|——————————|LinuxBasicEnd|——|Linux&用户管理.V03|
- |NO.Z.00005|——————————|^^构建^^|——|Nginx&Nginx.V1.16&企业级LNMP&Yum.V1|
- 广告投放必备(如何使用Bannersnack快速生成横幅())
- 如何在Photoshop中删除背景的六种方法介绍
- 5款最佳产品设计交接工具合集(哪一个最好用())
- Web最佳流行布局有哪些(分析12个永恒的UI模式)
- .NET中的缓存和连接处理(面向方面的编程教程)