Linux
如何讓 puppet 為使用者使用本地(在主伺服器上)密碼雜湊?
我們這樣定義使用者:
user { 'belmin': ensure => present, uid => 308, comment => 'Belmin Fernandez', managehome => true, password => '$6$NrtZpXEauUqjdRh0$vE9oJwbNTSWVCGrlDe4KHXFB0KXY7hszSas3v0DZvhUej4SIb/WLfaCy.lmSU7Hh8AAvAbPuDRai2p1X9mDcM0', }
我想定義一種類型,它將在
/etc/shadow
puppet master 的本地查找,如果使用者在那裡,請改用該密碼雜湊。就像是:define our_user ($user = $title, $uid, $fullname, $default_hash) { $shadow_hash = get_hash_from_local_shadown_somehow if $shadow_hash == '' { $shadow_hash = $default_hash } user { $user: ensure => present, uid => $uid, comment => $fullname, managehome => true, password => $shadow_hash, } }
get_hash_from_local_shadown_somehow
在這種情況下會發生什麼?我看到了文件功能,puppet
但不確定如何利用它來解決這個問題,因為我需要更多的文本處理。注意:我知道集中式身份驗證將是最明智的途徑,但目前這不是一個直接的選擇。
通過Puppet 的論壇使用generate函式找到了一種方法:
您可以使用 generate() 函式。
您基本上會創建一個腳本來執行您需要的任何處理,然後 $shadow_hash = generate(’/path/to/script’).
我編寫了一個簡單的 bash 腳本來檢索雜湊:
#!/bin/bash SHADOW_FILE='/etc/shadow' awk -F: "\$1 == \"$@\"" ${SHADOW_FILE} | awk -F: '{print $2}' || echo ''
generate
函式看起來像這樣:$shadow_hash = generate('/bin/bash','/usr/local/sbin/extract_shadow_hash', $user)
希望這對其他人有幫助。似乎是一個可以在一堆案例中有用的函式。