如何使用Puppet文件资源在目录和文件上分别授予不同的权限?

5

我希望使用Puppet来管理一个目录。我希望该目录的所有者是root用户,所属组是admin组,权限为0770。

我希望该目录中的所有文件都由apache用户和admin组所有,权限为0600。

使用Puppet的file资源我尚未找到实现此目标的方法。我已经尝试过类似以下方式使用两个资源:

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,
}

但我不被允许创建两个文件资源到同一路径,而且我不知道如何只使用一个资源来实现我想要的效果。

非常感谢您的帮助。

2个回答

0
据我所知,在Puppet中是不可能实现这个的。我只会管理以下内容:
  file { 'phpsessions_dir':
      path => '/var/phpsessions',
      recurse => false,
      owner => 'root',
      group => 'admin',
      mode => 0770,
  }

php/apache 应该使用正确的权限在此文件夹内创建文件。如果没有,请在 php.ini 中进行修复。如果您担心其他因素会更改权限,则可以退回到 cron 作业或更好的 systemd.timer 定期检查和纠正它们。


0

这会如何改变已由Puppet文件类型设置的文件或目录的所有权?如果您尝试通过exec更改它,规则将不会收敛。 - iamauser
好的观点。我的错,没有注意到所有权的变化。也许可以在定义中添加另一个exec以确保所有权设置正确。 - ptierno
那也不行。你必须添加一个函数,循环遍历父目录中的所有文件和子目录以更改权限和所有权。 - iamauser
2
不幸的是,Puppetlabs关闭了维基。不过,链接仍在archive.org中:http://web.archive.org/web/20160401113847/http://projects.puppetlabs.com/projects/1/wiki/File_Permission_Check_Patterns。 - Vagnerr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接