Как использовать файловый ресурс Puppet, чтобы предоставить разные разрешения для каталога, чем для его файлов?

Я хотел бы использовать Puppet для управления каталогом. Я хочу, чтобы каталог принадлежал пользователю root и администратору группы с разрешениями 0770.

Я хотел бы, чтобы все файлы в каталоге принадлежали пользователю apache и администратору группы с разрешениями 0600.

Мне еще предстоит найти способ добиться этого, используя файловый ресурс в 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,
}

Но мне не разрешено создавать два файловых ресурса по одному и тому же пути, и я не вижу, как добиться того, чего я хочу, с помощью всего одного ресурса.

Ваша помощь очень ценится.


person Gabe    schedule 20.08.2013    source источник


Ответы (2)


Создайте определение, содержащее exec, чтобы изменить режим каталога после его рекурсии.

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

person ptierno    schedule 20.08.2013
comment
Как это изменит право собственности на файл или каталог, который уже установлен типом файла марионетки? Если вы попытаетесь изменить его через exec, правила будут неконвергентными. - person iamauser; 20.08.2013
comment
Хорошая точка зрения. Моя вина, не заметил смены владельца. Возможно, добавьте еще один exec в определение, чтобы убедиться, что право собственности установлено правильно. - person ptierno; 20.08.2013
comment
Это тоже не годится. Вы должны добавить функцию, которая будет перебирать все файлы и подкаталоги внутри родительского, чтобы изменить разрешения и владельцев. - person iamauser; 20.08.2013
comment
к сожалению, Puppetlabs закрыли вики. ссылка все еще находится в archive.org, хотя http://web.archive.org/web/20160401113847/http://projects.puppetlabs.com/projects/1/wiki/File_Permission_Check_Patterns - person Vagnerr; 19.10.2016

Насколько мне известно, это невозможно в puppet. я бы справился только со следующим

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

php/apache должен создать файлы в этой папке с правильными разрешениями, если они не исправят это в php.ini. Если вы беспокоитесь, что что-то еще произойдет и изменит разрешения, вернитесь к заданию cron или, что еще лучше, к systemd.timer для проверки периодичности и исправления их.

person balder    schedule 17.03.2020