Kapitola 7: Správa místních uživatelů a skupin

Co je to uživatel?

Uživatelský účet slouží k zajištění bezpečnostních hranic mezi různými osobami a programy, které mohou spouštět příkazy.

Interně systém rozlišuje uživatelské účty podle jedinečného identifikačního čísla, které jim bylo přiděleno, ID uživatele neboli UID.

Pokud uživatelský účet používají lidé, je mu zpravidla přiděleno tajné heslo, kterým uživatel při přihlašování prokazuje, že je skutečně oprávněným uživatelem. Uživatelské účty jsou základem zabezpečení systému.

  • Každý proces (spuštěný program) v systému běží jako určitý uživatel.

  • Každý soubor má konkrétního uživatele jako svého vlastníka. Vlastnictví souborů pomáhá systému vynutit řízení přístupu uživatelů k souborům.

Existují tři hlavní typy uživatelských účtů: superuživatel, systémoví uživatelé a běžní uživatelé.

  • Účet superuživatele slouží ke správě systému. Jméno superuživatele je root a tento účet má UID 0. Superuživatel má plný přístup k systému.

  • Systém má účty systémových uživatelů, které používají procesy zajišťující podpůrné služby. Tyto procesy neboli démoni obvykle nemusí běžet jako superuživatel. Jsou jim přiděleny neprivilegované účty, které jim umožňují zabezpečit své soubory a další prostředky před sebou navzájem i před běžnými uživateli systému. Uživatelé se interaktivně nepřihlašují pomocí systémového uživatelského účtu.

  • Většina uživatelů má běžné uživatelské účty, které používají pro svou každodenní práci. Stejně jako systémoví uživatelé mají i běžní uživatelé omezený přístup do systému.

Pomocí příkazu id můžete zobrazit informace o aktuálně přihlášeném uživateli.

[user01@host ~]$ id
uid=1000(user01) gid=1000(user01) groups=1000(user01)
context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

Chcete-li zobrazit základní informace o jiném uživateli, předejte příkazu id jako argument jeho uživatelské jméno.

[user01@host]$ id user02
uid=1002(user02) gid=1001(user02) groups=1001(user02)
context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

Chcete-li zobrazit vlastníka souboru, použijte příkaz ls -l. Chcete-li zobrazit vlastníka adresáře, použijte příkaz ls -ld. V následujícím výstupu je ve třetím sloupci uvedeno uživatelské jméno.

[user01@host ~]$ ls -l file1
-rw-rw-r--. 1 user01 user01 0 Feb 5 11:10 file1
[user01@host]$ ls -ld dir1
drwxrwxr-x. 2 user01 user01 6 Feb 5 11:10 dir1

Chcete-li zobrazit informace o procesu, použijte příkaz ps. Ve výchozím nastavení se zobrazí pouze procesy v aktuálním shellu. Chcete-li zobrazit všechny procesy s terminálem, přidejte možnost a. Chcete-li zobrazit uživatele přidruženého k procesu, přidejte volbu u. V následujícím výstupu je v prvním sloupci uvedeno uživatelské jméno.

[user01@host]$ ps -au
USER   PID  %CPU %MEM VSZ     RSS   TTY    STAT START  TIME  COMMAND
root   777  0.0  0.0  225752  1496  tty1   Ss+  11:03  0:00  /sbin/agetty -o - p -- \u --noclear tty1 linux
root   780  0.0  0.1  225392  2064  ttyS0  Ss+  11:03  0:00  /sbin/agetty -o - p -- \u --keep-baud 115200,38400,9600
user01 1207 0.0  0.2  234044  5104  pts/0  Ss   11:09  0:00  -bash
user01 1319 0.0  0.2  266904  3876  pts/0  R+   11:33  0:00  ps au

Výstup předchozího příkazu zobrazuje uživatele podle jména, ale interně operační systém ke sledování uživatelů používá identifikátory UID. Mapování uživatelských jmen na UID je definováno v databázích informací o účtech.

Ve výchozím nastavení používají systémy k ukládání informací o místních uživatelích soubor /etc/passwd. Každý řádek souboru /etc/passwd obsahuje informace o jednom uživateli. Je rozdělen do sedmi polí oddělených dvojtečkou.

user01: x: 1000: 1000: User One: /home/user01: /bin/bash
  • Uživatelské jméno tohoto uživatele (user01).

  • Heslo uživatele zde bývá uloženo v zašifrovaném formátu. To bylo přesunuto do souboru /etc/shadow, kterému se budeme věnovat později. Toto pole by mělo mít vždy hodnotu x.

  • Číslo UID pro tento uživatelský účet (1000).

  • Číslo GID pro primární skupinu tohoto uživatelského účtu (1000).

  • Následuje jméno tohoto uživatele(User One).

  • Domovský adresář tohoto uživatele (/home/user01). Je to počáteční pracovní adresář při spuštění shellu a obsahuje data a konfigurační nastavení uživatele.

  • Výchozí program shellu pro tohoto uživatele, který se spouští při přihlášení (/bin/bash). U běžného uživatele je to obvykle program, který poskytuje uživateli výzvu příkazového řádku. Systémový uživatel obvykle nem povoleno interaktivní přihlašování. Obsahuje proto hodnotu /sbin/nologin.

Co je to skupina?

Skupina je soubor uživatelů, kteří potřebují sdílet přístup k souborům a dalším systémovým prostředkům. Skupiny lze použít k udělení přístupu k souborům sadě uživatelů namísto jediného uživatele.

Stejně jako uživatelé mají skupiny názvy skupin, které usnadňují práci s nimi. Vnitřně systém rozlišuje skupiny podle jedinečného identifikačního čísla, které jim bylo přiděleno - ID skupiny neboli GID.

Mapování názvů skupin na GID je definováno v databázích informací o účtech skupin. Ve výchozím nastavení používají systémy k ukládání informací o místních skupinách soubor /etc/group.

Každý řádek souboru /etc/group obsahuje informace o jedné skupině. Každá položka skupiny je rozdělena do čtyř polí oddělených dvojtečkou.

group01: x: 10000: user01,user02,user03
  • Název skupiny pro tuto skupinu (group01).

  • Zastaralé pole pro heslo skupiny. Toto pole by mělo mít vždy hodnotu x.

  • Číslo GID pro tuto skupinu (10000).

  • Seznam uživatelů, kteří jsou členy této skupiny jako doplňkové skupiny (user01, user02, user03). Primární (nebo výchozí) a doplňkové skupiny jsou popsány dále v této části.

Primární skupiny a doplňkové skupiny

Každý uživatel má přesně jednu primární skupinu.

U místních uživatelů je to skupina uvedená podle čísla GID v souboru /etc/passwd.

Obvykle se při vytvoření nového běžného uživatele vytvoří nová skupina se stejným názvem jako tento uživatel. Tato skupina se použije jako primární skupina pro nového uživatele a tento uživatel je jediným členem této soukromé skupiny User.

Uživatelé mohou mít také doplňkové skupiny. Členství v doplňkových skupinách je určeno souborem /etc/group. Uživatelé mají přístup k souborům na základě toho, zda jsou součástí určité skupiny.

Příkaz id lze také použít ke zjištění příslušnosti uživatele ke skupinám.

[user03@host ~]$ id
uid=1003(user03) gid=1003(user03) groups=1003(user03),10(wheel),10000(group01)
context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

Last updated