Kde a jak jsou hesla uložena v Linuxu?

Where How Are Passwords Stored Linux

Uživatelské jméno s odpovídajícím heslem pro konkrétní účet je primárním požadavkem, pomocí kterého může uživatel přistupovat k systému Linux. Heslo všech účtů uživatelů je uloženo v souboru nebo databázi, aby bylo možné uživatele ověřit při pokusu o přihlášení do systému. Každý uživatel nemá dostatek dovedností a znalostí k nalezení tohoto souboru ve svém systému. Pokud však získáte přístup k databázi nebo souboru, který uchovává všechna hesla přihlašovacího uživatele, pak můžete snadno přistupovat k systému Linux. Když uživatel zadá v Linuxu uživatelské jméno a heslo pro přihlášení, zkontroluje zadané heslo proti záznamu v různých souborech adresáře ‘/etc’.

Soubory /etc /passwd uchovávají všechny důležité informace, které jsou nezbytné pro přihlášení uživatele. Aby to bylo vysvětleno jednoduššími slovy, soubor /etc /passwd ukládá podrobnosti o účtu uživatele. Tento soubor je prostý textový soubor, který obsahuje úplný seznam všech uživatelů ve vašem systému Linux. Obsahuje informace o uživatelském jménu, hesle, UID (ID uživatele), GID (ID skupiny), shellu a domovském adresáři. Tento soubor by měl mít oprávnění ke čtení, protože mnoho nástrojů příkazového řádku se používá k mapování ID uživatelů na uživatelské jméno. Mělo by však mít omezená oprávnění pro přístup pouze pro uživatele superuživatele nebo root.



Tento článek předvede, jak a kde lze ukládat hesla systémových účtů uživatelů v distribuci Linuxu. Všechny ukázky jsme implementovali do systému Ubuntu 20.04. Soubor /etc /passwd však můžete najít v jakékoli distribuci Linuxu.



Předpoklady

Ke spouštění příkazů pro správu byste měli mít oprávnění root.



Základní informace o souboru /etc /passwd

Soubor /etc /passwd obsahuje informace o uživatelském účtu vašeho systému. Všechna uložená pole jsou oddělena od dvojtečky: znak.
Když spustíte následující příkaz, uvidíte každou položku souboru /etc /passwd:

$kočka /atd/passwd

Výše uvedený příkaz zobrazí seznam všech uživatelů vašeho systému Linux.
Na obrazovce terminálu se zobrazí následující typ formátu:

Podrobnosti o polích /etc /passwd Formát
Z výše uvedeného obrázku:

Uživatelské jméno: První pole představuje uživatelské jméno. Délka pole uživatelského jména je definována mezi 1-32 znaky. Používá se, když se uživatel přihlásí do systému. Ve výše uvedeném příkladu je uživatelské jméno „khuzdar“.
Heslo: Ve výše uvedeném příkladu znak x ukazuje, že heslo je uloženo v šifrované podobě v souboru /etc /shadow.
ID uživatele (UID): ID uživatele musí být každému uživateli přiděleno samostatně. Nulová hodnota UID je přiřazena uživateli root a ID uživatelů od 1 do 99 jsou přiřazena předdefinovaným nebo standardním účtům. Další UID od 100 do 999 jsou přiřazeny k systémovým účtům nebo skupinám pro správu. Na výše uvedeném snímku obrazovky je ID uživatele 1001.
ID skupiny (GID): Další pole představuje ID skupiny. GID je uložen v souboru /etc /group. Na základě výše uvedeného příkladu uživatel patří do skupiny ID 1001.
Informace o ID uživatele: Následující pole je určeno pro komentáře. Do tohoto pole můžete přidat další informace o zadaném uživateli, jako je úplné jméno uživatele, telefonní číslo atd. Ve výše uvedeném příkladu však uživatel neposkytuje žádné telefonní číslo.
Domovský adresář: Toto pole zobrazuje umístění domovského adresáře, který je přiřazen aktuálnímu uživateli. Pokud zadaný adresář neexistuje, zobrazí se /. Výše uvedený obrázek ukazuje umístění zvýrazněného uživatele v domovském adresáři, který je home/kbuzdar.
Příkaz // shell: Výchozí absolutní cesta shellu nebo příkazu je /bin /bash. Toto je známé jako shell. Například sysadmin pomocí nologin shellu. Chová se jako náhradní shell pro uživatelské účty systému. Pokud se shell nachází na cestě k /sbin /nologin a uživatel se chce přihlásit přímo do systému Linux, shell /sbin /nologin zavře nebo deaktivuje připojení.



Vyhledat uživatele v souboru /etc /passwd

Konkrétního uživatele můžete vyhledat pomocí souboru /etc /passwd pomocí příkazu grep. Chceme například prohledat uživatelské jméno „kbuzdar“ ze souboru /etc /passwd pomocí následující syntaxe, pak můžeme snadno vyhledat zadaného uživatele a šetřit tak čas:

$rukojeťuživatelské jméno/atd/passwd

Výše uvedená syntaxe se změní na následující tvar:

$rukojeťpískot/atd/passwd


Nebo

$rukojeť -v '^kbuzdar' /atd/passwd

Zobrazit oprávnění v souboru /etc /passwd

Jak jsme zmínili výše, všichni ostatní uživatelé, kromě uživatele root, by měli mít oprávnění ke čtení v souboru /etc /passwd a že vlastník musí být superuživatel nebo root.
Chcete -li zkontrolovat oprávnění ke čtení v souboru, zadejte následující:

$ls -ten /atd/passwd

Na terminálu se zobrazí následující ukázka výstupu:

Čtení souboru /etc /passwd

Soubor /etc /passwd můžete ve svém systému Linux přečíst pomocí následujícího skriptu bash nebo přímo spustit příkazy smyčky na terminálu.
Vytvořte textový soubor a vložte do něj následující kód:

#!/bin/bash
# celkem sedm polí z /etc /passwd uloženo jako $ f1, f2 ..., $ f7

zatímco IFS=:číst -rf1 f2 f3 f4 f5 f6 f7
dělat
vyhodil 'Uživatel$ f1použití$ f7shell a ukládá soubory do$ f6adresář.'
Hotovo < /atd/passwd

Pomocí cyklu while načte všech sedm polí a poté iterativně zobrazí obsah souboru na terminálu.
Uložte výše uvedený soubor pod názvem „readfile.sh“.

Nyní spusťte výše uvedený soubor pomocí následujícího příkazu:

$bashreadfile.sh

Prozkoumejte soubor /etc /shadow

Soubor /etc /shadow obsahuje všechna vaše zašifrovaná hesla uložená v tomto souboru, která jsou čitelná pouze pro uživatele root.
Pro zobrazení obsahu spusťme následující příkaz:

$sudo kočka /atd/stín

Všechna hesla můžete vidět v šifrovaném formátu:

Závěr

Z výše uvedeného článku jsme viděli všechny podrobnosti o uživatelském účtu a hesla uložená v souboru /etc /passwd v systému Linux. Tento soubor můžete číst, ale oprávnění k zápisu mají pouze uživatelé root. Kromě toho jsme také viděli všechna šifrovaná hesla uložená v souboru /etc /shadow. Můžete také prozkoumat soubor /etc /group a získat podrobnosti o skupině uživatelů.