FreeBSD kézikönyv
Előző | Fejezet 14. Biztonság | Következő

# 14.12. Az állományrendszerek hozzáféréseit vezérlő listák

Írta: Tom Rhodes.

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®-os engedély modellt bővítik ki egy igen kompatibilis (POSIX®.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 állományrendszer, az UFS2 már alapból ismeri.

> Megjegyzés: 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.

> Megjegyzés: 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.

## 14.12.1. Az ACL-ek használata

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.

Előző | Tartalom | Következő
OpenSSH | Fel | A külső programok biztonsági problémáinak figyelése

Ha kérdése van a FreeBSD-vel kapcsolatban, a következő címre írhat (angolul): <freebsd-questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése, kérjük erre a címre írjon: <gabor@FreeBSD.org>.