如何使用 Puppet 文件资源对目录授予与其文件不同的权限?

我想使用 Puppet 来管理目录。我希望该目录由用户 root 和组 admin 拥有,具有 0770 权限。

我希望目录中的所有文件都归用户 apache 和具有 0600 权限的组 admin 所有。

我还没有找到一种方法来使用 Puppet 中的文件资源来实现这一点。我尝试过使用两种资源,如下所示:

file { 'phpsessions_files':
    path => '/var/phpsessions',
    ensure => directory,
    owner => 'apache',
    group => 'admin',
    mode => 0600,
    recurse => true,
    before => File['phpsessions_dir'],
}

file { 'phpsessions_dir':
    path => '/var/phpsessions',
    recurse => false,
    owner => 'root',
    group => 'admin',
    mode => 0770,
}

但是我不允许为同一路径创建两个文件资源,而且我看不到如何仅使用一个资源来实现我想要的。

非常感谢您的帮助。

stack overflow How to use a Puppet File Resource to give different permissions on a directory than to it's files?
原文答案

答案:

作者头像

创建一个包含 exec 的定义,以在递归后更改目录的模式。

http://projects.puppetlabs.com/projects/1/wiki/File_Permission_Check_Patterns

作者头像

据我所知,这在 puppet 中是不可能的。我会管理以下

  file { 'phpsessions_dir':
      path => '/var/phpsessions',
      recurse => false,
      owner => 'root',
      group => 'admin',
      mode => 0770,
  }

php/apache 应该在这个文件夹中创建具有正确权限的文件,如果他们没有在 php.ini 中修复它。如果您担心会出现其他事情并更改权限,那么请退回到 cron 作业或更好的是 systemd.timer 来定期检查并纠正它们