2012-06-28 21 views
5

Szukam sposobu na zmianę hasła użytkownika root w systemie Linux poprzez skrypt bash, bez uruchamiania systemu. Jedyne, co do tej pory znalazłem, to albo usunąć hasło, albo użyć chroota, którego wolę nie używać.
Wiem, jak opróżnić hasło roota, ale muszę zmienić je na inne hasło zdefiniowane wcześniej w skrypcie.
Mam uprawnienia administratora do całego systemu plików.
System używa haseł shadow, czy istnieje sposób na wygenerowanie zaszyfrowanego hasła shadow bez logowania/chrootowania?
Jakieś inne sposoby zmiany hasła roota ze skryptu?Zmiana hasła root ze skryptu

+1

Kilka porad [tutaj] (http://mywiki.wooledge.org/BashFAQ/078). Są sposoby. To zależy od platformy. – ormaaj

+0

Dzięki za odpowiedź. To może być faktycznie rozwiązanie. Nie wiedziałem, że Debian ma polecenie mkpasswd, spróbuje tego i złoży raport. – SharkWipf

Odpowiedz

8

Hasło mieszania jest w /etc/shadow. Możesz po prostu zastąpić go wygenerowanym (solonym) hashem. Format skrótu hasła jest opisany w krypt (3). Domyślną wartością jest DES, ale w systemach glibc2 może zawierać jedną z kilku różnych metod szyfrowania:

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) 

więc ciąg hasło cień może wyglądać następująco: $5$saltysalt$KhboodWTnuXJ5siXvWx5mxYXbnuNJOxROfD1inCILfD

W tym przypadku pierwsza 5 $ $ część wskazuje, że jest to skrót SHA-256, środkowa część to sól, a reszta to rzeczywista mieszanka.

Aby wygenerować jeden, najlepiej używać krypty systemu (3) funkcji, na przykład przy minimalnym C programu:

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

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

skompilować z cc mkpass.c -o mkpass -lcrypt a następnie uruchomić z tekstu jawnego hasło i soli ciąg wygenerować ciąg można umieścić w /etc/shadow:

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

druga forma nie może być obsługiwana w starszych systemach Linux. Najlepiej spójrz na istniejący ciąg w pliku shadow i użyj tego samego typu hash (z listy $ id $ u góry).

+0

To działało bez zarzutu, dzięki! – SharkWipf

-1

Prasa e na karcie Ubuntu na ekranie menu wyboru systemu operacyjnego. Aktualizacja polecenia w następujący sposób

rw init=/bin/bash 

będzie spadać ci konta root linux. Zmień hasło roota, wpisując komendę o nazwie passwd root.