我的问题类似于如何在 linux 中为所有新创建的文件设置默认文件权限- 但在重要方面有所不同:
我希望在(或复制到或移动到)某个目录中创建的所有文件继承一组不同于系统默认值的默认权限。
基本原理:有问题的目录是应用程序的“进料斗”。组中的用户将文件放在目录中,应用程序(在同一组中的另一个用户 ID 下运行)获取并处理它们。问题是放置在目录中的每个文件的所有者都是放置它的用户,权限默认为“rw-r--r--”;我想把它改成“rw-rw----”。执行摄入的应用程序无法明确执行此操作,因为运行该应用程序的用户 ID 不拥有相关文件,并且默认权限不允许应用程序对文件进行 chmod!显然,用户可以在将文件放在那里后执行 chmod - 但我希望用户的“放置”尽可能简单。(这些人不了解 linux,
umask 似乎太强大了:我不想为这些用户在任何地方创建的每个文件设置默认权限 - 只是那些在(或放置在)这个目录中的文件。
请指教……谢谢!
您可以使用 ACL(访问控制列表)为目录中的文件设置默认权限。
来自man 5 acl
:
如果默认 ACL 与目录关联,则创建文件对象的函数的 mode 参数和目录的默认 ACL 用于确定新对象的 ACL:
新对象继承包含目录的默认 ACL 作为其访问 ACL。
修改与文件权限位对应的访问 ACL 条目,以便它们不包含不包含在 mode 参数指定的权限中的权限。
设置(相应地更改设备、目录等):
编辑您的/etc/fstab
文件并添加acl
挂载选项。
/dev/mapper/star-home /home ext3 defaults,acl 0 2
Run Code Online (Sandbox Code Playgroud)
重新挂载(桑巴mount.cifs
手册页)文件系统通过重新启动或使用:
mount -o remount,acl /home
Run Code Online (Sandbox Code Playgroud)
在目录上设置默认 ACL(您可能还需要在现有文件上设置 ACL):
$ setfacl -m d:user:george:rwx,d:group:sales-g:rwx,d:group:marketing-g:rwx projections
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅链接的教程。
我可以提供一个解决方法:创建一个单独的“放置”目录,在那里运行一个单独的迷你作业来修复权限,然后将文件移动到应用程序的数据目录中。您可以使用 incron 来实现这一点,这样几乎不会有明显的时间延迟。
归档时间: |
|
查看次数: |
13661 次 |
最近记录: |