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.