Script samba password mas com segurança

2

Eu quero fazer o script da adição em um usuário do samba e a senha.

Eu vi soluções semelhantes à aqui

Senha da tubulação para smbpasswd

echo -ne "$PASS\n$PASS\n" | smbpasswd -a -s $LOGIN

mas a senha é visível para todos que veem o script. Como posso usar um hash e obter essa senha?

    
por user610209 22.05.2015 / 05:22

2 respostas

1

Contanto que o seu smb.conf contenha passdb backend = tdbsam você pode exportar um arquivo com senhas criptografadas, em um sistema que já foi configurado, usando:

sudo pdbedit -e smbpasswd:/tmp/smbpasswd

Em seguida, para configurar um novo sistema, você pode importá-lo usando

sudo pdbedit -i smbpasswd:/tmp/smbpasswd -e tdbsam:/var/lib/samba/private/passdb.tdb

(/ var / lib / samba / private / passdb.tdb é a localização do arquivo no Ubuntu)

Isso significa antes inicializar o banco de dados do usuário durante a configuração do sistema. Não tenho certeza se você conseguiria fazer algo assim apenas para adicionar um único usuário.

Na verdade, para o propósito de configurar um novo sistema, talvez seja melhor simplesmente copiar o passdb.tdb existente em vez de exportá-lo e importá-lo para o outro formato.

    
por 21.06.2016 / 20:06
0

Seu script terá que ser capaz de acessar a senha. Você não pode usar um hash da senha: se o fizesse, o hash seria a senha, pois isso significaria que qualquer pessoa com o hash poderia efetuar login.

Você deve colocar a senha em um arquivo separado e lê-la no seu script. Tome cuidado para reproduzir exatamente a senha (por exemplo, não use echo -e "$PASS" , já que isso interpretaria escapes de barra invertida).

IFS= read -r password </somewhere/private/file.password
printf '%s\n%s\n' "$password" "$password" | smbpasswd -a -s "$LOGIN"

ou

IFS= read -r password </somewhere/private/file.password
smbpasswd -a -s "$LOGIN" <<EOF
$password
$password
EOF

Argumentos passados para comandos externos são visíveis para outros processos enquanto o comando está sendo executado, portanto, não use a primeira solução se printf for um comando externo no seu shell. A maioria dos shells atuais tem printf como um builtin; use o comando type para verificar ou o formulário do documento aqui.

Certifique-se de que o arquivo que contém a senha seja legível apenas pelo usuário que deve estar executando o script. Naturalmente, qualquer comando executado como esse usuário poderá ler o script; Se isso não for desejável, você precisará executar o script como um usuário diferente (ou usar outro mecanismo de isolamento, mas um usuário separado é o mais fácil de configurar).

    
por 23.05.2015 / 01:01