Veiligheid

Waar en hoe worden wachtwoorden opgeslagen op Linux?

Waar en hoe worden wachtwoorden opgeslagen op 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 het 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 met een volledige lijst van alle gebruikers op uw Linux-systeem Linux. Het heeft de informatie over gebruikersnaam, wachtwoord, UID (gebruikers-ID), GID (groeps-ID), shell en homedirectory. Dit bestand moet leesrechten hebben, aangezien er veel hulpprogramma's voor de opdrachtregel worden gebruikt om de gebruikers-ID's toe te wijzen aan de gebruikersnaam. 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 geïmplementeerd op Ubuntu 20 implemented.04 systeem. 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 /etc/passwd-bestand 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:

$ cat /etc/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 staat voor 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): Gebruikers-ID moet afzonderlijk worden toegewezen aan elke gebruiker. 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 staat voor de groeps-ID. De GID wordt opgeslagen in /etc/group bestand. 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 van de gebruiker, telefoonnummer, enz. In het bovenstaande voorbeeld wordt echter geen telefoonnummer verstrekt door de gebruiker.
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 schaal. Sysadmin gebruikt bijvoorbeeld de nologin-shell. 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, zal de /sbin/nologin-shell de verbinding sluiten of uitschakelen.

Zoek gebruiker in /etc/passwd bestand

U kunt naar een specifieke gebruiker zoeken met /etc/passwd-bestand, met behulp van 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:

$ grep gebruikersnaam /etc/passwd

De bovenstaande syntaxis verandert in de volgende vorm:

$ grep kbuzdar /etc/passwd


Of

$ grep -w '^kbuzdar' /etc/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 -l /etc/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=: lees -r f1 f2 f3 f4 f5 f6 f7
Doen
echo "Gebruiker $f1 gebruikt $f7 shell en slaat bestanden op in $f6 directory."
gedaan < /etc/passwd

Met behulp van de while-lus leest het alle zeven velden en geeft het vervolgens iteratief de bestandsinhoud weer op de terminal.
Sla het bovenstaande bestand op met de naam 'readfile'.sh'.

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

$ bash leesbestand.sh

Verken /etc/shadow bestand

Het bestand /etc/shadow bevat al je gecodeerde 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 /etc/schaduw

U kunt al het wachtwoord in het gecodeerde 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 gebruikersgroep te krijgen.

Beste gameconsole-emulators voor Linux
Dit artikel bevat een lijst van populaire emulatiesoftware voor gameconsoles die beschikbaar is voor Linux. Emulatie is een softwarecompatibiliteitsla...
Beste Linux-distributies voor gaming in 2021
Het Linux-besturingssysteem heeft een lange weg afgelegd van zijn oorspronkelijke, eenvoudige, servergebaseerde uiterlijk. Dit besturingssysteem is de...
Hoe u uw gamesessie op Linux kunt vastleggen en streamen
In het verleden werd het spelen van games alleen als een hobby beschouwd, maar met de tijd zag de game-industrie een enorme groei in termen van techno...