Вопрос:

Отказано в доступе при попытке обновить санкционированные ключи root с помощью puppet

centos puppet

374 просмотра

1 ответ

4371 Репутация автора

Я пытаюсь добавить ключ /root/.ssh/authorized_keys(у него chmod 600), используя puppet. Я использую ssh_authorized_keyресурс для этого.

ssh_authorized_key { 'my@mail.com':
  ensure => present,
  user   => 'root',
  type   => 'ssh-rsa',
  key    => 'myKey',
}

Когда я запускаю puppet apply ...от имени root в первый раз, он выдает эту ошибку:

«Ошибка: Puppet :: Util :: FileType :: FileTypeFlat не может записать /root/.ssh/authorized_keys: В доступе отказано - /root/.ssh/authorized_keys»,

Тем не менее он добавляет указанный выше ключ, /root/.ssh/authorized_keysно удаляет все существующие ключи. Если я запускаю его второй раз, он успешно завершается без каких-либо ошибок.

Что может вызвать такое странное поведение и как я могу это исправить? (Моя ОС - CentOS 6)

Автор: Vitalii Vitrenko Источник Размещён: 08.11.2017 10:26

Ответы (1)


3 плюса

96969 Репутация автора

Решение

То puppet, что , работая от имени пользователя root, не может изменить файл, но может удалить его, мы настоятельно рекомендуем, чтобы обязательные элементы управления доступом (SELinux) играли здесь свою роль. Если SELinux включен в принудительном режиме и puppetконтекст выполнения SELinux не уполномочен изменять файлы, помеченные как /root/.ssh/authorized_keysизначально помеченные, то Puppet действительно будет отказано в разрешении на запись в этот файл.

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

Итог: это, вероятно, проблема, связанная с конфигурацией вашей системы и того, как вы запускаете Puppet, а не внутренняя проблема внутри самой Puppet. Если я правильно охарактеризовал его, то вы можете избежать этой проблемы, выполнив puppet applyкоманду в контексте безопасности, который имеет необходимый доступ ко всем файлам, которые вы хотите, чтобы она могла изменять, либо путем перемаркировки файлов, чтобы они были доступны в контексте, который вы '' использовать сейчас или выбрав другой контекст. Подробности, если они вам нужны, будут более уместно искать на другом форуме, таком как Super User или Unix & Linux SE .

Автор: John Bollinger Размещён: 09.11.2017 04:26
Вопросы из категории :
32x32