Kje in kako so shranjena gesla v Linuxu?

Where How Are Passwords Stored Linux



Uporabniško ime z ustreznim geslom za določen račun je glavna zahteva, po kateri lahko uporabnik dostopa do sistema Linux. Geslo vseh uporabniških računov je shranjeno v datoteki ali zbirki podatkov, tako da je mogoče uporabnika preveriti med poskusom prijave v sistem. Vsak uporabnik nima dovolj znanja in izkušenj za iskanje te datoteke v svojem sistemu. Če pa dostopate do baze podatkov ali datoteke, ki hrani vsa gesla uporabnika za prijavo, lahko preprosto dostopate do sistema Linux. Ko uporabnik vnese uporabniško ime in geslo v Linux za prijavo, preveri vneseno geslo glede na vnos v različnih datotekah imenika '/etc'.

Datoteke /etc /passwd hranijo vse pomembne podatke, potrebne za prijavo uporabnika. Če želite to pojasniti z enostavnejšimi besedami, datoteka /etc /passwd shrani podatke o uporabnikovem računu. Ta datoteka je navadna besedilna datoteka, ki vsebuje celoten seznam vseh uporabnikov v sistemu Linux. Vsebuje podatke o uporabniškem imenu, geslu, UID (ID uporabnika), GID (ID skupine), lupini in domačem imeniku. Ta datoteka bi morala imeti dovoljenja za branje, saj se številni pripomočki ukazne vrstice uporabljajo za preslikavo ID-jev uporabnikov v uporabniško ime. Vendar bi morala imeti omejena dovoljenja za dostop do pisanja samo za račune superuser ali root.







Ta članek bo pokazal, kako in kje lahko shranite gesla sistemskega uporabniškega računa v distribucijo Linuxa. Vse predstavitve smo izvedli v sistemu Ubuntu 20.04. Vendar pa lahko datoteko /etc /passwd najdete v kateri koli distribuciji Linuxa.



Predpogoji

Za izvajanje skrbniških ukazov bi morali imeti root pravice.



Osnovno razumevanje o datoteki /etc /passwd

Datoteka /etc /passwd vsebuje podatke o uporabniškem računu vašega sistema. Vsa shranjena polja so ločena od dvopičja: znak.
Ko zaženete naslednji ukaz, boste videli vsak vnos datoteke /etc /passwd:





$mačka /itd/passwd

Zgornji ukaz bo navedel vse uporabnike vašega sistema Linux.
Na zaslonu terminala bo prikazana naslednja oblika zapisa:

Podrobnosti o poljih /etc /passwd Oblika
Iz zgornje slike:

Uporabniško ime: Prvo polje predstavlja ime uporabnika. Dolžina polja za uporabniško ime je določena med 1–32 znaki. To se uporablja, ko se uporabnik prijavi v sistem. V zgornjem primeru je 'khuzdar' uporabniško ime.
Geslo: V zgornjem primeru znak x kaže, da je geslo shranjeno v šifrirani obliki v datoteki /etc /shadow.
ID uporabnika (UID): ID uporabnika mora biti dodeljen vsakemu uporabniku posebej. Ničelni UID je dodeljen korenskemu uporabniku, ID-ji uporabnikov od 1-99 pa vnaprej določenim ali standardnim računom. Nadaljnji UID-ji od 100 do 999 so dodeljeni sistemskim skrbniškim računom ali skupinam. Na zgornjem posnetku zaslona je ID uporabnika 1001.
ID skupine (GID): Naslednje polje predstavlja ID skupine. GID je shranjen v datoteki /etc /group. Na podlagi zgornjega primera uporabnik pripada skupini ID 1001.
Podatki o uporabniškem ID -ju: Naslednje polje je namenjeno komentarjem. V to polje lahko dodate nekaj dodatnih podatkov o določenem uporabniku, na primer njegovo polno ime, telefonsko številko itd. Vendar pa v zgornjem primeru uporabnik ne navede nobene telefonske številke.
Domači imenik: To polje prikazuje lokacijo domačega imenika, ki je dodeljen trenutnemu uporabniku. Če podani imenik ne obstaja, bo prikazan /. Zgornja slika prikazuje lokacijo označenega uporabnika v domačem imeniku, ki je home/kbuzdar.
Ukaz // lupina: Privzeta absolutna pot lupine ali ukaza je /bin /bash. To je znano kot lupina. Na primer, sysadmin uporablja lupino nologin. Deluje kot nadomestna lupina za sistemske uporabniške račune. Če se lupina nahaja na poti do /sbin /nologin in se uporabnik želi prijaviti neposredno v sistem Linux, bo lupina /sbin /nologin zaprla ali onemogočila povezavo.



Poiščite uporabnika v datoteki /etc /passwd

Z ukazom grep lahko iščete določenega uporabnika z datoteko /etc /passwd. Na primer, želimo iskati po uporabniškem imenu 'kbuzdar' iz datoteke /etc /passwd z naslednjo sintakso, nato pa lahko preprosto iščemo določenega uporabnika in prihranimo čas:

$oprijemuporabniško ime/itd/passwd

Zgornja skladnja se bo spremenila v naslednjo obliko:

$oprijemškripajoče/itd/passwd


Or

$oprijem -v '^kbuzdar' /itd/passwd

Prikaz dovoljenj za datoteko /etc /passwd

Kot smo že omenili, bi morali imeti vsi drugi uporabniki, razen root, dovoljenje za branje v datoteki /etc /passwd, lastnik pa mora biti superkorisnik ali root.
Če želite preveriti dovoljenja za branje v datoteki, vnesite naslednje:

$ls - /itd/passwd

Na terminalu bo prikazan naslednji izhodni vzorec:

Branje datoteke /etc /passwd

Datoteko /etc /passwd v sistemu Linux lahko preberete z naslednjim bash skriptom ali neposredno zaženete spodaj napisano, medtem ko ukaze zanke na terminalu.
Ustvarite besedilno datoteko in vanjo prilepite naslednjo kodo:

#!/bin/bash
# skupaj sedem polj iz /etc /passwd, shranjenih kot $ f1, f2 ..., $ f7

medtem IFS=:prebrati -rf1 f2 f3 f4 f5 f6 f7
naredi
vrgel ven 'Uporabnik$ f1uporabaf7 dolarjevshell in shranjuje datoteke v$ f6imenik. '
Končano < /itd/passwd

Z zanko while bo prebral vseh sedem polj in nato na terminalu iterativno prikazal vsebino datoteke.
Zgornjo datoteko shranite z imenom 'readfile.sh'.

Zdaj zaženite zgornjo datoteko z naslednjim ukazom:

$bashreadfile.sh

Raziščite datoteko /etc /shadow

Datoteka /etc /shadow vsebuje vsa vaša šifrirana gesla, shranjena v tej datoteki, ki so berljiva samo za korenske uporabnike.
Za prikaz vsebine zaženimo naslednji ukaz:

$sudo mačka /itd/senco

Geslo si lahko ogledate v šifrirani obliki:

Zaključek

Iz zgornjega članka smo videli vse podatke o uporabnikovem računu in gesla, shranjena v datoteki /etc /passwd v sistemu Linux. To datoteko lahko preberete, vendar imajo dovoljenja za pisanje samo uporabniki root. Poleg tega smo videli tudi vsa šifrirana gesla, shranjena v datoteki /etc /shadow. Raziščete lahko tudi datoteko /etc /group, če želite izvedeti podrobnosti o skupini uporabnikov.