|NO.Z.00036|——————————|LinuxBasicEnd|——|Linux&权限管理.V02|
Posted yanqi_vip
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了|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 -m u: 用户名:权限 文件名
~~~ setfacl -m g: 组名:权限 文件名
~~~ 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 /test ACL 默认权限。 注意:默认权限只能赋予目录
~~~ 注意:如果给目录赋予 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 Feb 4 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 Feb 4 10:35 wwwtest1
-rw-r-xr--+ 1 root root 0 Feb 4 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 Feb 4 10:35 wwwtest1
-rw-r-xr--+ 1 root root 0 Feb 4 10:35 wwwtest2
-rw-r--r-- 1 root root 0 Feb 4 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 Feb 4 10:35 wwwtest1
-rw-r-xr--+ 1 root root 0 Feb 4 10:35 wwwtest2
-rw-r--r-- 1 root root 0 Feb 4 10:38 wwwtest3 // 这个文件还是没有ACL权限,刚好卡在这两个权限生效之间,所以不会生效
-rw-rw----+ 1 root root 0 Feb 4 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
以上是关于|NO.Z.00036|——————————|LinuxBasicEnd|——|Linux&权限管理.V02|的主要内容,如果未能解决你的问题,请参考以下文章