使用扩展 ACL 使组继承不可变?

使用扩展 ACL 使组继承不可变?

我们的 beegfs 存储系统上有一个配额管理系统,可以跟踪文件夹的组使用情况。

本次测试中,配额由“fordemx-home”组进行管理,测试文件夹设置如下:

$ mkdir acl_test
$ sudo chown -R fordemx:fordemx-home acl_test
$ sudo chmod 0770 acl_test/
$ sudo chmod g+s acl_test
$ sudo chmod u+s acl_test
$ sudo setfacl -Rdm u:fordemx:rwx acl_test
$ sudo setfacl -Rdm g:fordemx-home:rwx acl_test
$ sudo setfacl -Rdm o::- acl_test
$ getfacl acl_test/
# file: acl_test/
# owner: fordemx
# group: fordemx-home
# flags: ss-
user::rwx
group::rwx
other::---
default:user::rwx
default:user:fordemx:rwx
default:group::rwx
default:group:fordemx-home:rwx
default:mask::rwx
default:other::---

因此,用户和组都是粘性的,并且父级和子级的默认用户和组都被分配。在创建文件/文件夹时,用户、组和默认 ACL 会被正确继承,并适当影响配额利用率。在以下示例中,我们创建两个虚拟文件,删除 1 个,并在每个步骤之间检查配额利用率:

$ cd acl_test
$ dd if=/dev/urandom of=sample1.txt bs=64M count=16
$ dd if=/dev/urandom of=sample2.txt bs=64M count=16
$ ll
total 1048577
drwsrws---+  2 fordemx fordemx-home         2 Apr 16 13:09 ./
drwxr-s---  17 fordemx fordemx-home        27 Apr 16 12:53 ../
-rw-rw----+  1 fordemx fordemx-home 536870896 Apr 16 13:09 sample1.txt
-rw-rw----+  1 fordemx fordemx-home 536870896 Apr 16 13:10 sample2.txt
$ beegfs-ctl --getquota --gid fordemx-home

Quota information for storage pool Default (ID: 1):

      user/group     ||           size          ||    chunk files    
     name     |  id  ||    used    |    hard    ||  used   |  hard   
--------------|------||------------|------------||---------|---------
  fordemx-home|  2036||    1.89 GiB| 1024.00 GiB||    16251|unlimited

$ rm -rf sample1.txt
$ beegfs-ctl --getquota --gid fordemx-home

 Quota information for storage pool Default (ID: 1):

      user/group     ||           size          ||    chunk files    
     name     |  id  ||    used    |    hard    ||  used   |  hard   
--------------|------||------------|------------||---------|---------
  fordemx-home|  2036||    1.39 GiB| 1024.00 GiB||    16247|unlimited

到目前为止,一切都按预期运行。但是,由于用户拥有这些文件,他们应该能够更改文件的组,从而阻止文件在组配额内被跟踪

$ chown fordemx:fordemx sample2.txt 
$ beegfs-ctl --getquota --gid fordemx-home

Quota information for storage pool Default (ID: 1):

      user/group     ||           size          ||    chunk files    
     name     |  id  ||    used    |    hard    ||  used   |  hard   
--------------|------||------------|------------||---------|---------
  fordemx-home|  2036||  911.07 MiB| 1024.00 GiB||    16243|unlimited

这不是我们所希望的,因为用户可以简单地绕过我们的配额限制。奇怪的是,sample2.txt 的 ACL 仍然显示 ACL 定义的组为“fordemx-home”

$ getfacl sample2.txt 
# file: sample2.txt
# owner: fordemx
# group: fordemx
user::rw-
user:fordemx:rwx            
group::rwx          
group:fordemx-home:rwx # <----- shouldn't quota still be managed under fordemx-home
mask::rw-
other::---

有没有办法可以限制用户更改此目录及其子目录中文件的 Linux 组权限?欢迎提供任何其他帮助或建议?

答案1

有点黑客风格,可能会破坏一些东西。但你知道,没有付出就没有收获。决定将 chgrp 和 chown 的权限更改为仅限 root。这似乎是阻止用户推卸责任的唯一方法。

相关内容