Preciso editar manualmente /etc/shadow
para alterar a senha raiz dentro de uma imagem de máquina virtual.
Existe uma ferramenta de linha de comando que pega uma senha e gera um /etc/shadow
hash de senha compatível na saída padrão?
Você pode usar os seguintes comandos para o mesmo:
openssl passwd -6 -salt xyz yourpass
Nota: a passagem -1
gerará uma senha MD5, -5
um SHA256 e -6
SHA512 (recomendado)
mkpasswd --method=SHA-512 --stdin
Métodos aceita md5
, sha-256
esha-512
Como o @tink sugeriu, podemos atualizar a senha chpasswd
usando:
echo "username:password" | chpasswd
Ou você pode usar a senha criptografada com chpasswd
. Primeiro, gere-o usando o seguinte:
perl -e 'print crypt("YourPasswd", "salt", "sha512"),"\n"'
Depois, você pode usar a senha gerada para atualizar:
echo "username:encryptedPassWd" | chpasswd -e
Essa senha criptografada que podemos usar para criar um novo usuário com senha, por exemplo:
useradd -p 'encryptedPassWd' username
chpasswd -e
, certifique-se de usar aspas simples na stringecho
em que você está ; caso contrário, se houver$
ou outros caracteres especiais, eles não serão tratados literalmente.openssl passwd -1
qual 1) não acaba lá e 2) gera um sal aleatório para você (o que também não acaba no histórico do shell).openssl passwd
documentação para quem tenta descobrir o que a-1
opção faz.python3 -c 'import crypt; print(crypt.crypt("test", crypt.mksalt(crypt.METHOD_SHA512)))'
- da pergunta relacionada ao ServerFaultNo Ubuntu 12.04, existe o mkpasswd (do pacote whois): Overfeatured front end to crypt (3)
Onde:
-m
= Calcule a senha usando o método TYPE. Se TYPE for help, os métodos disponíveis serão impressos.-S
= sal usado.Por exemplo
fonte
Esta solução tem os seguintes benefícios:
Solicita novamente a senha para evitar erros.
Referências
fonte
Para aqueles sem sistemas baseados no Debian. Python3 funciona tão bem.
NOTA: A string "test" é a senha que estamos gerando como uma string criptografada.
fonte
crypt.mksalt
não funciona ao gerar senhas para/etc/shadow
. Mas o método do @ Alex131089 funciona!openssl
é uma ferramenta bastante universal.Nenhum dos métodos atuais é aceitável para mim - eles passam a senha na linha de comando (que termina no histórico do meu shell), exigem a instalação de utilitários adicionais (
python3
,makepasswd
), usam sais codificados ou usam técnicas antigas de hash.Esse método geraria hashes SHA-512 após solicitar a senha e usaria um sal aleatório.
Um método que utiliza o Python 2 sem nenhuma biblioteca não padrão:
Para fazer isso sem aviso: (Isso deixará sua senha no histórico de comandos)
fonte
ps
saída na fração de segundo que o comando está executando. (O mais seguro continua a usar a versão que solicita a senha)O par
openssl
echpasswd -e
não funcionou no meu caso no RHEL6. A combinaçãoopenssl passwd
e ousermod -p
comando fizeram o trabalho.Gere o valor de hash da senha junto com o valor de salt:
Em seguida, copie a sequência criptografada para usermod. Certifique-se de envolvê-lo com aspas simples.
Confira no arquivo de sombra.
fonte
Ainda outro método para gerar senhas, está usando a
openssl
ferramenta.Gere senhas MD5
Gere senhas DES
fonte
Expandindo um pouco as críticas de u150825 e Gert van den Berg, me vi precisando de algo relativamente flexível para diferentes situações com diferentes sistemas de automação. Decidi adicionar à minha pequena biblioteca de scripts úteis e escrever isso. Ele usa apenas bibliotecas nativas do python 2.7+ e funciona no python3 também.
Você pode buscá-lo aqui, se quiser. É fácil deixar isso para o seu ambiente se você precisar usá-lo muito, hospedado em http ou qualquer outra coisa, e você pode executá-lo em qualquer plataforma usando qualquer interpretador python padrão que você tenha disponível. confiando de forma confiável.
O padrão é solicitar o uso do getpass com prompts no stderr (permitindo a captura fácil do stdout), mas se você colocar uma string nele, ela simplesmente colherá do stdin. Dependendo de como você está lidando com isso, também pode não estar aparecendo no histórico de comandos; portanto, esteja ciente do que você está trabalhando. Eu gosto de ter uma ferramenta flexível que se comporte da maneira esperada, em vez de ter que confiar em pacotes ou em python, alinhando meu caminho para a vitória de 10 maneiras diferentes.
fonte
chpasswd
?