2012-06-28 1 views
5

Sto cercando un modo per modificare la password di un utente root su un sistema Linux tramite uno script bash, senza avviare il sistema. Le uniche cose che ho trovato finora sono di rimuovere la password, o di usare un chroot, che preferisco non usare.
So come svuotare la password di root, ma ho bisogno di cambiarla con una password diversa definita in precedenza nello script.
Ho accesso root all'intero file system.
Il sistema utilizza password shadow, esiste un modo per generare una password shadow crittografata senza eseguire il login/chroot?
Altri modi per modificare la password di root dallo script?Cambia password di root da script

+1

Alcuni consigli [qui] (http://mywiki.wooledge.org/BashFAQ/078). Ci sono modi. Dipende dalla piattaforma. – ormaaj

+0

Grazie per la risposta. Questa potrebbe essere la soluzione. Non sapevo che Debian avesse un comando mkpasswd, proverò a farlo e riferirà. – SharkWipf

risposta

8

L'hash della password è /etc/shadow. Puoi semplicemente sostituirlo con un hash generato (salato). Il formato per l'hash della password è descritto in crypt (3). Il valore predefinito è DES, ma su sistemi glibc2 può contenere uno dei diversi metodi di crittografia differenti:

ID | Method 
--------------------------------------------------------- 
1 | MD5 
2a | Blowfish (not in mainline glibc; added in some 
    | Linux distributions) 
5 | SHA-256 (since glibc 2.7) 
6 | SHA-512 (since glibc 2.7) 

Quindi una stringa di password ombra potrebbe essere simile a questo: $5$saltysalt$KhboodWTnuXJ5siXvWx5mxYXbnuNJOxROfD1inCILfD

In questo caso il primo $ 5 $ la parte indica che si tratta di un hash SHA-256, la parte centrale è il sale e il resto è l'hash effettivo.

Per generare uno, miglior uso (3) la funzione cripta del sistema, ad esempio con un programma C minimo:

#include <stdio.h> 
#include <crypt.h> 

int main(int argc, char *argv[]) { 
     printf("%s\n", crypt(argv[1], argv[2])); 
} 

Compilare con cc mkpass.c -o mkpass -lcrypt e quindi eseguire con la password e il sale stringa di testo in chiaro per generare una stringa si può mettere in /etc/shadow:

./mkpass yourpassword yoursalt     # DES (default) 
./mkpass yourpassword '$6$yoursalt$encrypted' # SHA-512 (quote your $) 

La seconda forma non siano supportate su sistemi Linux più vecchi. Meglio guardare la stringa esistente nel tuo file shadow e usare lo stesso tipo di hash (dalla lista $ id $ in alto).

+0

Questo ha funzionato perfettamente, grazie! – SharkWipf

-1

Premere e nella scheda Ubuntu nella schermata del menu di selezione Sistema operativo. Aggiornare il comando come segue

rw init=/bin/bash 

Essa vi porterà la shell di root di Linux. Modificare la password di root semplicemente immettendo il comando denominato passwd root.