Waar en hoe worden wachtwoorden opgeslagen op Linux?

Where How Are Passwords Stored Linux



De gebruikersnaam met een bijbehorend wachtwoord voor een specifiek account is de primaire vereiste waarmee een gebruiker toegang kan krijgen tot een Linux-systeem. Het wachtwoord van alle gebruikersaccounts wordt opgeslagen in een bestand of een database, zodat een gebruiker kan worden geverifieerd tijdens de inlogpoging in het systeem. Elke gebruiker heeft niet genoeg vaardigheden en expertise om dit bestand op zijn systeem te vinden. Als u echter toegang krijgt tot de database of een bestand dat alle wachtwoorden van de inloggebruiker bevat, kunt u eenvoudig toegang krijgen tot het Linux-systeem. Wanneer een gebruiker een gebruikersnaam en wachtwoord invoert op Linux om in te loggen, vergelijkt hij het ingevoerde wachtwoord met een invoer in verschillende bestanden van de '/etc'-directory.

De /etc/passwd-bestanden bevatten alle belangrijke informatie die nodig is voor gebruikersaanmelding. Om het in eenvoudiger bewoordingen uit te leggen, slaat het /etc/passwd-bestand de accountgegevens van de gebruiker op. Dit bestand is een tekstbestand zonder opmaak dat een volledige lijst van alle gebruikers op uw Linux-systeem bevat. Het heeft de informatie over gebruikersnaam, wachtwoord, UID (gebruikers-ID), GID (groeps-ID), shell en homedirectory. Dit bestand moet leesrechten hebben, aangezien er veel opdrachtregelprogramma's worden gebruikt om de gebruikers-ID's aan de gebruikersnaam toe te wijzen. Maar zou beperkte schrijftoegangsrechten moeten hebben, alleen voor superuser- of root-gebruikersaccounts.







Dit artikel laat zien hoe en waar u de accountwachtwoorden van systeemgebruikers kunt opslaan op Linux-distributie. We hebben alle demonstraties op het Ubuntu 20.04-systeem geïmplementeerd. U kunt het /etc/passwd-bestand echter op elke Linux-distributie vinden.



Vereisten

U moet rootrechten hebben om beheerdersopdrachten uit te voeren.



Basisbegrip over /etc/passwd-bestand

Het bestand /etc/passwd bevat de informatie over de gebruikersaccount van uw systeem. Alle opgeslagen velden zijn gescheiden van de dubbele punt : teken.
Wanneer u de volgende opdracht uitvoert, ziet u elke bestandsinvoer van het /etc/passwd-bestand:





$kat /enzovoort/passwd

De bovenstaande opdracht geeft een lijst van alle gebruikers van uw Linux-systeem.
Het volgende type formaat wordt weergegeven op uw terminalscherm:

Details over /etc/passwd velden Formaat
Van de bovenstaande afbeelding:

Gebruikersnaam: Veld één vertegenwoordigt de naam van de gebruiker. De lengte van het gebruikersnaamveld is gedefinieerd tussen 1-32 tekens. Dit wordt gebruikt wanneer een gebruiker inlogt op het systeem. In het bovenstaande voorbeeld is 'khuzdar' de gebruikersnaam.
Wachtwoord: In het bovenstaande voorbeeld geeft het x-teken aan dat het wachtwoord in gecodeerde vorm is opgeslagen in het /etc/shadow-bestand.
Gebruikers-ID (UID): De gebruikers-ID moet aan elke gebruiker afzonderlijk worden toegewezen. De UID-nul wordt toegewezen aan de rootgebruiker en gebruikers-ID's van 1-99 worden toegewezen aan vooraf gedefinieerde of standaardaccounts. De verdere UID's van 100-999 worden toegewezen aan systeembeheerdersaccounts of -groepen. In de bovenstaande schermafbeelding is de gebruikers-ID 1001.
Groeps-ID (GID): Het volgende veld vertegenwoordigt de groeps-ID. De GID wordt opgeslagen in het bestand /etc/group. Op basis van het bovenstaande voorbeeld behoort de gebruiker tot de groeps-ID 1001.
Informatie over gebruikers-ID: Het volgende veld is bedoeld voor opmerkingen. In dit veld kunt u aanvullende informatie over de opgegeven gebruiker toevoegen, zoals de volledige naam, het telefoonnummer, enz. van de gebruiker. In het bovenstaande voorbeeld wordt echter geen telefoonnummer door de gebruiker verstrekt.
Thuismap: Dit veld toont de locatie van de homedirectory die is toegewezen aan de huidige gebruiker. Als de opgegeven map niet bestaat, wordt / weergegeven. De bovenstaande afbeelding toont de locatie van de gemarkeerde gebruiker in de homedirectory, namelijk home/kbuzdar.
Commando//shell: Het standaard absolute pad van een shell of commando is /bin/bash. Dit staat bekend als de schil. Bijvoorbeeld sysadmin die de nologin-shell gebruikt. Het gedraagt ​​zich als de vervangende shell voor de systeemgebruikersaccounts. Als de shell zich op het pad naar /sbin/nologin bevindt en de gebruiker wil direct inloggen op het Linux-systeem, dan zal de /sbin/nologin-shell de verbinding sluiten of uitschakelen.



Zoek gebruiker in /etc/passwd bestand

U kunt met het bestand /etc/passwd naar een specifieke gebruiker zoeken met het grep-commando. We willen bijvoorbeeld de gebruikersnaam 'kbuzdar' zoeken in het /etc/passwd-bestand, met behulp van de volgende syntaxis, dan kunnen we eenvoudig een gespecificeerde gebruiker zoeken, waardoor we tijd besparen:

$greepgebruikersnaam/enzovoort/passwd

De bovenstaande syntaxis verandert in de volgende vorm:

$greeppiepend/enzovoort/passwd


Of

$greep -in '^kbuzdar' /enzovoort/passwd

Toon machtigingen op /etc/passwd bestand

Zoals we hierboven vermeldden, zouden alle andere gebruikers, behalve root, toestemming moeten kunnen lezen voor het /etc/passwd-bestand, en dat de eigenaar superuser of root moet zijn.
Typ het volgende om de leesrechten voor het bestand te controleren:

$ls -de /enzovoort/passwd

Het volgende uitvoervoorbeeld wordt weergegeven op de terminal:

/etc/passwd-bestand lezen

Je kunt het /etc/passwd-bestand op je Linux-systeem lezen door het volgende bash-script te gebruiken of direct uitvoeren wat hieronder is geschreven terwijl loop-commando's op de terminal.
Maak een tekstbestand en plak de volgende code erin:

#!/bin/bash
# totaal zeven velden uit /etc/passwd opgeslagen als $f1,f2...,$f7

terwijl IFS=:lezen -Rf1 f2 f3 f4 f5 f6 f7
doen
gooide uit 'Gebruiker$ f1gebruik maken van$f7shell en slaat bestanden op in$f6adresboek.'
gedaan < /enzovoort/passwd

Met behulp van de while-lus leest het alle zeven velden en wordt vervolgens iteratief de bestandsinhoud op de terminal weergegeven.
Sla het bovenstaande bestand op onder de naam ‘readfile.sh’.

Voer nu het bovenstaande bestand uit met behulp van de volgende opdracht:

$bashreadfile.sh

Verken /etc/schaduwbestand

Het bestand /etc/shadow bevat al uw versleutelde wachtwoorden die in dit bestand zijn opgeslagen en die alleen leesbaar zijn voor rootgebruikers.
Laten we de volgende opdracht uitvoeren om de inhoud weer te geven:

$sudo kat /enzovoort/schaduw

U kunt al het wachtwoord in gecodeerd formaat zien:

Conclusie

We hebben uit het bovenstaande artikel gezien dat alle accountgegevens en wachtwoorden van de gebruiker zijn opgeslagen in het /etc/passwd-bestand in het Linux-systeem. U kunt dit bestand lezen, maar alleen rootgebruikers hebben de schrijfrechten. Bovendien hebben we ook alle versleutelde wachtwoorden gezien die zijn opgeslagen in het /etc/shadow-bestand. U kunt ook het /etc/group-bestand verkennen om details over de groep van de gebruiker te krijgen.