38

puppet を使用してパスワード付きのテスト ユーザーを作成する必要があります。

パペットは一般的なクロスプラットフォームの方法でユーザーのパスワードを管理できないと読みましたが、これは残念です。Red Hat Enterprise Linux Server リリース 6.3 でこれを行っています。

私は次のようにします:

user { 'test_user': 
  ensure   => present,
  password => sha1('hello'),
}

puppet はユーザーのパスワードを更新しますが、ログインしようとすると、Linux は login/pwd が正しくないと言います。

を使用して Linux で手動でパスワードを設定し、パペットでその値をsudo passwd test_user確認してハードコードすると、機能します (ログインできます) 。/etc/shadow何かのようなもの:

user { 'test_user': 
  ensure   => present,
  password => '$1$zi13KdCr$zJvdWm5h552P8b34AjxO11',
}

$1$の前に追加してみましsha1('hello')たが、どちらも機能しません (注意、$1$sha1 の略です)。

最初の例を変更して機能させるにはどうすればよいですか (puppet ファイルの平文パスワードを使用)?

PS: puppet ファイルにユーザー パスワードをハードコーディングする代わりに、LDAP や sshkeys などを使用する必要があることは承知しています。ただし、これは puppet vagrant テストを実行するためだけに行っているため、ユーザー パスワードをハードコーディングしても問題ありません。

4

8 に答える 8

17

puppetlabs の stdlib パッケージはpw_hash、受け入れられた回答と同様の機能を実装しています。

必ずライブラリを構成に追加してください。librarianを使用する場合は、Puppetfile

mod 'puppetlabs-stdlib'

次に、ユーザーを作成するには、次のようにします。

user { 'user':
  ensure => present,
  password => pw_hash('password', 'SHA-512', 'mysalt'),
}
于 2015-08-16T11:50:43.630 に答える
12

sha1お分かりのように、puppetの関数は passwd エントリを直接意図したものではありません。パスワードではなくハッシュを設定することをお勧めします。とにかく、パスワードを回復できることは本当に想定されていません-一度生成するか、パペットに毎回生成させることができます-そのハッシュを一度生成するだけで十分なはずです... Debian/Ubuntuでパスワードを生成できますこのような:

pwgen -s -1 | mkpasswd -m sha-512 -s

... CentOS では、mkpasswd の代わりに grub-crypt コマンドを使用できます...

于 2013-11-06T14:54:11.317 に答える
3

関数を使用しgenerateて、Puppet にハッシュを作成させることができます。

$password = 'hello'

user { 'test_user':
    ensure   => 'present',
    password => generate('/bin/sh', '-c', "mkpasswd -m sha-512 ${password} | tr -d '\n'"),
}
于 2014-10-14T11:09:19.217 に答える
1

私のVagrantfileで、私はこれをしました:

$newuserid = ENV["USERNAME"]

config.vm.provision :puppet do |puppet|
    puppet.module_path    = "modules"
    puppet.manifests_path = "manifests"
    puppet.manifest_file  = "main.pp"
    puppet.facter         = {"newuserid" => $newuserid}
    puppet.options        = "--verbose"    
end

そして私のmain.ppファイルで:

user { $newuserid :
  ensure  => present,
  home    => "/home/${newuserid}",
  managehome => true,
  gid => "mygid",
}

exec { 'set password':
  command => "/bin/echo \"${newuserid}:${newuserid}\" | /usr/sbin/chpasswd",
  require => User [ $newuserid ],
}
于 2014-11-06T16:45:54.753 に答える