Le password sono normalmente memorizzate in /etc/shadow
, che non è leggibile dagli utenti. Tuttavia, storicamente, sono stati archiviati nel file leggibile da tutti /etc/passwd
insieme a tutte le informazioni sull'account. Per compatibilità con le versioni precedenti, se è presente un hash della password nella seconda colonna in /etc/passwd
, ha la precedenza su quello in /etc/shadow
.
Storicamente, un secondo campo vuoto in /etc/passwd
significa che l'account non ha password, cioè chiunque può accedere senza password (usata per gli account guest). Questo a volte è disabilitato. Se gli account senza password sono disabilitati, puoi inserire l'hash di una password a tua scelta. Puoi usare il crypt
funzione per generare gli hash delle password, ad esempio perl -le 'print crypt("foo", "aa")'
per impostare la password su foo
.
È possibile ottenere l'accesso root anche se puoi aggiungere solo a /etc/passwd
e non sovrascrivere il contenuto. Questo perché è possibile avere più voci per lo stesso utente, purché abbiano nomi diversi:gli utenti sono identificati dal loro ID, non dal loro nome, e la caratteristica che definisce l'account root non è il suo nome ma il fatto che ha l'ID utente 0. Quindi puoi creare un account root alternativo aggiungendo una riga che dichiari un account con un altro nome, una password a tua scelta e l'ID utente 0.
Basta digitare:
echo root::0:0:root:/root:/bin/bash > /etc/passwd
su
e tu sei root.
(Rimozione di x
significa che root non richiede più password, puoi usare sed
comando invece di echo
tuttavia questo è sufficiente per ottenere la shell di root)
Puoi utilizzare questo metodo non distruttivo:
# to generate hash of the password
openssl passwd mrcake
hKLD3431415ZE
# to create a second root user with "mrcake" password
echo "root2:WVLY0mgH0RtUI:0:0:root:/root:/bin/bash" >> /etc/passwd
# to switch to a root2
su root2
Password: mrcake