このコードに従って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のみを満たすようにするには、どのパラメーターとそれをコードのどこに配置する必要がありますか。
任意の提案をいただければ幸いです。
表示されるエラーメッセージは、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キーを使用してシステムに接続できた可能性があります。
これは機能しません。つまり、パペットが実行されるたびに、パペットは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;
> }
> ...