IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Lekce 12 - Linuxový terminál (Bash) - Správa skupin a ACL

V minulé lekci, Linuxový terminál (Bash) - Správa uživatelů, jsme se naučili pracovat s nejdůležitějšími příkazy pro vytváření a následnou správu uživatelských účtů.

V dnešní lekci se naučíme vytvářet a spravovat skupiny v Linuxu. Následně si ukážeme, jak efektivně přidělovat specifická oprávnění jednotlivým uživatelům.

Skupiny v Linuxu

V Linuxu existují dva typy skupin, kterými může být uživatel členem:

  • Primární skupina - Každý uživatel musí být členem právě jedné primární skupiny. Ta je pak automaticky přiřazena ke všem souborům a adresářům, které uživatel vytvoří. Název skupiny je obvykle shodný s jménem uživatele.
  • Sekundární skupina - Uživatel může být členem až 32 sekundárních skupin. Ty se využívají k přidělení vybraných oprávnění množině uživatelů.

Stejně jako seznam uživatelů, tak i seznam skupin je v Linuxu zapisován do souboru. Operační systém zapisuje všechny skupiny do souboru group, který nalezneme v adresáři /etc. Pojďme soubor otevřít a podívat se, jaké máme v systému skupiny:

less /etc/group

Struktura souboru by nám měla být povědomá. Na každém řádku nalezneme právě jednu skupinu a každý řádek se skládá z několika informací oddělených dvojtečkou (:). Jejich význam je následující:

root x 0
Jméno skupiny Heslo skupiny ID skupiny (GID)

Heslo skupiny je v dnešní době považováno za bezpečnostní problém, a tak se doporučuje standardně nepoužívat.

Pokud bychom chtěli zjistit, ve kterých skupinách jsme členy, zadáme do terminálu příkaz:

groups

Po zadání příkazu uvidíme výpis podobný tomuto:

itnetwork adm dialout cdrom floppy sudo audio dip video plugdev netdev

Na první pozici je uvedena primární skupina, jejíž název je shodný s jménem uživatele. Dále následují sekundární skupiny přidělující další oprávnění uživateli itnetwork.

Zadáme-li jméno uživatele jako první parametr příkazu groups, vypíšeme seznam skupin daného uživatele.

Skupina sudo

Ve výpisu příkazu groups si můžeme všimnout, že jednou ze sekundárních skupin je sudo. Členství v této skupině nám umožňuje používat stejnojmenný příkaz sudo a tudíž využívat oprávnění uživatele root.

V Ubuntu je náš účet, vytvořený při instalaci, automaticky přidán do této skupiny. V jiných distribucích musíme uživatele do skupiny nejprve přidat:

sudo usermod -a -G sudo jmeno_uzivatele

Vytvoření skupiny

Začneme tím, že si příkazem groupadd vytvoříme novou skupinu redactors. Do terminálu napíšeme:

sudo groupadd redactors

Skupina redactors nám bude sdružovat všechna společná oprávnění pro uživatele, kteří jsou redaktoři.

Za určitých okolností můžeme vyžadovat vytvoření nové skupiny se specifickým GID. Pro vytvoření skupiny redactors s GID 2022, zadáme do terminálu:

sudo groupadd -g 2022 redactors

Pokud bude skupina s tímto GID v systému existovat, příkaz vypíše chybové hlášení a skupinu nevytvoří.

Nastavení skupiny

Každou skupinu můžeme dále spravovat, například změnit její název, změnit její GID či nastavit heslo. K provedení těchto akcí slouží příkaz groupmod a několik přepínačů.

Změna názvu

Nový název editors pro skupinu redactors nastavíme prostřednictvím přepínače -n:

groupmod -n editors redactors

Změna GID

Změnu GID neprovádíme příliš často, ale může nastat situace, která bude tuto změnu vyžadovat. Nové GID 5050 nastavíme s využitím přepínače -g:

groupmod -g 5050 editors

Nastavení hesla

Heslo pro skupinu není bezpečné a doporučuje se nepoužívat. Pro ukázku si však zkusme nastavit heslo 28f36e8d6284f49 pro skupinu editors:

groupmod -p 28f36e8d6284f49 editors

Odstranění skupiny

Pro odstranění skupiny máme k dispozici příkaz groupdel:

sudo groupdel editors

ACL v Linuxu

Budeme-li spravovat firemní server, zjistíme, že přidělovat práva pomocí skupin je velmi těžkopádné. Ve firmě obvykle máme desítky či stovky zaměstnanců a každý z nich potřebuje přístup jen k vybraným souborům. Tento problém řeší ACL (Access Control List), který umožňuje rozšířenou správu práv jednoho uživatele.

Příkazem adduser si vytvoříme dva nové uživatele david a thomas. Následně se přepneme na uživatele david:

su david

Zkusíme si vypsat obsah domovského adresáře uživatele thomas:

ls /home/thomas

Namísto obsahu daného adresáře však obdržíme chybové hlášení: ls cannot open directory '/home/thomas': Permission denied.

Kdybychom přidělení práv vyřešili vytvořením společné skupiny, hrozilo by riziko, že později zapomeneme význam skupiny a umožníme tak přístup i jiné osobě.

Zobrazení přístupu

Příkazem getfacl zobrazíme název souboru, jeho vlastníka, skupinu a aktuální nastavení ACL. Zkusme si zobrazit ACL pro domovský adresář uživatele thomas:

getfacl /home/thomas

Výstup příkazu vypíše oprávnění adresáře /home/thomas:

# file: thomas
# owner: thomas
# group: thomas
user::rwx
group::r-x
other::---

Nastavení přístupu

K nastavení přístupu jednotlivým uživatelům nebo skupinám slouží setfacl. Nyní přidáme uživateli david práva k spuštění a čtení adresáře /home/thomas:

sudo setfacl -m u:david:r-x /home/thomas

Za přepínačem -m následuje trojice parametrů oddělených dvojtečkou (:). Na první pozici zadáme typ záznamu:

  • u - user (uživatel),
  • g - group (skupina),
  • o - other (ostatní),
  • a m - mask (maska).

Následuje název skupiny či jméno uživatele, kterému chceme práva přidělit. Na třetí pozici již zadáme pouze konkrétní oprávnění. Posledním parametrem příkazu je soubor či adresář, kterému ACL nastavujeme.

Nyní příkazem getfacl ověříme, že ve výpisu přibyl řádek user:david:r-x:

# file: thomas
# owner: thomas
# group: thomas
user::rwx
user:david:r-x
group::r-x
other::---

Maska ACL

Po přidělení práv uživateli david si ve výpisu příkazu getfacl můžeme všimnout nového řádku mask. Maska nám v tomto případě určuje maximální možná práva. Pokud uživateli david nastavíme plná práva a následně změníme masku:

sudo setfacl -m m::r-x /home/thomas

Uživatel david sice bude mít práva k zápisu, ale nebude mu to nic platné.

Zamezení přístupu

Oprávnění danému uživateli odebereme příkazem setfacl s využitím přepínače -x:

sudo setfacl -x u:david /home/thomas

To je pro dnešní lekci vše.

V příští lekci, Linuxový terminál (Bash) - Archivace a komprese, se naučíme co je to archivace, komprese a komprimace. Ukážeme si jak archivovat soubory programem tar a jak zmenšit jejich velikost nástroji gzip, bzip2 a zip.


 

Předchozí článek
Linuxový terminál (Bash) - Správa uživatelů
Všechny články v sekci
Základy Linuxu
Přeskočit článek
(nedoporučujeme)
Linuxový terminál (Bash) - Archivace a komprese
Článek pro vás napsal Václav Franz
Avatar
Uživatelské hodnocení:
53 hlasů
Aktivity