Você pode usar a ferramenta mkpasswd para fazer isso. Há uma boa cartilha sobre como usá-la no cyberciti.biz, intitulado: Linux / UNIX: Gerando uma senha aleatória com mkpasswd .
Exemplo
mkpasswd --char=10 --crypt-md5
O pacote geralmente é chamado de makepasswd
, mas a ferramenta é geralmente chamada de mkpasswd
.
Veja a página de manual para mais detalhes.
Gerando conteúdo de /etc/shadow
diretamente
O seguinte comando python irá gerar a parte que vai para o arquivo /etc/shadow
:
Python
$ python -c "import crypt, getpass, pwd; \
print crypt.crypt('password', '\\$SALTsalt\$')"
Perl
$ perl -e 'print crypt("password","\\$saltsalt\$") . "\n"'
Que gera a seguinte saída:
$6$SALTsalt$UiZikbV3VeeBPsg8./Q5DAfq9aj7CVZMDU6ffBiBLgUEpxv7LMXKbcZ9JSZnYDrZQftdG319XkbLVMvWcF/Vr/
Alterando o / etc / shadow
Aqui está um comando que irá alterar a entrada existente com o campo de senha recém-gerado a partir do comando acima.
perl -pe 's|(root):(\$.*?:)|:\\$SALTsalt\$UiZikbV3VeeBPsg8./Q5DAfq9aj7CVZMDU6ffBiBLgUEpxv7LMXKbcZ9JSZnYDrZQftdG319XkbLVMvWcF/Vr/:|' /etc/shadow > /etc/shadow.new
NOTA: Este é um exemplo difícil, mas funciona. Você precisará obter os resultados do comando que gerou a senha com hash e escapar dos sinais de cifrão ($) com barras (\ $).
Os resultados são armazenados em um novo arquivo /etc/shadow.new. Depois de confirmar os resultados, você pode substituir /etc/shadow
pelo novo arquivo, /etc/shadow.new
.