Certifique-se de que você tem shadow e passalgo = sha512 em uma máquina, defina o root pass como a senha que você quer naquela máquina, pegue-a em / etc / shadow e coloque-a no kickstart. Isso não é aconselhável para uso em produção.
Para fazer isso de forma programática, use a biblioteca de criptografia do idioma escolhido que gera o arquivo de kickstart:
RUBY:
'password'.crypt('$6$' + (Base64.encode64(6.times.map{ Random.rand(256).chr }.join)).strip)
PHP:
crypt ('password', '$6$' . base64_encode (openssl_random_pseudo_bytes(6)));
Perl:
crypt ('password', '$6$' . encode_base64 (join '' => map chr (rand (256)), 0..5))
Python:
crypt.crypt('password', '$6$' + base64.b64encode(os.urandom(6)))
É altamente recomendável que você use um sal aleatório a cada vez, como eu fiz aqui, especialmente se você usar a mesma senha em todos os servidores.
EDITAR : Python 3:
crypt.crypt("password", crypt.mksalt())
Substitui a chamada para os.random
pela criptografia específica mksalt
.
Veja Biblioteca padrão do Python: crypt : crypt.mksalt()
: "Retorna um sal gerado aleatoriamente do Se nenhum método é dado, o método mais strong disponível como retornado por métodos () é usado "
EDITAR :
1) '$ 6 $' é para o SHA512. Você precisaria substituí-lo pelo tipo de criptografia de sua escolha.
2) Você pode transformar qualquer um deles em um liner também para fazer isso do bash.
EDITAR (para ter uma resposta completa, graças a miken32 e dawud ):
3) O BSD crypt é uma implementação diferente em comparação com o GNU, portanto, eles não são compatíveis. Se você quiser usar isto em sistemas BSD (como o OSX), você pode usar a versão PHP (com versão do PHP > 5.3.0) enquanto ela implementa sua própria crypt () função.
Outra alternativa no mac é usar passlib :
python -c 'import getpass; import passlib.hash; h=passlib.hash.sha512_crypt.hash(getpass.getpass()); print(h if (passlib.hash.sha512_crypt.verify(getpass.getpass("Confirm:"), h)) else "")'
ou, com o padrão da glibc no. de rodadas (5000):
python -c 'import getpass; import passlib.hash; h=passlib.hash.sha512_crypt.using(rounds=5000).hash(getpass.getpass()); print(h if (passlib.hash.sha512_crypt.verify(getpass.getpass("Confirm:"), h)) else "")'