2009. július 31., péntek

Fájlrendszeri ACL-ekről

Wikipedia link. Az alap "rwx" nem lehet mindig elegendő, ezért ezt kibővíti az Access Control List.
Vajon mivel kezdünk? :)
apt-get install acl
EXT3 esetén az fstab-ban a megfelelő sorban írjuk mount opciónak még az "acl"-t! Ha nem akarjuk újraindítani a gépünket, és például a "/home"-ra állítottuk, akkor:
mount -o,remount /home
-al már is használható lesz. De például XFS esetén nem szükséges az említett plusz mount opciót megadni.
Hozzunk létre egy pár próbafilét:
for j in {0..1}; do echo "hi, ez itt a[z] $j. probafile" > probafile-$j; mkdir valami-$j; cd valami-$j; done; cd ../../
Milyen extra jogok vannak beállítva egy fájlra/vagy mappára?
getfacl probafile-0
# file: probafile-0
# owner: gbor
# group: gbor
user::rw-
group::r--
other::r--
Rekurzívan:
getfacl -R valami-0/
# file: valami-0/
# owner: gbor
# group: gbor
user::rwx
group::r-x
other::r-x

# file: valami-0//probafile-1
# owner: gbor
# group: gbor
user::rw-
group::r--
other::r--

# file: valami-0//valami-1
# owner: gbor
# group: gbor
user::rwx
group::r-x
other::r-x
Az ACL által kezelt jogok ugyan azok, mint a megszokott "rwx", csak ezek kibővítésre kerültek azzal, hogy kinek adhatunk, "rwx" jogosultságokat.
A jogok a következő kulcs szavakhoz vannak rendelve:
  • user: a jogok a felhasználóra vonatkoznak, a felhasználó az állomány tulajdonosa, ha a bejegyzés nem tartalmaz felhasználói nevet, egyébkén pedig a listabejegyzésben olvasható felhasználó.
  • group: a jogok az állomány tulajdonoscsoportjára vonatkoznak, ha a bejegyzés nem tartalmaz csoportnevet, egyébként pedig a bejegyzésben található csoportra.
  • other: a bejegyzésben található jogok azokra a személyekre [folyamatokra] vonatkoznak, amelyekre egyetlen más ACL bejegyzés sem vonatkozik.
  • mask: az ilyen jellegű bejegyzések a megadható legmagasabb jogokat mutatják, amely jog tehát nem szerepel ebben a maszkban, azt nem kaphatja meg senki, hiába szerepel a jog a másik bejegyzésben. Kivételt képez ez alól az állomány tulajdonosa és az other kulcsszóval megadott csoport, akiknek a jogait a maszk nem korlátozza.
Adjunk olvasási és írási jogot egy bizonyos felhasználó számára:
setfacl -m u:gbor2:rw probafile-0
Nézzük meg, mit műveltünk:
getfacl probafile-0
# file: probafile-0
# owner: gbor
# group: gbor
user::rw-
user:gbor2:rw-
group::r--
mask::rw-
other::r--
Tett egy plusz mask sorunk, látszanak a hozzáadott jogok a "gbor2" usernek, és egy "ls -lh" a filére már rak egy "+" jelet ezentúl, jelzésképpen, hogy ott nem csak az alap rwx jogosultságok léteznek:
ls -lh probafile-0 -rw-rw-r--+ 1 gbor gbor 29 2010-01-01 01:01 probafile-0
Most távolítsuk el az imént hozzáadottakat:
setfacl -x user:gbor2 probafile-0
getfacl probafile-0
# file: probafile-0
# owner: gbor
# group: gbor
user::rw-
group::r--
mask::r--
other::r--
Rekurzívan módosítani:
setfacl -R -m u:gbor2:rw valami-0/
Rekurzívan törölni:
setfacl -R -x u:gbor2 valami-0/
Az összes ACL bejegyzés egy paranccsal törölhető:
setfacl -b probafile-0
Ugyan így rekurzívan megint, stb..:
setfacl -R -b valami-0/
Példa: Egy "gbor" nevű felhasználó egy közös munka megkezdésekor egy "gbor2" emberkével szeretne együtt dolgozni, mármint olykor közös fájlokat használni. A felhasználó nevében:
cd /home/gbor/
mkdir kozos
cd kozos
echo "megosztott szoveg" > olvassel.txt
cd ..
"gbor" x jogot ad [ :D:D ] "gbor2"-nek a "/home/gbor"-ra:
setfacl -m user:gbor2:--x $HOME
Most a közös mappa [de másnak ne legyen joga hozzá]:
setfacl -R -m user:gbor2:rwx,other::--- kozos/
De: mivan, ha a "kozos"-ben egy új mappát/fájlt hoz létre valaki? Nem muszáj [ :D ] beállítani újra az ACL-t azon a fájlon, hanem létezik egy "default" kapcsolója a "setfacl"-nek, amivel megadhatunk öröklődést:
setfacl -m d:u:gbor2:rwx,o::--- kozos/
A "user"-t lehet rövidíteni "u"-nek is. "Group"-ot: "g"-nek, "other"-t "o"-nak.
cd kozos
mkdir barmi
getfacl barmi/
# file: barmi/
# owner: gbor
# group: gbor
user::rwx
user:gbor2:rwx
group::r-x
mask::rwx
other::---
default:user::rwx
default:user:gbor2:rwx
default:group::r-x
default:mask::rwx
default:other::---
ui.: Mount options
ui2.: Alap user kezelés

Nincsenek megjegyzések:

Megjegyzés küldése