12. diel - Linuxový terminál (Bash) - Správa skupín a ACL
V minulej lekcii, Linuxový terminál (Bash) - Správa užívateľov , sme sa naučili pracovať s najdôležitejšími príkazmi na vytváranie a následnú správu užívateľských účtov.
V dnešnej lekcii sa naučíme vytvárať a spravovať skupiny v Linuxe. Následne si ukážeme, ako efektívne prideľovať špecifické oprávnenia jednotlivým užívateľom.
Skupiny v Linuxe
V Linuxe existujú dva typy skupín, ktorými môže byť užívateľ členom:- Primárna skupina - Každý užívateľ musí byť členom práve jednej primárnej skupiny. Tá je potom automaticky priradená ku všetkým súborom a adresárom, ktoré užívateľ vytvorí. Názov skupiny je zvyčajne zhodný s menom používateľa.
- Sekundárna skupina - Užívateľ môže byť členom až 32 sekundárnych skupín. Tie sa využívajú na pridelenie vybraných oprávnení množine užívateľov.
Rovnako ako zoznam užívateľov, tak aj zoznam skupín je v Linuxe
zapisovaný do súboru. Operačný systém zapisuje všetky skupiny do súboru
group
, ktorý nájdeme v adresári /etc
. Poďme súbor
otvoriť a pozrieť sa, aké máme v systéme skupiny:
less /etc/group
Štruktúra súboru by nám mala byť povedomá. Na každom riadku nájdeme
práve jednu skupinu a každý riadok sa skladá z niekoľkých informácií
oddelených dvojbodkou (:
). Ich význam je nasledujúci:
root | x | 0 |
Meno skupiny | Heslo skupiny | ID skupiny (GID) |
Pokiaľ by sme chceli zistiť, v ktorých skupinách sme členmi, zadáme do terminálu príkaz:
groups
Po zadaní príkazu uvidíme výpis podobný tomuto:
itnetwork adm dialout cdrom floppy sudo audio dip video plugdev netdev
Na prvej pozícii je uvedená primárna skupina, ktorej
názov je zhodný s menom užívateľa. Ďalej nasledujú sekundárne skupiny
prideľujúce ďalšie oprávnenia užívateľovi itnetwork
.
Ak zadáme meno užívateľa ako prvý parameter príkazu
groups
, vypíšeme zoznam skupín daného užívateľa.
Skupina sudo
Vo výpise príkazugroups
si môžeme všimnúť, že jednou zo
sekundárnych skupín je sudo
. Členstvo v tejto skupine nám
umožňuje používať rovnomenný príkaz sudo
a teda využívať
oprávnenie užívateľa root
.
V Ubuntu je náš účet, vytvorený pri inštalácii, automaticky pridaný do tejto skupiny. V iných distribúciách musíme užívateľov do skupiny najskôr pridať:
sudo usermod -a -G sudo jmeno_uzivatele
Vytvorenie skupiny
Začneme tým, že si príkazomgroupadd
vytvoríme novú skupinu
redactors
. Do terminálu napíšeme:
sudo groupadd redactors
Skupina redactors
nám bude združovať všetky
spoločné oprávnenia pre užívateľov, ktorí sú redaktori.
Za určitých okolností môžeme vyžadovať vytvorenie novej skupiny so
špecifickým GID
. Pre vytvorenie skupiny redactors
s
GID 2022
, zadáme do terminálu:
sudo groupadd -g 2022 redactors
Ak bude skupina s týmto GID
v systéme
existovať, príkaz vypíše chybové hlásenie a skupinu
nevytvorí.
Nastavenie skupiny
Každú skupinu môžeme ďalej spravovať, napríklad zmeniť jej názov, zmeniť jejGID
či nastaviť heslo. Na vykonanie týchto akcií
slúži príkaz groupmod
a niekoľko prepínačov.
Zmena názvu
Nový názoveditors
pre skupinu redactors
nastavíme
prostredníctvom prepínača -n
:
groupmod -n editors redactors
Zmena GID
ZmenuGID
nevykonávame príliš často, ale môže nastať
situácia, ktorá bude túto zmenu vyžadovať. Nové GID 5050
nastavíme s využitím prepínača -g
:
groupmod -g 5050 editors
Nastavenie hesla
Heslo pre skupinu nie je bezpečné a odporúča sa nepoužívať. Pre ukážku si však skúsme nastaviť heslo28f36e8d6284f49
pre skupinu editors
:
groupmod -p 28f36e8d6284f49 editors
Odstránenie skupiny
Na odstránenie skupiny máme k dispozícii príkazgroupdel
:
sudo groupdel editors
ACL v Linuxe
Ak budeme spravovať firemný server, zistíme, že prideľovať práva pomocou skupín je veľmi ťažkopádne. Vo firme obvykle máme desiatky či stovky zamestnancov a každý z nich potrebuje prístup iba k vybraným súborom. Tento problém rieši ACL (Access Control List), ktorý umožňuje rozšírenú správu práv jedného používateľa.Príkazom adduser
si vytvoríme dvoch nových užívateľov
david
a thomas
. Následne sa prepneme na užívateľa
david
:
su david
Skúsime si vypísať obsah domovského adresára užívateľa
thomas
:
ls /home/thomas
Namiesto obsahu daného adresára však dostaneme
chybové hlásenie:
ls cannot open directory '/home/thomas': Permission denied
.
Keby sme pridelenie práv vyriešili vytvorením spoločnej skupiny, hrozilo by riziko, že neskôr zabudneme význam skupiny a umožníme tak prístup aj inej osobe.
Zobrazenie prístupu
Príkazomgetfacl
zobrazíme názov súboru, jeho vlastníka,
skupinu a aktuálne nastavenie ACL. Skúsme si zobraziť ACL
pre domovský adresár užívateľa thomas
:
getfacl /home/thomas
Výstup príkazu vypíše oprávnenie adresára
/home/thomas
:
# file: thomas # owner: thomas # group: thomas user::rwx group::r-x other::---
Nastavenie prístupu
Na nastavenie prístupu jednotlivým užívateľom alebo skupinám slúžisetfacl
. Teraz pridáme užívateľovi david
práva na
spustenie a čítanie adresára /home/thomas
:
sudo setfacl -m u:david:r-x /home/thomas
Za prepínačom -m
nasleduje trojica parametrov oddelených
dvojbodkou (:
). Na prvej pozícii zadáme typ záznamu:
u
- user (užívateľ),g
- skupina (skupina),o
- other (ostatné),- a
m
- maska (maska).
Nasleduje názov skupiny alebo meno používateľa, ktorému chceme práva prideliť. Na tretiu pozíciu už zadáme iba konkrétne oprávnenie. Posledným parametrom príkazu je súbor či adresár, ktorému ACL nastavujeme.
Teraz príkazom getfacl
overíme, že vo výpise pribudol riadok
user:david:rx
:
# file: thomas # owner: thomas # group: thomas user::rwx user:david:r-x group::r-x other::---
Maska ACL
Po pridelení práv užívateľovidavid
si vo výpise príkazu
getfacl
môžeme všimnúť nový riadok mask. Maska nám v
tomto prípade určuje maximálne možné práva. Pokiaľ
užívateľovi david
nastavíme plné práva a následne zmeníme
masku:
sudo setfacl -m m::r-x /home/thomas
Užívateľ david
síce bude mať práva na zápis, ale nebude
mu to nič platné.
Zamedzenie prístupu
Oprávnenie danému užívateľovi odoberieme príkazomsetfacl
s
využitím prepínača -x
:
sudo setfacl -x u:david /home/thomas
To je pre dnešnú lekciu všetko.
V budúcej lekcii sa naučíme čo je to archivácia, kompresia a komprimácia. Ukážeme si ako archivovať súbory programom tar a ako zmenšiť ich veľkosť nástrojmi gzip, bzip2 a zips.