Altera a senha de root de uma imagem do Linux

5

Estou construindo uma versão jessie do Debian. As senhas são salvas em /etc/shadow na árvore de construção, mas elas são salgadas obviamente, por isso não posso alterá-las apenas editando o arquivo. Se este fosse meu sistema instalado, eu poderia chamar passwd , mas aqui eu quero alterar a senha no arquivo na árvore de compilação.

Como altero a senha do root antes de fazer um SD com uma nova compilação?

    
por Kousha 28.03.2015 / 00:54

1 resposta

5

No estágio em que você tem uma árvore de diretórios contendo um arquivo …/etc/shadow (antes de construir a imagem do sistema de arquivos), modifique esse arquivo para injetar os hash (s) de senha que você deseja ter.

A maneira mais fácil de fazer isso é com versões recentes suficientes da ferramenta chpasswd da sombra do Linux utilities suite (o Debian wheezy é recente o suficiente) com a opção -R . Uso de amostra:

chpasswd -R /path/to/build/tree <passwords.txt

com passwords.txt contendo linhas como

root:swordfish
alibaba:opensesame

Se o seu ambiente de criação não suportar chpasswd -R , você poderá usar uma ferramenta que gere um hash de senha chamando o crypt funciona e injeta no arquivo shadow pela manipulação de texto. Por exemplo (código não testado):

#!/usr/bin/python
import base64, crypt, os, re, sys
for line in sys.stdin.readlines():
    (username, password) = line.strip().split(":")
    salt = "$6$" + base64.b64encode(os.urandom(6))
    hashes[username] = crypt.crypt(password, salt)
old_shadow = open("etc/shadow")
new_shadow = open("etc/shadow.making", "w")
for line in old_shadow.readlines():
    (username, password, trail) = line.lstrip().split(":", 3)
    if hashes.has_key(username):
        line = username + ":" + hashes[username] + ":" + trail
    new_shadow.write(line)
old_shadow.close()
new_shadow.close()
os.rename("etc/shadow.making", "etc/shadow")
    
por 28.03.2015 / 01:29