Uživatelské účty v Linuxu

Uživatelské účty

Organizace

Základním rysem každého unixového systému je podpora více uživatelů s možností jemného nastavení práv. Každý, kdo do systému přistupuje, musí mít vlastní unikátní uživatelské jméno a libovolné heslo. Dále by měl mít vlastní domovský adresář, umístěný v adresáři /home. Veškeré informace o uživateli a jeho nastaveních jsou zapsány v souboru /etc/passwd. Práva na editaci tohoto souboru má z bezpečnostních důvodů pouze uživatel root, avšak právo na čtení musí mít kdokoliv, neboť informace z tohoto souboru využívá mnoho programů, což předpokládá čitelnost souboru pro všechny uživatele.

Právě z tohoto důvodu už soubor /etc/passwd neobsahuje hesla. Ta jsou v šifrované podobě umístěna v souboru /etc/shadow, k němuž může přistupovat pouze administrátor (root). Oddělení hesla od ostatních informací o uživateli se nazývá stínění.

Samotné jádro OS Linux považuje uživatele za pouhé číslo tzv. UID (User ID), od něj se pak odvozují samotné uživatelské účty, které se dále dělí na 3 typy:

Konfigurační soubory

Základní databází uživatelů je v systému textový soubor /etc/passwd (angl. password file), v němž jsou uvedeny platná uživatelská jména a další k nim přidružené informace. Každému uživateli odpovídá v souboru jeden záznam - řádek, který je rozdělen na sedm polí, jejichž oddělovačem je dvojtečka. Význam jednotlivých položek je následující:

  1. Uživatelské jméno
  2. Heslo - bylo nahrazeno stínovým heslem uloženým v /etc/shadow
  3. UID (Identifikační číslo uživatele) To je v systému unikátní - není tedy možné, aby stejné UID měli dva různí uživatelé
  4. GID (Identifikační číslo skupiny) specifikuje primární skupinu, do níž uživatel náleží (každý musí být alespoň v jedné kvůli právům)
  5. Nepovinná (skutečné jméno uživatele, popis účtu, atd.)
  6. Domovský adresář
  7. Příkazový interpret (nebo program), který se spustí po přihlášení

Každý uživatel systému má k souboru /etc/passwd přístup (může jej číst). Může tedy například zjistit přihlašovací jména ostatních uživatelů. (To ale neznamená, že jsou všem přístupná i hesla!)
Zobrazení souboru passwd provedeme příkazem:

cat /etc/passwd

V souboru passwd jsou místo hesel jen znaky "x", protože samotná hesla jsou uložena v bezpečnějším souboru "shadow", tedy stínovém souboru hesel. Tento soubor může číst pouze superuživatel!
Zobrazení informací v něm provedeme příkazem:

su root
cat /etc/shadow
  1. Identifikační jméno
  2. Zašifrované heslo (u služeb je nahrazeno "*" nebo "!")
  3. Počet dnů od 1.1.1970 do změny hesla
  4. Počet dnů do povolení změny hesla
  5. Počet dnů, po kterých si musí uživatel své heslo změnit
  6. Počet dnů před skončením platnosti hesla - uživatel bude varován
  7. Počet dnů od skončení platnosti hesla do zablokování účtu (nemusí být vyplněno)
  8. Počet dnů od 1.1.1970 do zablokování účtu
  9. Rezervovaný prostor pro budoucí použití.

Jak funguje šifrování hesla a proč nejde jen tak dešifrovat? Je to prosté: Ve chvíli, kdy si uživatel zvolí své přístupové heslo, je pro něj určena také hodnota zvaná salt. Jde o náhodně vygenerované číslo, s jehož pomocí se zakóduje heslo, které si uživatel zvolil. Jak salt, tak i samotné kódované heslo, jsou uloženy v souboru /etc/shadow.
Při přihlašování se nejprve načte hodnota salt a s její pomocí se zakóduje heslo, které uživatel zadal při tomto přihlašování. Pokud výsledný řetězec odpovídá zápisu v /etc/shadow, je uživatel oprávněn ke vstupu do systému. To vysvětluje, proč stejné heslo u více uživatelských účtů může mít v zašifrované formě zcela odlišnou podobu.

Jak už jsme si řekli, uživatelské skupiny slouží k diferenciaci uživatelských pravomocí. Například určíme, že několik uživatelů má přístup na Internet - přiřadíme je tedy do skupiny Internet. Dalším chceme zakázat hraní her - vyřadíme je tedy ze skupiny Games. Všichni uživatelé dané skupiny tedy sdílí přístupová práva, která nastavíme této skupině.
Každý uživatel systému musí náležet alespoň do jedné uživatelské skupiny. Může ale také patřit do více skupin. Tímto způsobem je možné snadno kombinovat práva tak, aby byla na míru ušita konkrétnímu uživateli a jeho potřebám.
Veškeré informace o skupinách, jejich nastavení a členech, jsou uloženy v souboru /etc/group.
Tento soubor obsahuje:

  1. identifikační jméno skupiny
  2. heslo skupiny (většinou se nepoužívá nebo se užívá gshadow)
  3. GID (identifikační číslo skupiny)
  4. seznam členů

1. Příklad:

useradd pokus

Co se udělá v souboru passwd:

Co se udělá v souboru grub:

Domovský adresář:

ls -la /home/pokus

Nastavení hesla:

passwd pokus

Zrušení účtu:

userdel pokus

Tímto příkazem jsou smazány záznamy z konfiguračních souborů, ale soubory, kterých byl tento uživatel vlastník zůstanou!

Zrušení účtu včetně souborů:

userdel -r pokus