Назад | Перейти на главную страницу

Как настроить параметр в модуле puppet sudo, чтобы заменить клиентский sudoer?

Я настраиваю модуль sudo в марионетке в соответствии с этим кодом

class sudo {
 package { sudo:
   ensure => present,
 }
 if $operatingsystem == "Ubuntu" {
   package { "sudo-ldap":
     ensure => present,
     require => Package["sudo"],
   }
 }
 file { "/etc/sudoers":
    owner => "root",
    group => "root",
    mode => 0440,
    source => "puppet://$puppetserver/modules/sudo/etc/sudoers",
    replace => true,
    require => Package["sudo"],
  }
}

и получил следующую ошибку:

Если вы организовали другие способы доступа к учетной записи root и уверены, что это именно то, что вам нужно, вы можете обойти эту проверку, установив переменную среды (export SUDO_FORCE_REMOVE = yes).

Какой параметр и где я должен поместить его в код, чтобы команда sudo удовлетворяла только ssh-ключу без запроса пароля.

Любое предложение будет оценено.

Сообщение об ошибке, которое вы получаете, указывает, что при установке sudo-ldap что dpkg удаляет sudo и сценарий удаления пытается предупредить вас, что это может оставить вас в состоянии без доступа root.

Вы не можете установить переменную среды из Puppet для dpkg, поэтому вам нужно будет запустить агент Puppet с уже настроенной средой (возможно, экспорт из /etc/default/puppet или что-то подобное, например сценарий инициализации).

Вопрос, который вы задаете ниже, касается самого sudo и, вероятно, удовлетворен использованием NOPASSWD вариант в вашем /etc/sudoers файл:

username ALL=(ALL) NOPASSWD: ALL

Это позволяет "имени пользователя" использовать sudo для любого пользователя, запускать любую команду без пароля вообще. На этом этапе проверка ключей SSH не выполняется (это не имеет смысла), но пользователь мог подключиться к системе с помощью ключа SSH.

Это не сработает, это означает, что при каждом запуске марионетки марионетка удаляет sudo-ldap и пытается установить sudo, а затем снова устанавливает sudo-ldap.

Часть 'export SUDO_FORCE_REMOVE = yes' была исправлена ​​путем создания исполняемого файла с оператором экспорта и запуска его с помощью exec:

> ... 
>     if $ldap {
>     file {
>       '/tmp/delsudo.sh':
>         ensure  => present,
>         mode    => '0700',
>         content => 'export SUDO_FORCE_REMOVE=yes';
>     } ->
>     exec { '/tmp/delsudo.sh':
>       logoutput => on_failure;
>     } 
>     ...