Unde și cum sunt stocate parolele pe Linux?

Where How Are Passwords Stored Linux



Numele de utilizator cu o parolă corespunzătoare pentru un anumit cont este cerința principală prin care un utilizator poate accesa un sistem Linux. Parola tuturor conturilor utilizatorului este salvată într-un fișier sau într-o bază de date, astfel încât un utilizator să poată fi verificat în timpul încercării de conectare la sistem. Fiecare utilizator nu are suficiente competențe și expertiză pentru a localiza acest fișier pe sistemul său. Cu toate acestea, dacă aveți acces la baza de date sau la un fișier care păstrează toate parolele utilizatorului de conectare, atunci puteți accesa cu ușurință sistemul Linux. Când un utilizator introduce un nume de utilizator și o parolă pe Linux pentru autentificare, verifică parola introdusă în raport cu o intrare în diferite fișiere din directorul „/ etc”.

Fișierele / etc / passwd păstrează toate informațiile importante care sunt necesare pentru autentificarea utilizatorului. Pentru a o explica în cuvinte mai simple, fișierul / etc / passwd stochează detaliile contului utilizatorului. Acest fișier este un fișier text simplu care conține o listă completă a tuturor utilizatorilor din sistemul dvs. Linux. Are informații despre numele de utilizator, parola, UID (id utilizator), GID (id grup), shell și directorul de acasă. Acest fișier ar trebui să aibă permisiuni de citire, deoarece multe utilitare din linia de comandă sunt utilizate pentru a asocia ID-urile de utilizator cu numele de utilizator. Dar, ar trebui să aibă permisiuni de acces la scriere limitate numai pentru conturile de utilizator superutilizator sau root.







Acest articol va arăta cum și unde puteți stoca parolele contului utilizatorului de sistem pe distribuția Linux. Am implementat toate demonstrațiile pe sistemul Ubuntu 20.04. Cu toate acestea, puteți găsi fișierul / etc / passwd pe orice distribuție Linux.



Cerințe prealabile

Ar trebui să aveți privilegii de root pentru a rula comenzi administrative.



Înțelegere de bază despre fișierul / etc / passwd

Fișierul / etc / passwd conține informații despre contul de utilizator al sistemului dvs. Toate câmpurile stocate sunt separate de semnul colon:
Când rulați următoarea comandă, veți vedea fiecare intrare de fișier al fișierului / etc / passwd:





$pisică /etc./passwd

Comanda de mai sus va lista toți utilizatorii sistemului Linux.
Următorul tip de format va fi afișat pe ecranul terminalului:

Detalii despre câmpurile / etc / passwd Format
Din imaginea de mai sus:

Nume de utilizator: Câmpul unu reprezintă numele utilizatorului. Lungimea câmpului de nume de utilizator este definită între 1-32 de caractere. Aceasta este utilizată atunci când un utilizator se conectează la sistem. În exemplul de mai sus, „khuzdar” este numele de utilizator.
Parola: În exemplul de mai sus, caracterul x arată că parola este stocată în formă criptată în fișierul / etc / shadow.
ID utilizator (UID): ID-ul de utilizator trebuie să fie atribuit separat fiecărui utilizator. UID zero este atribuit utilizatorului root, iar ID-urile de utilizator de la 1-99 sunt atribuite conturilor predefinite sau standard. Următoarele UID-uri din 100-999 sunt atribuite conturilor sau grupurilor administrative ale sistemului. În captura de ecran de mai sus, ID-ul utilizatorului este 1001.
ID grup (GID): Următorul câmp reprezintă ID-ul grupului. GID este stocat în fișierul / etc / group. Pe baza exemplului de mai sus, utilizatorul aparține ID-ului grupului 1001.
Informații despre ID-ul utilizatorului: Următorul câmp este destinat comentariilor. În acest câmp, puteți adăuga câteva informații suplimentare despre utilizatorul specificat, cum ar fi numele complet al utilizatorului, numărul de telefon etc. Cu toate acestea, în exemplul de mai sus, niciun număr de telefon nu este furnizat de utilizator.
Director de acasă: Acest câmp arată locația directorului principal care este atribuit utilizatorului curent. Dacă directorul specificat nu există, atunci acesta va afișa /. Imaginea de mai sus arată locația utilizatorului evidențiat în directorul home, care este home / kbuzdar.
Comandă // shell: Calea absolută implicită a unui shell sau comandă este / bin / bash. Acest lucru este cunoscut sub numele de coajă. De exemplu, sysadmin folosind shell-ul nologin. Se comportă ca un shell de înlocuire pentru conturile de utilizator ale sistemului. Dacă shell-ul este situat pe calea către / sbin / nologin și utilizatorul dorește să se conecteze direct la sistemul Linux, shell-ul / sbin / nologin va închide sau dezactiva conexiunea.



Căutați utilizatorul în fișierul / etc / passwd

Puteți căuta un anumit utilizator cu fișierul / etc / passwd, folosind comanda grep. De exemplu, dorim să căutăm numele de utilizator „kbuzdar” din fișierul / etc / passwd, folosind următoarea sintaxă, apoi putem căuta cu ușurință un utilizator specificat, economisindu-ne timpul:

$prinderenume de utilizator/etc./passwd

Sintaxa de mai sus se va schimba în următoarea formă:

$prinderescârțâit/etc./passwd


Sau

$prindere -în '^ kbuzdar' /etc./passwd

Afișați permisiunile pentru fișierul / etc / passwd

După cum am menționat mai sus, toți ceilalți utilizatori, cu excepția root, ar trebui să poată citi permisiunea în fișierul / etc / passwd și că proprietarul trebuie să fie superutilizator sau root.
Tastați următoarele pentru a verifica permisiunile de citire din fișier:

$eu sunt -la /etc./passwd

Următorul exemplu de ieșire va fi afișat pe terminal:

Citirea fișierului / etc / passwd

Puteți citi fișierul / etc / passwd de pe sistemul dvs. Linux utilizând următorul script bash sau rulați direct cele scrise mai jos în timp ce comenzile de buclă de pe terminal.
Creați un fișier text și lipiți următorul cod în el:

#! / bin / bash
# total șapte câmpuri din / etc / passwd stocate ca $ f1, f2 ..., $ f7

in timp ce IFS=:citit -rf1 f2 f3 f4 f5 f6 f7
do
aruncat 'Utilizator$ f1utilizare$ f7shell și stochează fișiere în$ f6director. '
Terminat < /etc./passwd

Folosind bucla while, va citi toate cele șapte câmpuri și apoi va afișa iterativ conținutul fișierului pe terminal.
Salvați fișierul de mai sus cu numele ‘readfile.sh’.

Acum, rulați fișierul de mai sus utilizând următoarea comandă:

$bashreadfile.sh

Explorează fișierul / etc / shadow

Fișierul / etc / shadow conține toate parolele dvs. criptate care sunt stocate în acest fișier și care pot fi citite numai pentru utilizatorii root.
Să executăm următoarea comandă pentru a afișa conținutul:

$sudo pisică /etc./umbră

Puteți vedea toate parolele în format criptat:

Concluzie

Din articolul de mai sus am văzut toate detaliile contului utilizatorului și parolele stocate în fișierul / etc / passwd în sistemul Linux. Puteți citi acest fișier, dar numai utilizatorii root au permisiunile de scriere. Mai mult, am văzut și toate parolele criptate stocate în fișierul / etc / shadow. De asemenea, puteți explora fișierul / etc / group pentru a obține detalii despre grupul utilizatorului.