Alterar senha de um usuário em / etc / shadow

6

Gostaria de alterar a senha de um usuário no /etc/shadow . Eu não posso usar programas de alteração de senha como passwd . Isso deve ser feito editando o /etc/shadow . O /etc/shadow está em um disco rígido montado e o chroot não está funcionando.

Por exemplo:

root:$asdf.1AH.MJ3sivd4$YFoFnasdf4cZW9H6G6cbT4.1VBmasdfmv.a0wCU/i3zEFasdfasdf4W.:15843:0:99999:7:::
otheruser:$asdf.1AH.MJ3sivd4$YFoFnasdf4cZW9H6G6cbT4.1VBmasdfmv.a0wCU/i3zEFasdfasdf4W.:15843:0:99999:7:::

Alguém pode me fornecer um script de shell para alterar a senha do root com sed ou awk ou algo assim?

    
por John Smithv1 18.05.2013 / 22:51

2 respostas

9

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 .

    
por 18.05.2013 / 22:54
-1

Remova a senha toda para o usuário em / etc / shadow, inicialize o sistema, efetue login sem senha e use o comando passwd. Se possível, não coloque o sistema na rede até que esteja concluído.

    
por 21.03.2014 / 17:36

Tags