Přístupová práva v Linuxu

Z Milan Kerslager
Verze z 10. 11. 2009, 08:31, kterou vytvořil Milan.Kerslager (diskuse | příspěvky) (Založení článku)
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Přejít na: navigace, hledání

Přístupová práva v Linuxu jsou klasická jednoduchá unixová oprávnění, která se aplikují na soubory a adresáře v tradičním souborovém systému UFS. Oprávnění jsou nastavována přímo a při jejich vyhodnocování se nepracuje s mechanismy dědění oprávnění z nadřízených adresářů (se specifickou výjimkou práva vstupu do adresáře). I přes jejich jednoduchost lze obvykle pomocí jednoduchých doplňujících možností dosáhnout požadovaného stavu. Přesto se v současné době často používají rozšířená oprávnění podle normy POSIX (viz ACL v Linuxu), která poskytují flexibilnější možnosti nastavení.

Uživatelé a skupiny

Ve víceuživatelských unixových systémech je nutné od sebe jednotlivé uživatele oddělit a chránit jejich data a běžící procesy. Proto jsou v systému definováni uživatelé a skupiny. Při vyhodnocování oprávnění se používají číselné identifikátory UID (číslo uživatele) a GID (číslo skupiny), která se při výpisu převádějí na přihlašovací jména a názvy skupin.

Uživatelé

Každý uživatel unixového systému má svůj učet, který zahrnuje přihlašovací jméno, heslo a domácí adresář. Z historických důvodů jsou často uživatelská jména omezena na délku osmi znaků, avšak současné systémy (např. Linux) obvykle umožňují používat i delší přihlašovací jména, což může způsobovat drobné obtíže (například zkrácení na osm znaků ve výpisu příkazu last nebo nemožnost přihlášení pomocí řádkového programu FTP obsaženého přímo v MS Windows).

Uživatelské účty jsou definovány v jednoduché databázi v podobě textového souboru /etc/passwd, kde je na každém řádku uveden jeden účet. Jednotlivé položky každého účtu jsou odděleny dvojtečkou. Struktura záznamu je pevně dána takto:

prihlasovaci.jmeno:heslo (je-li uvedeno):UID:GID:Plné Jméno:/domaci/adresar:/implicitni/shell
Přihlašovací jméno
Přihlašovací jméno může obsahovat malá písmena ASCII tabulky a některé speciální znaky (obvykle je povolena pomlčka a tečka). Velká písmena by se neměla používat, protože způsobují potíže při doručování elektronické pošty, kde v adrese nezáleží na velikosti písmen. Délka je v konzervativním případě omezena na osm znaků, avšak v moderních systémech může být delší (typicky ve tvaru jmeno.prijmeni).
Heslo
Heslo bývalo v souboru uloženo dříve, dnes je na této pozici obvykle písmeno x, protože heslo je uschováno v souboru /etc/shadow (kvůli ochraně proti útoku hrubou silou na použitou jednosměrnou šifru).
UID
UID je číslo uživatele, které používá pro rozlišení uživatelů operační systém. Číslo 0 (nula) je vyhrazeno pro správce systému (root), pro kterého se oprávnění nekontrolují. Ostatní čísla jsou běžní uživatelé, kteří jsou si z pohledu systému rovni, přičemž čísla do 100 (resp. 500) jsou vyhrazena pro systémové účty (typicky různí démoni) a čísla nad 500 jsou určena pro běžné uživatele.
GID
GID je číslo primární skupiny uživatele. Uživatel musí být vždy členem alespoň jedné skupiny. Systémy, které vycházejí z řady System V zakládají pro každého uživatele stejnojmennou skupinu, jíž jsou jediným členem. Tento způsob nutí správce, aby založil vlastní skupinu, která by sdružovala (vybrané) uživatele (např. v linuxových systémech Fedora, Red Hat Enterprise Linux, CentOS). V systémech vycházejících z větve BSD jsou všichni nově založení uživatelé implicitně členy skupiny users (např. v linuxových distribucích Debian, Ubuntu). Jedno z uvedených chování lze obvykle v systému nastavit.
Plné jméno
Plné jméno je obvykle jméno a příjmení uživatele. Někdy se za čárky uvádí ještě kancelář, telefon do kanceláře a telefon domů. Plné jméno využívají některé programy (např. klient elektronické pošty, který ho implicitně používá pro jméno odesílatele). V souboru není uvedeno kódování, takže je nutné, aby případná písmena s diakritikou byla uvedena v kódování, které implicitně používá celý systém (dnes typicky UTF-8), případně se smířit s tím, že bude někdy špatně interpretováno (nutno vyzkoušet). Uživatel si může své plné uživatelské jméno měnit příkazem chfn.
Domácí adresář
Domácí adresář slouží pro uložení konfiguračních souborů (typicky začínají tečkou a jsou proto skryté a pro uložení uživatelských dat. Typicky jsou domácí adresáře umístěny v /home/prihlasovaci.jmeno, ale není to nezbytně nutné. Definici domácího adresáře používá například shell, který je schopen cestu doplnit při expanzi znaku tilda (~). Běžné programy využívají spíše proměnnou prostředí HOME, která je podle této položky nastavena při přihlášení uživatele (např. při ukládání uživatelských souborů).
Implicitní shell
Implicitní shell je interpret příkazů, který je spuštěn při přihlášení uživatele (nebo při spuštění emulace terminálu v grafickém prostředí), což je typicky /bin/bash. Uživatel si může změnit implicitní shell pomocí příkazu chsh, avšak může vybírat pouze z těch, které jsou uvedeny v souboru /etc/shells. Stejně tak systém při přihlášení nespustí shell, který v tomto souboru není uveden, což je bezpečnostní opatření. Shell může být též nějaký jiný program, který zajistí komunikaci s uživatelem (např. menu). Systémovým účtům se obvykle dávají jako shell programy, které nedělají nic, aby se na ně nemohl někdo přihlásit (např. /sbin/nologin, méně vhodně /bin/false apod.).

Příklad části souboru /etc/passwd (tři tečky naznačují vynechané řádky):

root:x:0:0:Admin - Opteron:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
...
rene.huzva:x:10727:10727:René Hužva:/home/rene.huzva:/bin/bash

Tři trojice

Tradiční unixová oprávnění jsou rozdělena do tří trojic (někdy se označují jako svatá trojice), i když ve skutečnosti jsou vlastně tyto trojice čtyři, protože se před ně předsazuje ještě trojice speciálních oprávnění (tzv. sticky, SUID a SGID bit), ale ty jsou předmětem jiného článku.

Každý soubor a adresář má oprávnění pro:

  • vlastníka
  • skupinu
  • ostatní uživatele