A FreeBSD 5.0 és későbbi változatai különböző fejlesztéseket hoztak az állományrendszerekben, például a pillanatképek készítése vagy a hozzáférés-vezérlési listák (Access Control List, ACL-ek) támogatása.
A hozzáférés-vezérlési listák a szabványos UNIX(R)-os engedély modellt bővítik ki egy igen kompatibilis (POSIX(R).1e) módon. Használatával a rendszergazdák egy sokkal kifinomultabb biztonsági modellt tudhatnak a kezük ügyében.
Az UFS állományrendszerek ACL támogatását úgy tudjuk engedélyezni, ha a rendszermagot az
options UFS_ACL
paraméterrel fordítjuk le. Amennyiben ezt nem
fordítottuk bele, akkor az ACL
támogatással rendelkező
állományrendszerek csatlakoztatása
során egy figyelmeztetést kapunk. Ez az
opció a GENERIC
rendszermag
része. Az ACL az
állományrendszeren engedélyezett
kiterjesztett tulajdonságokra támaszkodik. Ezeket a
kiterjesztett tulajdonságokat a következő
generációs UNIX(R) állományrendszer, az
UFS2 már alapból ismeri.
UFS1 típusú állományrendszereken sokkal nagyobb a kiterjesztett tulajdonságok kezelésének költsége, mint az UFS2 esetében. Az UFS2 jóval nagyobb teljesítménnyel képes dolgozni a kiterjesztett tulajdonságokkal. Emiatt a hozzáférés-vezérlési listák használatához az UFS2 sokkal inkább ajánlott, mint az UFS1.
Az ACL használatát a
csatlakoztatáskor megadott acls
beállítással engedélyezhetjük,
amelyet érdemes felvennünk az
/etc/fstab
állományba. Ha a
tunefs(8) segédprogrammal az
állományrendszer fejlécében levő
szuperblokk ACL kapcsolóját
átírjuk, akkor ez a beállítás
automatikussá tehető. A szuperblokk használata
több okból is ajánlatos:
A csatlakoztatáskor megadott ACL
beállítás nem változtatható
egy egyszerű újracsatlakoztatással
(mount(8) -u
), csak egy teljes
leválasztással (umount(8)) és egy
friss csatlakoztatással (mount(8)). Ennek
értelmében az ACL-ek a
rendszerindító állományrendszeren
a rendszer indulása után nem
engedélyezhetőek. Ám ez azt is jelenti,
hogy egy már használatban levő
állományrendszer
beállításai sem
változtathatóak meg.
Ha a kapcsolót a szuperblokkban
állítjuk be, akkor az
állományrendszert még akkor is
ACL támogatással
csatlakoztatja a rendszer, ha azt nem adtuk meg az
fstab
állományban vagy az
eszközeink átrendeződtek. Így az
állományrendszereket még
véletlenül sem tudjuk ACL
használata nélkül csatlakoztatni, ami
egyébként így komoly biztonsági
problémákat okozhatna.
Beállíthatjuk úgy is ACL kezelését, hogy egy friss csatlakoztatás nélkül is bekapcsolható legyen, azonban az ilyen állományrendszerek ACL nélküli csatlakoztatását nem ajánljuk senkinek, mivel ha egyszer már engedélyeztük a használatukat, majd kikapcsoljuk ezeket és végül a kiterjesztett tulajdonságok törlése nélkül újra engedélyezzük, akkor nagyon könnyen pórul járhatunk. Ha elkezdtük használni az ACL-eket egy állományrendszeren, akkor ne tiltsuk le ezeket, mert az így keletkező állományvédelem nem feltétlenül lesz kompatibilis a felhasználók által beállítottakkal, és az ACL újraengedélyezése a változásaik előtti korábbi ACL engedélyeket fogja visszaállítani az állományokra, aminek hatása kiszámíthatatlan.
A hozzáférés-vezérlési
listákat használó
állományrendszerek esetén egy
+
(plusz) jellel
ábrázolják a kiterjesztett
engedélyeket. Például:
drwx------ 2 robert robert 512 Dec 27 11:54 private drwxrwx---+ 2 robert robert 512 Dec 23 10:57 könyvtár1 drwxrwx---+ 2 robert robert 512 Dec 22 10:20 könyvtár2 drwxrwx---+ 2 robert robert 512 Dec 27 11:57 könyvtár3 drwxr-xr-x 2 robert robert 512 Nov 10 11:54 public_html
Láthatjuk, hogy a
könyvtár1
,
könyvtár2
és
könyvtár3
könyvtárakhoz tartoznak ACL
típusú engedélyek, míg a
public_html
könyvtárhoz
nem.
Az állományrendszerben található
ACL engedélyeket a getfacl(1)
segédprogrammal nézhetjük meg.
Például a
próba
állomány ACL engedélyeit
a következő paranccsal tudjuk megnézni:
%
getfacl próba
#file:próba
#owner:1001 #group:1001 user::rw- group::r-- other::r--
Egy állomány ACL engedélyeit a setfacl(1) segédprogrammal tudjuk megváltoztatni. Figyeljük meg:
%
setfacl -k próba
A -k
opció törli az összes
ACL alapú engedélyt egy
állományról vagy
állományrendszerről. Ennél viszont
sokkal hasznosabb a -b
opció
használata, mivel az meghagyja az ACL
működéséhez szükséges
alapvető mezőket.
%
setfacl -m u:trhodes:rwx,group:web:r--,o::--- próba
Ebben a fenti parancsban a -m
opciót
pedig arra használtuk, hogy módosítsuk az
alapértelmezett ACL
bejegyzéseket. Mivel az ezt megelőző
parancsban teljesen töröltük még az
előredefiniált bejegyzéseket is, ez a parancs
a megadott paraméterekkel kiegészítve
ezeket vissza fogja állítani. Ügyeljünk
arra, hogy ha olyan felhasználót vagy csoportot
adunk meg, ami nem létezik a rendszerben, akkor a
szabvány kimenetre egy Invalid
argument hibaüzenetet kapunk.
Ha kérdése van a FreeBSD-vel kapcsolatban, a
következő címre írhat (angolul):
<questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése, kérjük erre a címre írjon:
<gabor@FreeBSD.org>.