web-dev-qa-db-ja.com

クライアントsudoerを置き換えるために、puppet Sudoモジュールのパラメーターを構成するにはどうすればよいですか?

このコードに従ってPuppetで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-keyのみを満たすようにするには、どのパラメーターとそれをコードのどこに配置する必要がありますか。

任意の提案をいただければ幸いです。

2
bayou

表示されるエラーメッセージは、Sudo-ldapをインストールすることにより、dpkgがSudoを削除し、removeスクリプトがrootアクセスのない状態になる可能性があることを警告しようとしていることを示しています。

Puppetからdpkgの環境変数を設定することはできないため、環境がすでに設定されている状態でPuppetエージェントを起動する必要があります(おそらく/etc/default/puppetまたはinitスクリプトなどの類似のものからエクスポートします)。

ただし、以下で質問しているのはSudo自体と関係があり、/etc/sudoersファイルでNOPASSWDオプションを使用することでおそらく満たされます。

username ALL=(ALL) NOPASSWD: ALL

これにより、「username」を任意のユーザーにSudoで送信し、パスワードなしで任意のコマンドを実行できます。この段階ではSSHキーのチェックは行われませんが(意味がありません)、ユーザーはSSHキーを使用してシステムに接続できた可能性があります。

2
Dominic Cleal

これは機能しません。つまり、パペットが実行されるたびに、パペットはSudo-ldapを削除してSudoをインストールしようとし、その後Sudo-ldapを再度インストールします。

'export Sudo_FORCE_REMOVE = yes'の部分は、exportステートメントを使用して実行可能ファイルを作成し、execを使用して実行することで修正されました。

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