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

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!

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.