为尚不存在的目录设置 ACL

为尚不存在的目录设置 ACL

我可以为尚不存在的目录设置 ACL,但遵循某种模式吗?

我有一个目录/opt/myapp/var,其中所有子目录和文件都应归其所有mygroup并且应该是组可写的。这没有问题。在安装应用程序期间,我可以执行以下操作:

prefix=/opt/myapp
chown -R :mygroup $prefix/var                   # All files are owned by mygroup
chmod -R g+w $prefix/var                        # All files group-writable
find $prefix/var -type d -exec chmod g+s {} \;  # New files inherit parent's group
find $prefix/var -type d -exec \
      setfacl -dm u::rw,g::rw,o::r {} \;        # New files are 664 instead of 644

但我的应用程序还可以使用一些配置文件,这些配置文件仅在安装后由应用程序创建。这些都在这条路径中:

$prefix/home/<profile>/var

有没有办法让我设置 ACL:

  • 如果$prefix/home曾经创建过,那么它以及将在其下(递归地)创建的所有目录都是用g+s?创建的。
  • 如果$prefix/home/<profile>/var曾经创建过,则它以及将在其下创建的所有文件(递归地)都是用g+rw?创建的。

这很棘手,因为$prefix/home还不存在,而且我不知道<profile>安装脚本运行时的值是什么。

相关内容