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íkazVýznam
getfaclZistenie nastavených ACL pravidiel
setfaclNastavenie 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

WordPress SEO fine-tune by Meta SEO Pack from Poradnik Webmastera