Linux je jako každý multiuživatelský systém přiděluje soubory a procesy různým uživatelům s různými právy. Jádro systému pak zajišťuje bezpečnost těchto dat.
Systém rozlišuje několik druhů uživatelů
root — superuser, správce systému. Je to zcela jistě člověk, ačkoli někteří rootové si myslí, že jsou bohové.
fyzický uživatel — člověk, který má účet na stroji. Obvykle má definovaný svůj domácí adresář v adresáři /home, svůj shell, ve kterém se defaultně pouští jeho skripty.
systémový uživatel — tenhle uživatel nikde nežije, je jen obslužným procesem systému a jako takový obvykle nemá definovaný svůj domácí adresář nebo jej nemá v adresáři /home nýbrž v /usr nebo atp. Systémový uživatel obvykle vlastní nějaké procesy a nějaké soubory, ale nepočítá se s tím, že by vlastnil terminál a mohl do něj psát, co chce. Proto také nemívá definovaný shell, ve kterém by mohl pracovat, místo něj má nepřátelsky vypadající /usr/sbin/nologin nebo /bin/false.
Root
Root má přístup ke všem souborům i příkazům v systému.
Člověk, který má ke stroji rootovská práva, si je obvykle také vědom toho, že k normálnímu životu je nepotřebuje a zbytečně nepodléhá pokušení. Pokud se strojem pracuje pouze uživatelsky, pak přesto funguje jako řadový fyzický uživatel, protože si je vědom toho, že chyba řadového uživatele obvykle neohrozí systém, ale chyba roota může snadno vést k velkým potížím. Když potřebuje stroj spravovat administrátorsky, pak do své rootovské role může vejít několika způsoby:
Příkaz su
Příkaz su je zkratkou pro switch user a dokáže změnit aktuálního uživatele za jiného, takto bez parametru rovnou za roota. Pokud máte rootovský přístup (heslo), pak můžete pokračovat v práci jako root. Tento přístup je považován za méně bezpečný, protože bez příkazu exit vám zůstane terminál stále s rootovským přístupem.
Příkaz sudo
Přidáním příkazu sudo před příkaz se přepínáte do rootorské role pouze pro tento jediný příkaz. Zda může uživatel použít příkaz sudo je uvedeno v seznamu sudoers, který je definovaný /etc/sudoers.
Recovery mode + root shell promt
Když se pokazí hodně věcí a váš server nedokáže nastartovat, téměř všechny distribuce vám nabízí možnost při bootu skočit do recovery modu, v něm přejít do rootovského terminálu a spravit, co jste si zavařili.
Soubor /etc/passwd
Tento soubor je obyčejný textový soubor, který vlastní root a v pradávných dobách v něm byla uložená hesla. Ty už tam nicméně nejsou.
Každý uživatel stroje má v /etc/passwd svůj řádek s následujícími informacemi oddělenými dvojtečkou
login — uživatelské jméno
heslo — a to už tu právě není, takže místo něj je x, které naznačuje, že heslo je uložené v souboru /etc/shadow
UID — User ID, unikátní číslo pro každého uživatele. Root má nulu, systémová uživatelé obvykle mají nízká čísla do 500 nebo do 1000. Vyšší čísla jsou pro fyzické uživatele.
GID — Group ID, číslo uživatelovy primární skupiny.
informace u uživateli — může uživatelovo celé jméno, jeho telefonní číslo, číslo kanceláře.
domovský adresář — absolutní cesta k uživatelovu domovskému adresáři
shell — absolutní cesta k uživatelovu shellu, pro fyzického uživatele, pro nás v rámci tohoto kurzu to bude /bin/bash
Opravdu jsou všichni uživatelé v /etc/passwd? Pokud se přihlašujete na počítače v učebně A3/A10 a jste zvídavé povahy, pak zjistíte, že ne. Autentifikace uživatelů v těchto učebnách probíhá pomocí LDAP, domácí adresář mají uživatelé na vzdáleném serveru. Takže výjimky existují.
Soubor /etc/shadow
Hesla z /etc/passwd se přesunula do /etc/shadow. Je také textový, ale na jeho obsah už se nepodíváte. Hesla jsou zde uložena v šifrované formě, k nim navíc je informace, kdy bylo heslo naposledy změněno, interval, jak často se mají měnit, kdy je potřeba poslat varování o změně hesla, kdy po expiraci hesla bude účet odstaven a kdy bude účet odstaven absolutně.
Skupiny
Každý uživatel náleží do nějaké skupiny. Navíc může náležet do více skupin, jedna skupina je jako primární. Když uživatel vytvoří soubor, pak se stává jeho vlastníkem a vlastnickou skupinou je jeho primární skupina.
Soubor /etc/group
Podobně jako /etc/passwd existuje obyčejný textový soubor /etc/group, který vlastní root a ten obsahuje informace o groupách.
Každá skupina (grupa) stroje má v /etc/group svůj řádek s následujícími informacemi oddělenými dvojtečkou
jméno skupiny
heslo — obvykle není používáno a místo něj zde potkáte x.
GID — Group ID, unikátní číslo skupiny. Tohle číslo potkáte u každého uživatele v /etc/passwd jako číslo uživatelovy primární skupiny.
seznam uživatelů — seznam uživatelů ve skupině, jejich jména jsou oddělena čárkou. Pouze čárkou, žádné mezery
První skupinou je opět skupina root s GID nula. Trochu matoucí může být, že uživatel root není členem skupiny root, nicméně root je už ze své podstaty členem všech skupin.
Je-li uživatel členem více skupin, pak může měnit vlastnickou skupinu svého souboru na libovolnou jinou, které je členem. Slouží k tomu příkaz chgrp nová_skupina soubor. Podobně jde změnit i vlastníka soubor (chown), nicméně tato operace je vyhrazena pouze rootovi.