Linux

如何讓 puppet 為使用者使用本地(在主伺服器上)密碼雜湊?

  • September 11, 2014

我們這樣定義使用者:

user { 'belmin':
   ensure          => present,
   uid             => 308,
   comment         => 'Belmin Fernandez',
   managehome      => true,
   password        => '$6$NrtZpXEauUqjdRh0$vE9oJwbNTSWVCGrlDe4KHXFB0KXY7hszSas3v0DZvhUej4SIb/WLfaCy.lmSU7Hh8AAvAbPuDRai2p1X9mDcM0',
}

我想定義一種類型,它將在/etc/shadowpuppet 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)

希望這對其他人有幫助。似乎是一個可以在一堆案例中有用的函式。

引用自:https://serverfault.com/questions/627598