我可以为尚不存在的目录设置 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>
安装脚本运行时的值是什么。