Access Control List
Autor
2014/2015 Kadri Roasto AK21
2010 Arvi Alamaa
Sissejuhatus
Antud dokumendis kirjeldatakse Access Control Listi (ACL) ehk pääsupiiramisloendi kasutamist Linux operatsioonisüsteemis. Tegemist on laiendatud failiõigussüsteemiga. Traditsiooniliselt määratakse Linux süsteemi failisüsteemides kolme tüüpi õiguseid (read- lugemine, write- kirjutamine, execute- käivitamine) omanikule, grupile ja teistele kasutajatele. ACL võimaldab juurdepääsuõiguseid määrata paindlikumalt. Lisaks omanikule, grupile ja teistele saab ACL-is määrata õigused nimeliselt kasutajale või grupile. ACL käsklusi on võimalik kasutada nii juurkasutaja kui tavakasutaja õigustes. Alljärgneva dokumentatsiooni kasutamiseks on vajalik omada algteadmiseid UNIXi-laadsetest operatsioonisüsteemidest ja käsureast. Näidetes kasutatud ACL versioon on acl 2.2.52 -1.
Pääsupiiramisloendi kasutamine Linuxi failisüsteemides
ACL on kasutatav mitmes Linuxi failisüsteemis nt: EXT2, EXT3, EXT4, XFS, Btfrs, jne.
Peamiselt kasutatakse kahte käsku getfacl ja setfacl koos võtmetega.
Käsu formaat
getfacl [võti] fail ...
setfacl [võti] { -m|-M|-x|-X ... } fail ...
Võtmete kirjeldusi
Mõlemal käsul on võimalik kasutada järgnevaid võtmeid:
-h | --help | käsu info |
-v | --version | versiooni info |
getfacl võtmeid
-a | --access | kuvab pääsukontrolli nimekirja
|
-c | --omit-header | pääsukontrolli nimekirja kuvamine kommentaarideta (kuvab pääsukontrollinimekirja ilma faili, omaniku ning grupi nimeta) |
-n | --numeric | kuvab kasutajate/gruppide numbrilised ID-d |
-R | --recursive | kuvab ka alamkataloogide ACL õigused |
settfacl võtmeid
-m | --modify=acl | muudab kehtivat faili ACLi |
-M | --modify-file=file | loeb ACLi kirjet failist ning muudab vastavalt loetule |
-x | --remove=acl | eemaldab ACL kirjed faililt |
-b | --remove-all | eemaldab kõik laiendatud õigused |
--set | määrab ACLi failile, asendab kehtivad õigused |
Näited
Näited on teostatud tavakasutaja õigustes. Näidetes on määratud õigused kasutades tähekombinatsioone: rwx; võib kasutada ka numbrilist õiguste määramist.
Näide 1
- faili/kausta õiguste kuvamine
getfacl <faili/kausta_nimi>
- Kuvame kausta nimega test õigused:
getfacl test
- tulemus
# file: test # owner: mari # group: mari user::rwx group::rwx other::r-x
Esimesed kolm rida väljastavad kausta nime, omaniku ning grupi, järgenvad kolm rida näitavad kasutaja, grupi ja teiste õiguseid. See on minimaalne ACL. Hetkel ei ole kuvatud infot, mida ei saaks mõne põhikäsuga.
- lisame kasutajale jaan õiguse vaadata ja muuta kausta test:
setfacl -m u:jaan:rw- test
- tulemus vaadatuna käsuga: getfacl test
# file: test # owner: mari # group: mari user::rwx user:jaan:rw- group::rwx mask::rwx other::r-x
Näeme, et pääsupiiramisloendisse on lisandunud kasutaja jaan õigustega vaadata ja muuta kausta test.
- tulemus vaadatuna käsuga ls -l
drwxrwxr-x+ 2 mari mari 4096 dets 25 14:55 test
Näeme, et kausta test õiguste lõpus on märk "+", see näitab, et kasutusel on ACL.
Näide 2
- lisa kasutajale ja lisa grupile õiguste andmine
setfacl -m u:[kasutaja_nimi]:[õigused],g:[grupi_nimi]:[õigused] [kausta/faili nimi]
- lisame kasutajale toomas ja grupile tudengid õiguse vaadata ja muuta kausta test
setfacl -m u:toomas:rw-,g:tudengid:rw- test
- tulemus vaadatud käsuga: getfacl test
# file: test # owner: mari # group: mari user::rwx user:jaan:rw- user:toomas:rw- group::rwx group:tudengid:rw- mask::rwx other::r-x
Näeme, et nii kasutaja toomas kui grupp tudengid on lisandunud pääsupiiramisloendisse. Ning nad on saanud õigused r ja w kaustale test.
Näide 3
Mida tähendab pääsupiiramisloendis olev mask? Maskiga on võimalik piirata ACLiga loodud kasutaja ja grupi õiguseid (omaniku õiguseid mask ei muuda). Mask määrab maksimaalsed õigused.
- Anname kasutajale jaan ja grupile tudengid nii vaatamise, muutmise kui käivitamsie õigused, kuid maskile määrame ainult vaatamise õigused
setfacl -m u:jaan:rwx,g:marjuline:rwx test
setfacl -m mask::r-- test
- tulemus vaadatuna käsuga getfacl test
# file: test # owner: mari # group: mari user::rwx user:jaan:rwx #effective:r-- user:toomas:rw- #effective:r-- group::rwx #effective:r-- group:tudengid:rwx #effective:r-- mask::r-- other::r-x
Kuigi jaan sai õigused: rwx, on maski tõttu tal ainult õigus:r. effective näitab kehtivaid õiguseid
Näide 4
- ACL õiguste eemaldamine
setfacl -x u:[kasutaja_nimi] [kausta/ faili nimi]
- eemaldame jaani ja toomase ACLiga antud õigused
setfacl -x u:jaan,u:toomas test
- tulemus
# file: test # owner: mari # group: mari user::rwx group::rwx group:tudengid:rwx mask::rwx other::r-x
Näeme, et jaani ja toomast ei ole enam pääsupiiramisloendis,küll aga on alles grupp tudengid
Näide 5
ACL õiguste täielik eemaldamine
setfacl -b [kausta faili nimi]
setfacl -b test
- tulemus
# file: test # owner: mari # group: mari user::rwx group::rwx other::r-x
Näide 6
- määrame kaustale/ failile uued õigused
setfacl --set u::[õigused],g::[õigused],o::[õigused],u:[kasutaja_nimi]:[õigused] [kasuta/ faili_nimi]
- määrame kaustale test uued õigused kasutades --set võtit. Antud võtit kasutades tuleb kindalsti määrata ka omaniku, grupi ning teiste õigused.
setfacl --set u::rwx,g::rw,o::-,u:jaan:r test
- tulemus
# file: test # owner: mari # group: mari user::rwx user:jaan:r-- group::rw- mask::rw- other::---
Näide 7
Kui on vajalik kasutada sarnaseid õiguseid mitmel korral tasub töö lihtsustamiseks luua tekstifail, mis sisaldab ACL õiguseid. Nt võib faili sisu olla selline
user:jaan:rw- user:toomas:rw- group:tudengid:r-- mask::rw- other::---
- Failis kirjeldatud õiguste kasutamine
setfacl -M [fail_kus_on_õigustekirjeldus] [fail_millele_määran_õigused]
- määran failis minu_acl kirjeldatud õigused failidele test1, test2, test3
setfacl -M minu_acl test*
- tulemus getfacl test1
# file: test1 # owner: mari # group: mari user::rw- user:jaan:rw- user:toomas:rw- group::rw- group:tudengid:r-- mask::rw- other::---
mv ja cp
- mv käsklus säilitab ACLiga määratud õigused alati kui see on võimalik, kui võimalus puudub, siis kuvatakse hoiatus
- cp säilitab ACL õigused, kui seda kasutatakse koos võtmega -p või -a
Kokkuvõte
ACL võimaldab paindlikumalt juurdepääsuõiguseid määrata ning lubab seda teha ka tavakasutajal.
Kasutatud kirjandus
- http://linux.die.net/man/1/getfacl
- http://linux.die.net/man/1/setfacl
- http://linux.die.net/man/5/acl
- http://www.vanemery.com/Linux/ACL/linux-acl.html
- users.suse.com/~agruen/acl/chapter/fs_acl-en.pdf
Access Control Lists in Linux (Administration Guide)