如何设置未来文件的权限?

如何设置未来文件的权限?

我坦率地承认这是家庭作业:

想象一下,您和您的朋友在您以前的学校里接待了一名 IT 教师。与会者名单位于随附的文本文件中。您需要管理目录documentstasks的权限solutions。编写一个脚本,为所有与会者创建帐户并设置权限,如下所示:

  • 每个与会者都有权读取将在该目录中创建的文件documents,而您的朋友有权读取和修改该目录中的文件,但不能添加或删除任何内容;
  • 每个与会者都有权读取该目录中将出现的文件tasks,而您的朋友则拥有该目录的所有权限;
  • 每个与会者都有权将自己的解决方案放入目录中solutions/<ID of attendee>-<ID of task>
  • 您的朋友拥有solutions目录树的所有权限,而与会者则看不到其他人的解决方案。

这是基本文件权限 ( chmod, umask) 和 ACL ( setfacl)的作业

现在让我困惑的是:

我们必须为尚不存在但将来会创建的文件设置细粒度的权限?!?!

据我了解:

  • umask允许我们为新创建的文件设置默认权限;但这些只是基本的所有者-组-其他权限,因此我无法真正区分我朋友的权限、与会者的权限和与会者同行的权限;
  • setfacl只允许我为已存在或我创建的文件设置权限,但不允许为将来创建的文件设置权限!

所以我不知道如何做这个作业。有人可以告诉我正确的道路吗?

答案1

一些引导您走向正确方向的提示:

  • 前交叉韧带手册页部分介绍了默认 ACL:

    文件对象的访问 ACL 在使用以下任一方式创建对象时被初始化:创建(),mkdir(),马克诺德(),mkfifo(), 或者打开()功能。如果默认 ACL 与目录关联,则模式创建文件对象的函数的参数和目录的默认 ACL 用于确定新对象的 ACL:

    1. 新对象继承包含目录的默认 ACL 作为其访问 ACL。

    2. 修改与文件权限位对应的访问 ACL 条目,以便它们不包含 mode 参数指定的权限中未包含的权限。

  • 在目录上使用粘性位,您可以更改在目录中创建的新文件的所有者/组。在目录中创建的文件将具有粘性目录的所有者/组,而不是默认组。欲了解更多详情,请参阅问题:粘性位如何工作?

相关内容