【问题标题】:How to use a Puppet File Resource to give different permissions on a directory than to it's files?如何使用 Puppet 文件资源对目录授予与文件不同的权限?
【发布时间】:2013-08-22 14:30:48
【问题描述】:

我想使用 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,
}

但是我不能在同一个路径上创建两个文件资源,而且我看不到如何只用一个资源来实现我想要的。

非常感谢您的帮助。

【问题讨论】:

    标签: ruby linux puppet


    【解决方案1】:

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

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

    【讨论】:

    • 这将如何改变已由 puppet 文件类型设置的文件或目录的所有权?如果您尝试通过 exec 更改它,则规则将不收敛。
    • 好点。我的错,没有注意到所有权的变化。也许在定义中添加另一个 exec 确保所有权设置正确。
    • 那也不行。您必须添加一个函数,该函数将遍历父目录中的所有文件和子目录以更改权限和所有权。
    • 遗憾的是,Puppetlabs 关闭了 wiki。尽管web.archive.org/web/20160401113847/http://… 的链接仍在archive.org
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-18
      • 1970-01-01
      • 2016-03-23
      • 1970-01-01
      相关资源
      最近更新 更多