Xzy's Blog - 用户
type: channel
link: https://blog.xzynb.top/tag/%E7%94%A8%E6%88%B7/
items: ACL权限控制

ACL权限控制
type: item
date: 2022-11-13T07:21:00+00:00
description: 最近写猪比的云端GOCQ遇到了一个权限问题：我需要gocq用户对于/www/wwwroot/qb.xzynb.top/gocq目录及子目录下的文件拥有rwx权限而对于其他目录均只有--x权限很显然，普通的权限控制已经不能满足这个需求，那么这个时候就要使用我们的ACLACL是什么ACL是Access Control List（访问控制列表）的缩写，不过在Linux系统中，ACL用于设定用户针对文件的权限，而不是在交换路由器中用来控制数据访问的功能（类似于防火墙）。如何开启ACL查看是否开启：[root@localhost ~]# mount /dev/sda1 on /boot type ext4 (rw) /dev/sda3 on I type ext4 (rw) …省略部分输出… #使用mount命令可以看到系统中已经挂载的分区，但是并没有看到ACL权限的设置 [root@localhost ~]# dumpe2fs -h /dev/sda3 #dumpe2fs是查询指定分区文件系统详细信息的命令 …省略部分输出… Default mount options: user_xattr acl …省略部分输出…开启：[root@localhost ~]# mount -o remount, acl / #重新挂载根分区，并加入ACL权限 #使用 mount 命令重新挂载，并加入 ACL 权限。不过使用此命令是临时生效的。要想永久生效，需要修改 /etc/fstab 文件，命令如下： [root@localhost ~]#vi /etc/fstab UUID=c2ca6f57-b15c-43ea-bca0-f239083d8bd2 /ext4 defaults, acl 1 1 #加入ACL权限 [root@localhost ~]# mount -o remount / #重新挂载文件系统或重启系统，使修改生效ACL查看使用getfacl <文件名>指令可以查看ACL，这里不过多赘述设置ACL使用setfacl可以设置ACL选项：-m：设定 ACL 权限。如果是给予用户 ACL 权限，则使用"u:用户名：权限"格式赋予；如果是给予组 ACL 权限，则使用"g:组名：权限" 格式赋予；-x：删除指定的 ACL 权限；-b：删除所有的 ACL 权限；-d：设定默认 ACL 权限。只对目录生效，指目录中新建立的文件拥有此默认权限；-k：删除默认 ACL 权限；-R：递归设定 ACL 权限。指设定的 ACL 权限会对目录下的所有子文件生效；To be Continued.