Hozzáférés-vezérlési listák LinuxbanHozzáférés-vezérlési listák Linuxban

Tartalomjegyzék

13.1. Hagyományos fájljogosultságok
13.2. Az ACL-ek előnyei
13.3. Meghatározások
13.4. ACL-ek kezelése
13.5. ACL-támogatás az alkalmazásokban
13.6. További információk

Kivonat

A fájlrendszer-objektumok védelmére a hagyományos jogosultságok kiterjesztéseként használhatók POSIX ACL-ek (hozzáférés-vezérlési listák) is . Az ACL-ek segítségével a jogosultságok rugalmasabban adhatók meg, mint amit a hagyományos jogosultsági alapelvek lehetővé tesznek.

A POSIX ACL elnevezés azt sugallja, hogy ez egy igazi POSIX- (portable operating system interface) szabvány. A vonatkozó szabványtervezeteket – POSIX 1003.1e és POSIX 1003.2c – azonban több okból is visszavonták. Ennek ellenére a UNIX-családhoz tartozó számos rendszeren megtalálható ACL-ek ezekre a tervezetekre épülnek és a fájlrendszer ACL-ek megvalósítása – ahogy a jelen fejezetben le van írva – ezeket a szabványokat követi. Ezek a következő címen tekinthetők meg: http://wt.xpilot.org/publications/posix.1e/.

Hagyományos fájljogosultságokHagyományos fájljogosultságok

A hagyományos Linux-fájljogosultságok magyarázata a 15.2. szakasz - Felhasználók és hozzáférési jogosultságok részben olvasható. Speciálisabb lehetőséget biztosítanak a setuid, a setgid és a sticky (ragadós) bitek.

A setuid bitA setuid bit

Egyes esetekben a hozzáférési jogosultságok túlságosan korlátozók lehetnek. Éppen ezért a Linux extra beállításokkal lehetővé teszi az aktuális felhasználó és csoport ideiglenes megváltoztatását egy-egy adott műveletre. A passwd program például normál esetben root jogosultságot igényel az /etc/passwd fájl eléréséhez. Ez a fájl fontos, bizalmas információkat tartalmaz, például a felhasználók home könyvtárait, illetve a felhasználói és csoportazonosítókat. Egy normál felhasználó tehát nem lenne képes megváltoztatni a passwd fájlt, hiszen túlságosan veszélyes lenne minden felhasználó számára közvetlen hozzáférést adni ehhez a fájlhoz. E probléma egy lehetséges megoldását kínálja a setuid mechanizmus. A setuid (set user ID, "felhasználói azonosító beállítása") egy olyan speciális fájlattribútum, amelyik arra utasítja a rendszert, hogy az így megjelölt programokat egy meghatározott felhasználói azonosító (UID) nevében hajtsa végre. Vegyük példának ismét a passwd parancsot:


-rwsr-xr-x  1 root shadow 80036 2004-10-02 11:08 /usr/bin/passwd

A felhasználói jogosultságok között látható a setuid bitet jelző s karakter. A setuid bit beállítása miatt a passwd programot minden felhasználó a root nevében futtatja.

A setgid bitA setgid bit

A setuid bit felhasználókra vonatkozik. Létezik egy párja, amelyik viszont a csoportokra: ez a setgid bit. Egy olyan program, amelyhez ezt a bitet beállítják, azon csoport azonosítója (GID) alatt fog futni, amelyikkel elmentették, függetlenül attól, hogy melyik felhasználó indítja el. Éppen ezért egy olyan könyvtárban, amelynek be van állítva a setgid bitje, az összes újonnan létrehozott fájl és alkönyvtár ahhoz a csoporthoz lesz rendelve, amelyhez a könyvtár maga is tartozik. Vegyük a következő példát:

drwxrws--- 2 tux archive 48 Nov 19 17:12  backup

Az s karakter jelzi, hogy a setgid bit be lett állítva a csoportjogosultságokhoz. A könyvtárat a könyvtár tulajdonosa és az archive csoport tagjai érhetik el. Azok a felhasználók, akik nem a csoport tagjai, „leképződnek” a megfelelő csoportra. Az összes kiírt fájl tényleges csoportazonosítója az archive lesz. Például egy mentést végző program, amely az archive csoportazonosító nevében fut, elérheti ezt a könyvtárat root jogosultságok nélkül is.

A sticky (ragadós) bitA sticky (ragadós) bit

A harmadik speciális jelző a sticky (ragadós) bit. Ennek a szerepe függ attól, hogy egy végrehajtható programra vagy egy könyvtárra van beállítva. Ha egy programhoz tartozik, akkor az így megjelölt fájl RAM-ba töltődik, hogy ne kelljen minden egyes használatkor a merevlemezről betölteni. Az attribútum ilyen használata ma már ritka, mert a modern merevlemezek elég gyorsak. Ha egy könyvtárhoz van rendelve, akkor megakadályozza, hogy a felhasználók törölhessék egymás fájljait. Jellemzően például a /tmp és /var/tmp könyvtárakon szokás használni:

drwxrwxrwt 2 root root 1160 2002-11-19 17:15 /tmp