Linux 中的 ACL 与组权限

Linux 中的 ACL 与组权限

我想允许一组学生访问共享的 Web 服务器。学生以小组形式工作,每个小组的主目录都包含一个www文件夹,该文件夹应该可供 apache2 的共享实例访问。例如,如果 Bob 和 John 属于 MyPetShop 组,则您将johnjohn students mypetshop组中拥有用户。我不想授予www-data学生会员资格,以避免他们直接弄乱其他人的页面*。

并且他们的主目录将位于/home/students/mypetshop,并且/home/students/mypetshop/www用户 可以读取/写入www-data。我可以使用以下方法实现此目的

  • 为这些文件夹设置一个粘性组www-data(这样它们的权限就会是drwxrwsrwx john www-data)。这样就会出现这样的问题:john 对其文件使用了错误的权限,因此 bob 或 www-data 无法访问这些文件;或者 www-data 创建了一些文件,john 和 bob 只有在他们花了一些时间调整权限后才能接触到这些文件。
  • 标准组所有权( ),以及允许访问这些文件夹的mypetshopACL (通过)。www-datasetfacl -m d:g:www-data:rwx www

ACL 会按预期在这里工作吗?默认 ACL 是否会在子文件夹中自动继承,或者是否有一些我所不知道的更简单的设置方法?


(*)是的,这不是万无一失的,因为他们可以编写 www-data-executed phps 来为他们完成这件事......

答案1

我已经实现了 ACL 版本,它运行良好。学生无法使用标准 SSH/SFTP 客户端(不支持 ACL)来弄乱他们的组权限。对于共享主机、安全性不是很高的设置,绝对推荐使用。

顺序如下:

  1. 添加 ACL 工具setfaclgetfacl(debian/ubuntu 包acl
  2. 将该acl选项添加到您的相关文件系统/etc/fstab(没有此挂载选项的文件系统会默默忽略任何 ACL;这充其量是令人困惑的)。
  3. 用于setfacl允许用户www-data目录遍历访问所有/home/stucents/*/www文件夹
  4. 用于setfacl允许每个www文件夹内相关组成员和用户具有默认(=粘性)读写执行访问权限www-data

在具有默认 ACL 的文件夹中创建的任何文件或文件夹都将继承该 ACL。

相关内容