Var och hur lagras lösenord på Linux?

Where How Are Passwords Stored Linux



Användarnamnet med motsvarande lösenord för ett specifikt konto är det primära kravet genom vilket en användare kan komma åt ett Linux -system. Alla användares kontolösenord sparas i en fil eller en databas så att en användare kan verifieras under inloggningsförsöket till systemet. Varje användare har inte tillräckligt med kompetens och expertis för att hitta den här filen på sitt system. Men om du får åtkomst till databasen eller en fil som behåller alla inloggningsanvändarens lösenord, kan du enkelt komma åt Linux -systemet. När en användare anger ett användarnamn och lösenord på Linux för inloggning, kontrollerar det det angivna lösenordet mot en post i olika filer i katalogen ‘/etc’.

Filerna /etc /passwd behåller all viktig information som är nödvändig för användarinloggning. För att förklara det med enklare ord lagrar filen /etc /passwd användarens kontouppgifter. Den här filen är en vanlig textfil som innehåller en komplett lista över alla användare på ditt Linux -system. Den har information om användarnamn, lösenord, UID (användar -id), GID (grupp -id), skal och hemkatalog. Den här filen ska ha läsbehörighet eftersom många kommandoradsverktyg används för att mappa användar-ID: n till användarnamnet. Men bör ha begränsade skrivbehörigheter endast för superanvändare eller rotanvändarkonton.







Den här artikeln kommer att visa hur och var du kan lagra systemanvändares kontolösenord på Linux -distribution. Vi har implementerat alla demonstrationer på Ubuntu 20.04 -systemet. Du kan dock hitta /etc /passwd -fil på vilken Linux -distribution som helst.



Förutsättningar

Du bör ha roträttigheter för att köra administrativa kommandon.



Grundläggande förståelse för /etc /passwd -fil

Filen /etc /passwd innehåller informationen om ditt systems användarkonto. Alla lagrade fält är separerade från kolon: tecknet.
När du kör följande kommando ser du varje filpost i /etc /passwd -filen:





$katt /etc/passwd

Kommandot ovan listar alla användare av ditt Linux -system.
Följande typ av format visas på terminalskärmen:

Information om /etc /passwd -fält Format
Från bilden ovan:

Användarnamn: Fält ett representerar användarens namn. Längden på användarnamnfältet definieras mellan 1-32 tecken. Detta används när en användare loggar in i systemet. I exemplet ovan är 'khuzdar' användarnamnet.
Lösenord: I exemplet ovan visar x -tecknet att lösenordet lagras i krypterad form i filen /etc /shadow.
Användar -ID (UID): Användar -ID måste tilldelas varje användare separat. UID-nollan tilldelas rotanvändaren och användar-ID från 1-99 tilldelas fördefinierade eller standardkonton. De ytterligare UID: erna från 100-999 tilldelas systemadministrativa konton eller grupper. I skärmdumpen ovan är användar -ID: t 1001.
Grupp -ID (GID): Nästa fält representerar grupp -ID. GID lagras i /etc /group -filen. Baserat på exemplet ovan tillhör användaren grupp -id 1001.
Information om användar -ID: Följande fält är avsett för kommentarer. I det här fältet kan du lägga till ytterligare information om den angivna användaren, till exempel användarens fullständiga namn, telefonnummer, etc. I exemplet ovan tillhandahålls dock inget telefonnummer av användaren.
Hemkatalog: Detta fält visar platsen för hemkatalogen som har tilldelats den aktuella användaren. Om den angivna katalogen inte finns, kommer den att visa /. Bilden ovan visar platsen för den markerade användaren i hemkatalogen, som är home/kbuzdar.
Kommando // skal: Den absoluta sökvägen för ett skal eller kommando är /bin /bash. Detta är känt som skalet. Till exempel sysadmin som använder nologin -skalet. Det fungerar som ett ersättningsskal för systemanvändarkontona. Om skalet är placerat vid sökvägen till /sbin /nologin och användaren vill logga in direkt till Linux -systemet, stänger /inaktiverar /sbin /nologin -skalet anslutningen.



Sök användare i filen /etc /passwd

Du kan söka efter en specifik användare med /etc /passwd -filen med kommandot grep. Till exempel vill vi söka användarnamnet ‘kbuzdar’ från filen /etc /passwd med följande syntax, då kan vi enkelt söka efter en angiven användare och spara vår tid:

$greppAnvändarnamn/etc/passwd

Ovanstående syntax ändras till följande form:

$grepppipig/etc/passwd


Eller

$grepp -i '^kbuzdar' /etc/passwd

Visa behörigheter för filen /etc /passwd

Som vi nämnde ovan bör alla andra användare, förutom root, kunna läsa behörighet på filen /etc /passwd och att ägaren måste vara superanvändare eller root.
Skriv följande för att kontrollera läsbehörigheterna för filen:

$ls -de /etc/passwd

Följande utdataprov visas på terminalen:

Läser /etc /passwd -fil

Du kan läsa /etc /passwd -filen på ditt Linux -system med hjälp av följande bash -skript eller direkt köra det som skrivs nedan medan loop -kommandon på terminalen.
Skapa en textfil och klistra in följande kod i den:

#!/bin/bash
# totalt sju fält från /etc /passwd lagrade som $ f1, f2 ..., $ f7

medan IFS=:läsa -rf1 f2 f3 f4 f5 f6 f7
do
kastade ut 'Användare$ f1använda sig av$ f7skal och lagrar filer i$ f6katalog. '
Gjort < /etc/passwd

Genom att använda while -slingan kommer den att läsa alla sju fälten och sedan iterativt visa filinnehållet på terminalen.
Spara filen ovan med namnet ‘readfile.sh’.

Kör nu ovanstående fil med följande kommando:

$våldsamt slagreadfile.sh

Utforska /etc /skuggfil

Filen /etc /shadow innehåller alla dina krypterade lösenord som är lagrade i den här filen som bara är läsbara för rotanvändare.
Låt oss köra följande kommando för att visa innehållet:

$sudo katt /etc/skugga

Du kan se allt lösenord i det krypterade formatet:

Slutsats

Vi har sett från ovanstående artikel alla användarens kontodetaljer och lösenord lagrade i /etc /passwd -filen i Linux -systemet. Du kan läsa den här filen, men endast root -användare har skrivbehörigheter. Dessutom har vi också sett alla krypterade lösenord lagrade i filen /etc /shadow. Du kan också utforska /etc /group -filen för att få information om användarens grupp.