Ez a bemutató részletezi a hozzáférés-vezérlési listákat Linuxon, mire használják őket és hogyan kezelhetők.
Rendszergazdaként valószínűleg sok időt töltesz a rendszeredben a felhasználók és csoportok jogosultságainak beállításával.
A fájlengedélyek már elég praktikusak ahhoz, hogy olvasási, írási vagy végrehajtási engedélyeket adj könyvtáraknak vagy fájloknak.
De mi van akkor, ha pontosabb módszerre van szükségünk a mappák vagy fájlok jogosultságainak megadásához?
Mi van akkor, ha egy fájlhoz olyan felhasználónak vagy csoportnak akarok hozzáférést adni, aki nem a fájl jelenlegi tulajdonosa?
A hozzáférési vezérlési listák, más néven ACL, pontosan ezt oldják meg egy Linux rendszerben.
A mai bemutatóban nagyon alaposan megvizsgáljuk a hozzáférési vezérlési listákat, hogy mik azok és hogyan használjuk őket egy Linux rendszer megfelelő konfigurálásához.
Készen állsz?
Tartalomjegyzék
- Mit fogsz tanulni
- A hozzáférés-vezérlő listák alapjai Linuxon
- A hozzáférés-vezérlő lista definíciója
- A hozzáférés-vezérlési listák listázása
- Hozzáférés-vezérlési listák létrehozása Linuxon
- Az ACL csomagok telepítésének ellenőrzése
- Hozzáférésvezérlő listák beállítása a setfacl használatával
- A hozzáférés-vezérlési listák listázása a getfacl használatával
- Munka a hozzáférés-vezérlési listák maszkjával
- Hozzáférésvezérlő listák alapértelmezett értékeinek létrehozása könyvtárakon
- Könyvtárakra vonatkozó alapértelmezett hozzáférés-ellenőrzési listák törlése
- Következtetés
Mit fogsz tanulni
Ha végig követed ezt az oktatóanyagot, a következő témákat fogod megismerni:
- Mi a hozzáférés-vezérlési listák és hogyan olvashatók ki az ls parancsból;
- Hogyan állíthatod be egy fájl alapvető jogosultságait a setfacl parancs segítségével:
- Hogyan olvassuk ki a hozzáférés-vezérlési listákat a getfacl parancs segítségével;
- Mi a hozzáférés-vezérlési lista maszkja és hogyan kell kiolvasni;
- Mi a hozzáférés-vezérlési lista alapértelmezése és hogyan lehet hatékonyan használni
Ez egy elég hosszú program, ezért minden további nélkül kezdjük egy gyors definícióval, hogy mi is az a hozzáférés-vezérlési lista.
A hozzáférés-vezérlő listák alapjai Linuxon
A Linuxon kétféleképpen állíthatjuk be a felhasználók és csoportok jogosultságait : hagyományos fájlengedélyekkel vagy hozzáférés-vezérlő listákkal.
A hozzáférés-vezérlő lista definíciója
A hozzáférés-vezérlő listákat a Linux fájlrendszerekben arra használják, hogy egyedi és személyre szabottabb jogosultságokat állítsunk be a fájlokra és mappákra. Az ACL-ek lehetővé teszik a fájlok tulajdonosai vagy a kiváltságos felhasználók számára, hogy bizonyos felhasználók vagy csoportok számára jogokat adjanak.
A Linuxban, mint azt bizonyára tudja, a jogosultságok három kategóriára vannak osztva : egy a fájl tulajdonosának, egy a csoportnak és egy a többieknek.
Mindenesetre bizonyos esetekben előfordulhat, hogy egy könyvtárhoz való hozzáférést (például az execute engedélyt) egy adott felhasználónak szeretnénk megadni anélkül, hogy ezt a felhasználót be kellene tenni a fájl csoportjába.
Éppen ezért találták ki a hozzáférés-vezérlési listákat.
A hozzáférés-vezérlési listák listázása
Linuxon a hozzáférés-vezérlési listák nincsenek engedélyezve, amikor új fájlt vagy könyvtárat hozunk létre a gépünkön (kivéve, ha a szülő könyvtárban előre definiáltunk néhány ACL-t).
Hogy lássa, hogy egy fájlhoz vagy könyvtárhoz definiáltak-e hozzáférés-vezérlési listákat, futtassa az ls parancsot, és keressen egy “+” karaktert az engedélyezési sor végén.
$ ls -l
A különbség bemutatására itt van a különbség, amikor egy minimál példányon listázza a fájlokat.
Most, hogy már ismerjük a hozzáférés-vezérlési listák alapjait, lássuk, hogyan kezdhetjük el az alapvető ACL-ek létrehozását a fájlok és könyvtárak számára.
Hozzáférés-vezérlési listák létrehozása Linuxon
Az ACL-parancsok megkezdése előtt fontos, hogy a csomagok telepítve legyenek az állomáson.
Az ACL csomagok telepítésének ellenőrzése
Ez nem biztos, hogy így van, ha úgy döntött, hogy egy minimális szerver fut.
Kezdje a setfacl parancshoz kapcsolódó súgó ellenőrzésével a következő parancs futtatásával
$ setfacl --help
Ha a gépén nem találja a setfacl parancsot, győződjön meg róla, hogy telepítette az ACL kezeléshez szükséges csomagokat.
$ sudo apt-get install acl -y
Figyeljen arra, hogy a parancs futtatásához sudo jogosultságokra lesz szüksége a Debian 10 rendszeren.
Futtassa újra a setfacl parancsot, és győződjön meg róla, hogy ezúttal láthatja a súgó parancsokat.
Most, hogy a hosztja megfelelően van konfigurálva, nézzük meg, hogyan működik a setfacl parancs.
Hozzáférésvezérlő listák beállítása a setfacl használatával
A hozzáférési vezérlő listáknál két fő parancsot kell megjegyeznünk : setfacl és getfacl.
Ebben a fejezetben a setfacl parancsot fogjuk megvizsgálni, mivel a getfacl eléggé magától értetődő.
A setfacl parancsot Linuxon egy fájl vagy könyvtár hozzáférés-vezérlési listáinak létrehozására, módosítására és eltávolítására használjuk.
A setfacl a következő szintaxissal rendelkezik
$ setfacl {-m, -x} {u, g}:<name>: <file, directory>
Ahol a görbe zárójelek az alábbi opciók egyikét, a normál zárójelek pedig egy vagy több elemet jelentenek.
- -m : azt jelenti, hogy a fájl vagy könyvtár egy vagy több ACL-bejegyzését kívánja módosítani.
- -x : azt jelenti, hogy a fájl vagy könyvtár egy vagy több ACL-bejegyzését kívánja eltávolítani.
- {u, g} : ha egy felhasználó vagy egy csoport ACL-jét kívánja módosítani.
- name : ez egy opcionális paraméter, elhagyható, ha az ACL-bejegyzéseket minden felhasználó vagy csoport számára szeretné beállítani az állomáson.
- : a fájl vagy könyvtár olvasási, írási vagy végrehajtási engedélyeinek beállításához.
Egy felhasználónak egy fájlra vonatkozó konkrét írási engedélyek beállításához például a következő parancsot kell írni
$ setfacl -m u:user:w <file, directory>
A végrehajtási engedélyek beállításához az összes felhasználó számára a gépen, a következő parancsot írnád
$ setfacl -m u::x <file, directory>
A teljes jogosultságok beállításához egy adott csoport számára a gépeden, a setfacl-t így írnád
$ setfacl -m g:group:rwx <file, directory>
Tegyük fel, hogy el akarsz távolítani egy ACL-bejegyzést egy fájlból.
Azért, hogy eltávolítsunk egy felhasználó specifikus bejegyzést egy fájlból, megadnánk az x opciót.
Megjegyezzük : nem lehet specifikus jogokat eltávolítani egyetlen ACL bejegyzésből, ami azt jelenti, hogy nem tudjuk eltávolítani az írási jogokat, miközben az ACL olvasási jogai aktívak maradnak.
$ setfacl -x u:<user> <file, directory>
Hasonlóképpen, ha a csoportokkal kapcsolatos ACL-t akarja eltávolítani a gépén, akkor a következő parancsot írja
$ setfacl -x g:<group> <file, directory>
Most, hogy látta, hogyan hozhat létre egyszerűen hozzáférés-vezérlési listákat Linuxon, itt az ideje megnézni, hogyan ellenőrizheti a meglévő hozzáférés-vezérlési listákat fájlokon és könyvtárakon.
A hozzáférés-vezérlési listák listázása a getfacl használatával
A getfacl parancsot Linuxon arra használjuk, hogy kiírjuk egy fájl vagy könyvtár összes normál engedélyének és hozzáférés-vezérlési lista engedélyének teljes listáját.
A getfacl a következő szintaxissal használható
$ getfacl <file, directory>
A getfacl parancs több kategóriára oszlik :
- Filenév, tulajdonos és csoport : a felhasználói és a csoporttulajdonlásra vonatkozó információk jelennek meg legfelül;
- Felhasználói jogosultságok : először a szokásos felhasználói jogosultságok, más néven a tulajdonos felhasználó, majd a felhasználó-specifikus ACL-bejegyzések (úgynevezett nevesített felhasználók)
- Csoportos jogosultságok : a tulajdonos csoportok kerülnek bemutatásra, majd a csoportspecifikus ACL-bejegyzések, amelyeket szintén nevesített csoportoknak hívnak
- Maszk : ez korlátozza az ACL-bejegyzéseknek adott jogosultságokat, a maszkot a következő szakaszban részletezzük;
- Egyéb jogosultságok : ezek a jogosultságok mindig aktívak, és ez az utolsó kategória, amelyet akkor vizsgálunk, ha az aktuális felhasználónak vagy csoportnak nincs más jogosultsága.
Munka a hozzáférés-vezérlési listák maszkjával
Amint az utolsó képernyőképen valószínűleg látta, a megnevezett csoportok és az egyéb jogosultságok között van egy maszk bejegyzés.
De mire szolgál ez a maszk?
Az ACL-maszk különbözik a fájlkészítési maszktól (umask), és arra szolgál, hogy korlátozza a fájlon vagy könyvtáron meglévő ACL-bejegyzéseket.
Az ACL-maszk az ACL-engedélyek maximális készleteként használatos, függetlenül a meglévő engedélyektől, amelyek meghaladják az ACL-maszkot.
Mint mindig, egy ábra száz szót mond.
Az ACL-maszk minden alkalommal frissül, amikor a setfacl parancsot futtatja, hacsak nem adja meg a -n jelzővel, hogy nem kívánja frissíteni a maszkot.
A maszk frissítésének megakadályozásához futtassa a setfacl parancsot a következő paranccsal
$ setfacl -n -m u:antoine:rwx <file, directory>
Mint a példában látható, az “antoine” felhasználónak teljes jogosultságot adtam a fájlhoz.
A maszk úgy van beállítva, hogy a jogosultságokat olvasási és írási jogosultságokra korlátozza.
Ez azt eredményezi, hogy a fájlra beállított “tényleges jogosultságok” ennek a felhasználónak az olvasási és írási jogosultságok, a végrehajtási engedélyt nem adja meg.
Figyelem : ha az Ön maximális jogosultságkészlete eltér a maszk bejegyzéstől, akkor egy tényleges sort kap, amely kiszámítja a használt ACL-bejegyzések “valódi” készletét.
Hozzáférésvezérlő listák alapértelmezett értékeinek létrehozása könyvtárakon
Amint azt már említettük ebben a cikkben, lehetőség van ACL-bejegyzések létrehozására könyvtárakon, és ezek ugyanúgy működnek, mint a fájl-hozzáférésvezérlő listák.
A könyvtárak esetében azonban van egy kis különbség : lehetőség van a hozzáférés-vezérlési listák alapértelmezéseinek létrehozására.
A hozzáférés-vezérlési listák alapértelmezései ACL-bejegyzések létrehozására szolgálnak egy könyvtárban, amelyeket az ebben a könyvtárban lévő objektumok, például fájlok vagy alkönyvtárak örökölnek.
Az alapértelmezett ACL-bejegyzések létrehozásakor :
- Az ebben a könyvtárban létrehozott fájlok a szülő könyvtárban megadott ACL-bejegyzéseket öröklik
- Az ebben a könyvtárban létrehozott alkönyvtárak a szülő könyvtár ACL-bejegyzéseit, valamint az alapértelmezett ACL-bejegyzéseket öröklik.
Az alapértelmezett ACL-bejegyzések létrehozásához adja meg a -d opciót az ACL beállításakor a setfacl parancs segítségével.
$ setfacl -d -m {u, g}:<name>: <directory>
Egy könyvtárban létrehozott összes fájlhoz olvasási engedélyeket rendelhet például a következő paranccsal
$ setfacl -d -m u::r directory
Az acl-könyvtárban létrehozott fájl létrehozásakor most már láthatja, hogy az alapértelmezett ACL-bejegyzések alkalmazásra kerülnek a fájlra.
Hasonlóan, amikor az acl-könyvtárban egy könyvtárat hozunk létre, az örökölni fogja a szülő könyvtárban megadott alapértelmezett ACL-bejegyzéseket.
Megjegyezzük, hogy ajánlott mindhárom kategóriához (felhasználó, csoport és egyéb) alapértelmezett engedélyeket megadni.
A három bejegyzés közül az egyik megadása ugyanis a fennmaradó kettőt a fájlkészítési maszkhoz kapcsolódó jogosultságokkal hozza létre.
Könyvtárakra vonatkozó alapértelmezett hozzáférés-ellenőrzési listák törlése
A könyvtárakra vonatkozó meglévő alapértelmezett hozzáférés-ellenőrzési listák törléséhez használja a -k jelzőt a setfacl paranccsal.
$ setfacl -k <directory>
A korábban megadott példával az alábbi módon törölhetjük az alapértelmezett bejegyzéseket
$ setfacl -k acl-directory
Megjegyezzük, hogy a szülő könyvtár ACL-bejegyzéseinek törlése nem törli a szülő könyvtárban található fájlok vagy könyvtárak ACL-bejegyzéseit.
Egy könyvtárban és az összes alkönyvtárban lévő alapértelmezett ACL-bejegyzés törléséhez a rekurzív opciót (-R)
$ setfacl -kR <directory>
Következtetés
Ebben a tananyagban megismerkedett a Linuxon futó hozzáférés-ellenőrzési listákkal, a getfacl és a setfacl paranccsal.
Megtanultál többet a hozzáférés-vezérlési listák maszkjáról és arról, hogy az alapértelmezett ACL-t hogyan használjuk a szülői könyvtárban található fájlokra és alkönyvtárakra vonatkozó ACL-bejegyzések létrehozásához.
Ha kíváncsi vagy a Linux rendszeradminisztrációra, még sok oktatóanyagunk van a témában, mindenképpen olvasd el őket!