Sedláme Linux, 5. díl: uživatelé a skupiny

Dnes se budeme věnovat povídání o uživatelích a skupinách. Základních stavebních prvcích uživatelské stránky systému GNU/Linux. Na řadu přijde i jejich vytváření a likvidace. Pevně doufám, že vás dnešní díl zaujme.

Uživatelé

Už jsme si pověděli, že z hlediska systému existují tři skupiny uživatelů - administrátor, běžný uživatel a některé služby. Zaměříme se na běžné uživatele.

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. To ovšem není podmínkou.

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 (pokud při instalaci nějakým způsobem nevypneme jejich stínění). 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í.

Příklad obsahu /etc/passwd:

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/bin/bash
daemon:x:2:2:Daemon:/sbin:/bin/bash
lp:x:4:7:Printing daemon:/var/spool/lpd:/bin/bash
mail:x:8:12:Mailer daemon:/var/spool/clientmqueue:/bin/false
games:x:12:100:Games account:/var/games:/bin/bash
at:x:25:25:Batch jobs daemon:/var/spool/atjobs:/bin/bash
postgres:x:26:2:Postgres database admin:/var/lib/pgsql:/bin/bash
squid:x:31:65534:WWW proxy squid:/var/squid:/bin/bash
irc:x:39:65534:IRC daemon:/usr/lib/ircd:/bin/bash
firewall:x:41:31:Firewall account:/var/lib/firewall:/bin/false
nobody:x:65534:65533:nobody:/var/lib/nobody:/bin/bash
kmartin:x:500:100:Martin Kysela:/home/kmartin:/bin/bash
ftp:x:40:49:FTP account:/srv/ftp:/bin/bash
man:x:13:62:Manual pages viewer:/var/cache/man:/bin/bash
...

Když se podíváme na obsah souboru /etc/passwd uvidíme postupně:

  • identifikační jméno
  • heslo (v případě stínění "x" nebo "*")
  • UID (uživatelské identifikační číslo). To je v systému unikátní - není tedy možné, aby stejné UID měli dva různí uživatelé, resp. dva různé uživatelské účty
  • GID (identifikační číslo skupiny). Každý uživatel je členem jedné hlavní skupiny a případně dalších volitelných skupin. GID specifikuje primární skupinu, do níž uživatel náleží
  • "user descriptions", tedy "popis uživatele" - nejčastěji skutečné jméno. Standardně je součástí výstupu příkazů finger (viz příští díl)
  • domovský adresář - nejčastěji /home/uživatelské_jméno
  • interpret příkazů (uživatelský "shell", který zajišťuje interakci uživatele se systémem). U mnoha služeb, které nevyžadují přihlašovací interpret, je místo něj nastaveno /bin/false, což zabraňuje přihlášení do systému.

Příklad obsahu /etc/shadow:

root:elC7ZnRb0k.qM:11860:0:10000::::
bin:*:8902:0:10000::::
daemon:*:8902:0:10000::::
lp:*:9473:0:10000::::
mail:*:8902:0:10000::::
news:*:8902:0:10000::::
uucp:*:0:0:10000::::
games:*:0:0:10000::::
man:*:8902:0:10000::::
at:*:8902:0:10000::::
squid:*:8902:0:10000::::
postgres:*:8902:0:10000::::
irc:*:8902:0:10000::::
ftp:*:8902:0:10000::::
firewall:*:8902:0:10000::::
fnet:*:8902:0:10000::::
gdm:*:8902:0:10000::::
postfix:*:8902:0:10000::::
db4web:*:8902:0:10000::::
nobody:*:0:0:10000::::
kmartin:$1$hGuzdzyz$NKIxkPRxqpPVJ2WDz/eDz/:11860:0:99999:7:::
sshd:!:12009:0:99999:7:::
...

V /etc/shadow je to jednodušší :

  • identifikační jméno
  • zašifrované heslo (u služeb je nahrazeno "*" nebo "!")
  • počet dnů od 1. ledna 1970 do poslední změny hesla
  • počet dnů od poslední změny hesla, kdy není dovoleno toto heslo znovu měnit
  • počet dnů, po kterých musí uživatel své heslo změnit
  • počet dnů před skončením platnosti hesla, kdy bude uživatel varován
  • počet dnů od skončení platnosti hesla do zablokování účtu (nemusí být vyplněno)
  • počet dnů od 1. ledna 1970 do zablokování účtu
  • rezervovaný prostor pro budoucí použití (obvykle je prázdný).

Heslo

Jak funguje šifrování hesla a proč nejde jen tak dešifrovat? To je prosté... Ve chvíli, kdy si uživatel zvolí své přístupové heslo, je pro něj určena také hodnota zvaná salt. Jedná se 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.

Skupiny

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. A tak stále dál... 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:

root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:
sys:x:3:
tty:x:5:
disk:x:6:
lp:x:7:
kmem:x:9:
mail:x:12:cyrus
news:x:13:news
uucp:x:14:uucp,fax,root,fnet,kmartin
shadow:x:15:root,gdm
dialout:x:16:root,kmartin
audio:x:17:root,kmartin
at:x:25:at
firewall:x:31:
video:x:33:kmartin
games:x:40:
named:x:44:named
postfix:x:51:postfix
floppy:x:19:
ftp:x:49:
utmp:x:22:
ntadmin:x:71:
sshd:x:65:
ldap:x:70:
mailman:x:67:
postgres:x:26:
snort:x:68:
...

Tento soubor obsahuje:

  • identifikační jméno skupin y
  • heslo skupiny (většinou se nepoužívá)
  • GID (identifikační číslo skupiny)
  • seznam členů.

Přidávání uživatelů do systému

Když chceme, aby na našem systému mohl pracovat i někdo další a měl potřebné "soukromí", můžeme mu zřídit jeho vlastní uživatelský účet. Toto vytvoření se skládá z několika kroků

  • vytvoření záznamu o uživateli v /etc/passwd.
  • nastavení hesla uživatele.
  • volba přihlašovacího příkazového procesoru.
  • vytvoření uživatelského adresáře.

Teď už byste to jistě zvládli sami. Stačí vyeditovat příslušné soubory a je to. Existuje ale i jednodušší způsob - využití příkazu useradd. Jeho syntaxe je následující:

$ useradd [-D] [-g implicitni_skupina] [-b domovsky_adresar] [-s implicitni_shell]

Jak vidíte, je to prosté. Samozřejmě existují i nejrůznější nástroje pro grafický režim. V SuSE Linuxu stačí spustit konfigurační nástroj YaST2, kde zvolíme menu Bezpečnost & uživatelé. Pak vybereme Editovat a založit uživatele, čímž vyvoláme okno se seznamem již existujících uživatelů. V dolní části zvolíme Přidat. Vyplníme příslušné položky a je to.

Klepněte pro větší obrázek Klepněte pro větší obrázek

Odstranění uživatele ze systému

Samozřejmě nemusíme chtít účet pouze vytvořit, ale také zrušit. V tom případě opět můžeme sáhnout po ruční editaci souborů a odmazávání anebo po nástroji userdel:

userdel -r uzivatelske_jmeno

Parametrem -r specifikujeme, že chceme zrušit také domovský adresář uživatele. Někdy to chtít nemusíme, záleží na situaci.

V YaST2 je postup podobný předchozímu, jen zvolíme tlačítko Smazat a vybereme příslušný účet.

Přidání uživatelské skupiny

Můžeme samozřejmě přidávat nejen uživatele, ale i skupiny. V tom případě je asi nejjednodušší právě editace souboru /etc/group. Myslím, že je to nejrychlejší a nejúnosnější řešení. Pokud se vám do toho ale nechce, můžete zkusit nástroj groupadd:

$ groupadd [-g GID] [-r] [-f] nazev_skupiny

Parametr -g slouží k nastavení GID. Toto číslo musí být v systému jedinečné. Standardně se pro skupinu nastavuje nejnižší volná hodnota nad číslem 500 (čísla 0-499 jsou rezervována pro systémové skupiny, které jsou využívány systémovými účty).

Parametr -r použijeme u systémových skupin - nemusíme už používat -g, protože se přidělí GID z intervalu 0-499.

Parametr -f zajistí, že pokud skupina tohoto názvu v systému již existuje, zůstane nezměněna a pokus o její přepsání bude neúspěšný. Nebude ale vypsána chybová hláška.

V SuSE opět sáhneme po nástroji YaST2, kde v menu Bezpečnost & uživatelé vybereme Editovat a založit skupiny uživatelů. Pak klikněte na Přidat a zadejte název skupiny spolu s jejími členy.

Klepněte pro větší obrázek Klepněte pro větší obrázek

Odstranění skupiny uživatelů

I zde vidím jako nejjednodušší prostou editaci souboru /etc/group. Další možností je groupdel:

groupdel skupina

V SuSE se přesuneme opět do našeho oblíbeného menu v YaST2 a v záložce pro editaci skupin stiskneme Smazat.

Tolik tedy k nastavení uživatelských účtů a skupin. Příště se budeme zabývat základními příkazy.

Diskuze (17) Další článek: Windows Server 2003 - za tři měsíce 88 400 webových serverů

Témata článku: Internet, Bezpečnost, Linux, Editace, Shadow, Account, Zašifrovaný disk, Uživatelské jméno, Lin, Mana, Díl, Daemon, Uživatelé, Floppy, Salt, Jedinečný parametr, Root, SSHD, Games

Určitě si přečtěte


Aktuální číslo časopisu Computer

Test 6 odolných telefonů a 22 powerbank

Srovnání technologií QLED a OLED

Měřte své sportovní výkony

Sady pro chytrou domácnost