强制所有者创建文件和文件夹

马丁·尼尔森(Martin Nielsen)

我有一个目录,其中包含许多用户之间共享的数据。对目录及其下任何内容的访问将由目录的组控制,该组将添加到有问题的用户中。这样,我创建了文件夹“粘性组”chmod g+s集。该目录将包含带有目录和文件的树形结构,文件总数可能为几百万。文件将很小,我预计不会超过50MB。

我的问题是文件或目录的所有者仍然是创建它的用户。因此,即使我应该从访问组中删除该用户,也不会完全删除其访问权限。

所以:

我还有其他选择无法确保所有文件和子目录具有相同的所有者吗?

我希望我可以使用cron-job来定期浏览整个目录,但这使我觉得效率低下,因为它本质上是一次PR文件命令。

我找到了一个使用INotify示例,但由于需要编写脚本,因此使我感到高维护。

我还无法弄清楚ACL是否可以帮助我进行强制所有权。

有没有更聪明的方法可以做到这一点?

我想要的是拥有一个可以通过向用户添加组来共享的目录。在此目录中创建的任何内容都将从其父级继承许可权方案。如果有比我尝试的方法更好的方法,那么我无所不能。

约翰·史密斯

“自动”设置默认所有者将需要一个setuid类似的目录setgid但是,尽管可以在FreeBSD上配置它,但是其他UNIX&Linux系统只需忽略即可u+s但是,根据您的情况,可能还有另一种解决方案。

我想要的是拥有一个可以通过向用户添加组来共享的目录。在此目录中创建的任何内容都将从其父级继承许可权方案。如果有比我尝试的方法更好的方法,那么我无所不能。

因此,基本上,从我的角度来看,您想使用组机制来控制对目录的访问。但是,这不需要您限制整个目录结构中的权限。实际上,目录--x执行位可能正是您所需要的。让我给你举个例子。假如说...

  • 控制访问group_dir目录的组是ourgroup
  • 只有ourgroup群组中的人可以访问group_dir
  • user1user2属于ourgroup
  • 默认的umask是0022。

...考虑以下设置:

drwxrws---    root:ourgroup   |- group_dir/
drwxr-sr-x    user1:ourgroup  |---- group_dir/user1_submission/
drwxr-sr-x    user2:ourgroup  |---- group_dir/user2_submission/
-rw-r--r--    user2:ourgroup  |-------- group_dir/user2_submission/README

在这里,我们假设每个项目都是由其所有者创建的。

现在,在此设置中:

  • 的所有人都可以自由浏览所有目录ourgroup小组中的任何人都可以在内部任何地方group_dir(但不能更深入)创建,移动,删除文件
  • 不在的任何人都ourgroup将在处被阻止group_dir,因此将无法操纵其中的任何内容。例如,user3(不是的成员ourgroup)无法读取group_dir/user2_submission/README(即使他具有r--文件本身的权限)。

但是,这种情况下存在一个小问题:由于典型的umask,用户创建的项目无法被组中的其他成员操纵。这是ACL的来源。通过设置默认权限,即使umask值不变,您也可以确保一切都很好:

$ setfacl -dRm u::rwX,g::rwX,o::0 group_dir/

该调用设置:

  • rw(x)所有者的默认权限。
  • rw(x)组的默认权限。
  • 默认情况下,其他用户没有权限。请注意,由于其他用户group_dir无论如何都无法访问,因此他们下面的权限并不重要。

现在,如果我将项目创建为user2

$ touch group_dir/user2_submission/AUTHORS
$ ls -l group_dir/user2_submission/AUTHORS
rw-rw----    user2:ourgroup    group_dir/user2_submission/AUTHORS

有了此ACL,我们可以尝试重建以前的结构:

drwxrws---+    root:ourgroup   |- group_dir/
drwxrws---+    user1:ourgroup  |---- group_dir/user1_submission/
drwxrws---+    user2:ourgroup  |---- group_dir/user2_submission/
-rw-rw----+    user2:ourgroup  |-------- group_dir/user2_submission/README

同样,每个项目都是由其所有者创建的。

此外,如果您想为使用该目录的用户提供更多的功能/安全性,则可能需要考虑一些便利性。例如,这将防止user1删除user2_submission(因为他具有的-w-许可group_dir):

$ chmod +t group_dir/

现在,如果user1尝试删除user2的目录,他将得到一个可爱的Operation not permitted但是请注意,尽管这样做可以防止修改中的目录结构group_dir,但仍可以访问其下面的文件和目录:

user1@host $ rm -r user2_submission
Operation not permitted

user1@host $ >     user2_submission/README
user1@host $ file  user2_submission/README
user2_submission/README: empty (uh-oh)

要考虑的另一件事是,我们使用的ACL设置了默认权限。因此,项目所有者可以更改与之关联的权限。例如,user2可以完美运行...

$ chown g= user2_submission/ -R
or
$ chgrp nobody user2_submission -R

...因此,他的完整提交目录对小组中的任何人都不可用。

但是,由于您最初愿意将全部rws访问权限授予该组中的任何人,所以我假设您信任这些用户,并且不会期望他们进行过多的恶意操作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

强制所有者创建文件和文件夹

来自分类Dev

允许所有用户在HDD中创建文件夹,但只有所有者可以读取/写入/删除自己的文件夹

来自分类Dev

PowerShell更改文件和文件夹的所有者

来自分类Dev

匿名文件和文件夹的权限/所有者

来自分类Dev

如何更改文件或文件夹的所有者?

来自分类Dev

用CFEXECUTE调用的批处理文件创建的文件夹的所有者是谁?

来自分类Dev

更改Linux中文件夹的所有者

来自分类Dev

无法更改文件夹的所有者

来自分类Dev

无法更改文件夹的所有者

来自分类Dev

使用if命令获取文件夹的所有者

来自分类Dev

更改文件夹的所有者和权限

来自分类Dev

如何指定以编程方式创建的文件夹属于哪个所有者/组

来自分类Dev

更改根文件夹和子文件夹的所有者(Ubuntu 13.04)

来自分类Dev

防止删除文件夹所有者的文件夹

来自分类Dev

查看文件夹内文件夹的大小和所有者

来自分类Dev

在Powershell中创建文件夹和文件

来自分类Dev

在Powershell中创建文件夹和文件

来自分类Dev

并行创建文件夹和文件

来自分类Dev

创建文件夹和文件插件 Sketch

来自分类Dev

从文本创建文件和文件夹

来自分类Dev

查找+如何验证所有文件和文件夹是否都具有组和所有者hdfs:hadoop

来自分类Dev

如果使用sudo命令创建文件,谁是文件所有者?

来自分类Dev

如果文件和文件夹的所有者对父目录没有权限,为什么他们可以修改其内容?

来自分类Dev

更改除一个文件夹外的所有文件夹的所有者

来自分类Dev

如何成为root拥有的文件/文件夹的所有者?

来自分类Dev

如何将文件整理为包含文件夹的所有者

来自分类Dev

文件/文件夹的所有者与组之间的关系?

来自分类Dev

保存在特定文件夹中后,将所有者更改为文件

来自分类Dev

具有当前文件夹的所有者和组的chown子文件夹

Related 相关文章

  1. 1

    强制所有者创建文件和文件夹

  2. 2

    允许所有用户在HDD中创建文件夹,但只有所有者可以读取/写入/删除自己的文件夹

  3. 3

    PowerShell更改文件和文件夹的所有者

  4. 4

    匿名文件和文件夹的权限/所有者

  5. 5

    如何更改文件或文件夹的所有者?

  6. 6

    用CFEXECUTE调用的批处理文件创建的文件夹的所有者是谁?

  7. 7

    更改Linux中文件夹的所有者

  8. 8

    无法更改文件夹的所有者

  9. 9

    无法更改文件夹的所有者

  10. 10

    使用if命令获取文件夹的所有者

  11. 11

    更改文件夹的所有者和权限

  12. 12

    如何指定以编程方式创建的文件夹属于哪个所有者/组

  13. 13

    更改根文件夹和子文件夹的所有者(Ubuntu 13.04)

  14. 14

    防止删除文件夹所有者的文件夹

  15. 15

    查看文件夹内文件夹的大小和所有者

  16. 16

    在Powershell中创建文件夹和文件

  17. 17

    在Powershell中创建文件夹和文件

  18. 18

    并行创建文件夹和文件

  19. 19

    创建文件夹和文件插件 Sketch

  20. 20

    从文本创建文件和文件夹

  21. 21

    查找+如何验证所有文件和文件夹是否都具有组和所有者hdfs:hadoop

  22. 22

    如果使用sudo命令创建文件,谁是文件所有者?

  23. 23

    如果文件和文件夹的所有者对父目录没有权限,为什么他们可以修改其内容?

  24. 24

    更改除一个文件夹外的所有文件夹的所有者

  25. 25

    如何成为root拥有的文件/文件夹的所有者?

  26. 26

    如何将文件整理为包含文件夹的所有者

  27. 27

    文件/文件夹的所有者与组之间的关系?

  28. 28

    保存在特定文件夹中后,将所有者更改为文件

  29. 29

    具有当前文件夹的所有者和组的chown子文件夹

热门标签

归档