ACL
Existujú prípady, kedy v linuxe nepostačia štandardné ani nadstavbové práva. Je nutné dať právo zápisu konkrétnemu užívateľovi alebo konkrétnej skupine. Je síce možné riešiť tento probém aj štandardnými právami, ale čo v prípade, že je nutné prideliť takéto práva viac skupinám, ale nevystaviť ich možnosti zápisu všetkým existujúcim užívateľom. Vtedy je nutné siahnuť na ACL – Access Control List. Súborové systémy majú podporu ACL už dlhšiu dobu, ale nebýva štandardne zapnutá. Zapneme ju premontovaním daného disku s podporou, ktorú zapíšeme do /etc/fstab.
root@srv2 ~ $ cat /etc/fstab
#
# /etc/fstab
#
UUID=244dc048-94ec-4dd2-87e1-bfdcc2f9c994 / ext4 defaults,acl 1 1
Doplníme možnosť ACL a premontujeme:
root@srv2 ~ $ mount -o remount /
root@srv2 ~ $ mount | grep acl
/dev/sda2 on / type ext4 (rw,acl)
root@srv2 ~ $
Po zapnutí podpory acl už môžeme vykonávať zmeny. Na nastavenie a zistenie používame v linuxe 2 príkazy:
Príkaz Význam
getfacl Zistenie nastavených ACL pravidiel
setfacl Nastavenie ACL pravidiel
Príkaz getfacl má niekoľko rozšírení, no jeho použitie je možné aj bez nich:
root@srv2 /home/jano/adresar $ getfacl subor
# file: subor
# owner: jano
# group: jano
user::rw-
group::rw-
other::r–
root@srv2 /home/jano/adresar $
Aktuálny súbor nemá nastavený žiadny ACL a preto sú vypísané jeho štandardné atribúty. Zápis jednotlivých práv je po riadkoch. Vo všeobecnosti platí:
užívateľ:meno užívateľa:práva
skupina:meno skupiny:práva
Ak nie je uvedené meno užívateľa alebo skupiny, potom tieto práva platia pre vlastníka a skupinu uvedenú ako owner a group. Pridať práva pre užívateľa môžeme príkazom setfacl.
[jano@srv2 ~]$ setfacl -m user:fero:rw- subor
[jano@srv2 ~]$ getfacl subor
# file: subor
# owner: jano
# group: jano
user::rw-
user:fero:rw-
group::rw-
mask::rw-
other::r–
[jano@srv2 ~]$
Príkaz setfacl nastavuje právo, rozšírenie -m prepočíta tzv. masku a následne povieme komu chceme pridať aké práva.
Je možný aj iný zápis:
[jano@srv2 ~]$ setfacl -m u:jozo:7 subor
[jano@srv2 ~]$ getfacl subor
# file: subor
# owner: jano
# group: jano
user::rw-
user:fero:rw-
user:jozo:rwx
group::rw-
mask::rwx
other::r–
[jano@srv2 ~]$
Odstrániť užívateľa z ACL môžeme zadaním:
[jano@srv2 ~]$ setfacl -x u:jozo subor
[jano@srv2 ~]$ getfacl subor
# file: subor
# owner: jano
# group: jano
user::rw-
user:fero:rw-
group::rw-
mask::rw-
other::r–
[jano@srv2 ~]$
Práva skupiny definujeme:
[jano@srv2 ~]$ setfacl -m g:jozo:4 subor
[jano@srv2 ~]$ setfacl -m u:jozo:0 subor
[jano@srv2 ~]$ getfacl subor
# file: subor
# owner: jano
# group: jano
user::rw-
user:fero:rw-
user:jozo:—
group::rw-
group:jozo:r–
mask::rw-
other::r–
[jano@srv2 ~]$
V tomto príklade sme povolili skupine jozo čítať tento súbor, ale užívateľovi jozo sme prístup odmietli. Systém kontroluje prístup v poradí smerom dole jednotlivých užívateľov. Preto užívateľ jozo bude mat zamietnutý prístup, ale iný užívateľ z jeho skupiny právo čítať bude mať naďalej.
Úplne vymazať ACL zo súboru môžeme príkazom:
[jano@srv2 ~]$ setfacl -b subor
[jano@srv2 ~]$ getfacl subor
# file: subor
# owner: jano
# group: jano
user::rw-
group::rw-
other::r–
[jano@srv2 ~]$
ACL je možné kopírovať z jedného súboru na druhý a to nasledovne:
getfacl subor1 | setfacl –set-file=- subor2