Como posso ter o fantoche usando um hash de senha local (no mestre) para os usuários?

1

Definimos usuários como tal:

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

Eu quero definir um tipo que procure no /etc/shadow local para o mestre de marionetes e, se o usuário estiver lá, use o hash de senha. Algo como:

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,
    }
}

O que seria get_hash_from_local_shadown_somehow neste caso? Eu vejo a função de arquivo em puppet , mas não sei como utilizar isso para resolver isso, já que eu Vai precisar de mais algum processamento de texto.

Observação: Eu sei que a autenticação centralizada seria a melhor opção, mas isso não é uma opção imediata no momento.

    
por Belmin Fernandez 10.09.2014 / 17:47

1 resposta

2

Encontrou uma maneira de fazer isso via Fórum de marionetes usando o gerar função:

You can use the generate() function to that.

You'd basically create a script that does whatever processing you need, then $shadow_hash = generate('/path/to/script').

Eu escrevi um script simples para recuperar o hash:

#!/bin/bash

SHADOW_FILE='/etc/shadow'

awk -F: "\ == \"$@\"" ${SHADOW_FILE} | awk -F: '{print $2}' || echo ''

E a função generate parece assim:

$shadow_hash = generate('/bin/bash','/usr/local/sbin/extract_shadow_hash', $user)

Espero que isso ajude alguém. Parece uma função que pode ser útil em vários casos de uso.

    
por 10.09.2014 / 19:12