ACL

Tietoa kuinka käyttää ACLiä askilla.

Yleisesti

Wikipedia määrittelee acl:lt pääsyn hallinta listaksi. Tämän sivun tapauksessa kyse on tiedostojärjestelmän (ext3/4) oikeuslistasta.

Perinteisesti meillä on säännöt omistajalle, ryhmälle ja muille. Esim:

-rwxr-x--- tteekkari toimarit  10K  esimerkki.txt

Eli tiedostoa esimerkki.txt:

Entä jos tämä tiedosto on päivitettävissä webistä, jolloin kirjoittaja on www-data joka kuuluu www-data ryhmään?

Mitä ACL:t tarjoaa?

Ratkaisun ongelmaan: User1 haluaa omistaa filen X. Sitä saa muokata user2 ja jäsenet ryhmissä group1 ja group2. Muut eivät saa muokata tiedostoa.

Halutaan siis pystyä hienosäätämään oikeuksia tarkemmin.

Ongelman mukainen esimerkki

$ ls -l X

-rw-rw----+ 1 user1 users 1K <date> X

$ getfacl X

# file: X
# owner: user1
# group: users
user::rw-
user:user2:rw-
group::---
group:group1:rw-
group:group2:rw-
mask::rw-
other::---

Tulosteesta nähdään, että ongelmaan löytyi ratkaisu.

Oikeuksien luku, getfacl

Komento getfacl kertoo acl oikeudet tiedostolle. Komento ls -l ei acl:ä näytä. Tosin se kertoo + merkillä, että tiedostolla on jotain acl määrittelyjä (ks. esimerkki).

  1. Tulosteen alussa #-merkeillä on eroteltu tiedoston perus tiedot.

     # file: <tiedoston nimi>
     # owner: <tiedoston omistaja>
     # group: <tiedoston ryhmä>
  2. Omistajan (ks. edellinen) ja nimettyjen käyttäjien oikeudet.
     user::rw-
     user:user2:rw-
  3. Omistaja ryhmän (ks. kohta 1.) ja nimettyjen ryhmien oikeudet.
     group::---
     group:group1:rw-
     group:group2:rw-
  4. Oikeus maski. Kaikki nimetyt käyttäjät ja ryhmät ovat rajoitettu tämän maskin perusteella.
     mask::rw-

    mask-kenttä tulee normaalista ryhmän oikeus kentästä eli sitä muokataan chmod komennolla.

  5. Muoden käyttäjien oikeudet.
     other::---

maskin vaikutus

Kenttä mask rajoittaa nimettyjen käyttäjien ja kaikkien ryhmien oikeuksia. Täten voidaan listata monta käyttäjää joilla voi olla luku ja kirjoitus oikeuksia, mutta hetkellisesti kaikkien kirjoitusoikeus voidaan poistaa. Ei kuitenkaan haluta unohtaa kenellä oli kirjoitusoikeus. getfacl näyttää maskin vaikutuksen rivin lopussa #effective:--- kohtana.

user::rw-
user:user2:rw-    #effective:r--
group::---
group:group1:rw-  #effective:r--
group:group2:rw-  #effective:r--
mask::r--
other::---

default acl

Kansioille voi lisätä default acl:n, jonka jokainen luotu tiedosto perii. Komento getfacl näyttää tämän tulosteen lopussa aloittaen rivin default:.

 default:user::rw-
 default:user:user2:rw-
 default:group::---
 default:group:group1:rw-
 default:group:group2:rw-
 default:mask::rw-
 default:other::---

Manuaalista lisää

Lisätietoja getfacl].

Oikeuksien asettaminen, setfacl

Oikeuksia voidaan asettaa tiedostoille ja kansioille komennolle setfacl. Perus idea on sama kuin komennolla chmod, muutamin lisäyksin. Aina muokattaessa ja lisätessäsi acl käytä optiota -m, poistaessa -x.

Oikeuksien lisääminen ja muokkaaminen

HUOM! muista -n optio, jottei maskia päivitetä.

  1. Käyttäjän määritys:
    • Omistaja (sama kuin chmod u=rwx <file>):

     $ setfacl -n -m u::rwx <file>
    • Nimetty käyttäjä:
     $ setfacl -n -m u:user2:rw <file>
  2. Ryhmän määritys:
    • Omistajaryhmä:
     $ setfacl -n -m g::rw <file>
    • Nimettyryhmä:
     $ setfacl -n -m g:group1:rw <file>
  3. Muiden määritys (sama kuin chmod o= <file>):

     $ setfacl -n -m o:- <file>
  4. Maskin määritys (sama kuin chmod g=r <file>):

     $ setfacl -m m:r <file>

    ks. vaikutus]

Oikeuksien poistaminen

Poistaa ryhmän group2 oikeudet:

$ setfacl -n -x g:group2 <file>

HUOM! muista -n optio, jottei maskia päivitetä.

maski

Normaalisti ilman -n optiota ja m: määritystä komenta päivittää maskin niin ettei se rajota mitään. Et normaalisti halua tätä.

HUOM: Muista optio -n tai anna maski:

$ setfacl -n -m u:user2:rw<file>

tai

$ setfacl -m u:user2:rw,m:r <file>

Jos haluat nollata maskin kutsu:

$ setfacl --mask <file>

Se laskee maskin samoin kuin ilman -n optiota.

default acl

Kansioille voi määrittää vakio oikeudet, jotka peritään uusille tiedostoille ja kansioille.

Teet tämän lisäämällä d: tai default: option määritelmän eteen. Esim:

$ setfacl -n -m default:g:group2:rw <directory>

Hyödyllisiä tekniikoita

Manuaalista lisää

Lisätietoja setfacl].

Olen järjestelmäylläpitäjä ja haluan ottaa ACL:t käyttöön

1. Asenna acl työkalut (debian pohjaiset):

$ apt-get install acl

2. Muokkaa tiedostoa /etc/fstab ja lisää sinne tiedostojärjestelmän optioihin acl. Esimerkki rivin mukaisesti:

/dev/sda1  /  ext3  acl,defaults  0  1

3. Uudelleen mounttaa levy

$ mount -o remount /

HUOM! Jos et ole root käyttäjä, lisää komentoihin sudo.

aswiki: Ohjeet/FsAcl (last edited 2015-10-05 21:02:26 by localhost)