Weboldal keresés

Hozzáférés-vezérlési listák (ACL) és lemezkvóták beállítása felhasználók és csoportok számára


A hozzáférés-vezérlési listák (más néven ACL-ek) a Linux kernel olyan funkciói, amelyek lehetővé teszik a fájlok és könyvtárak számára a normál ugo/rwx engedélyek által meghatározottaknál finomabb hozzáférési jogok meghatározását.

Például a szabványos ugo/rwx engedélyek nem teszik lehetővé különböző engedélyek beállítását a különböző egyéni felhasználókhoz vagy csoportokhoz. Az ACL-ekkel ezt viszonylag könnyű megtenni, amint azt ebben a cikkben látni fogjuk.

A fájlrendszer-kompatibilitás ellenőrzése az ACL-ekkel

Annak érdekében, hogy a fájlrendszerek jelenleg is támogatják az ACL-eket, ellenőriznie kell, hogy azok az acl opcióval lettek-e csatlakoztatva. Ehhez a tune2fs parancsot használjuk az ext2/3/4 fájlrendszerekhez az alábbiak szerint. Cserélje ki a /dev/sda1 elemet arra az eszközre vagy fájlrendszerre, amelyet ellenőrizni szeretne:

tune2fs -l /dev/sda1 | grep "Default mount options:"

Megjegyzés: Az XFS esetén a hozzáférés-vezérlési listák már eleve támogatottak.

A következő ext4 fájlrendszerben láthatjuk, hogy az ACL-ek engedélyezve vannak a /dev/xvda2 számára:

tune2fs -l /dev/xvda2 | grep "Default mount options:"

Ha a fenti parancs nem jelzi, hogy a fájlrendszer az ACL-ek támogatásával lett felcsatolva, ennek valószínűleg az az oka, hogy a /etc/fstab fájlban megtalálható a noacl opció.

Ebben az esetben távolítsa el, válassza le a fájlrendszert, majd csatlakoztassa újra, vagy egyszerűen indítsa újra a rendszert, miután elmentette a változtatásokat a /etc/fstab mappába.

Az ACL-ek bemutatása Linuxban

Az ACL-ek működésének szemléltetésére egy fejlesztők nevű csoportot használunk, és hozzáadjuk a walterwhite és a saulgoodman felhasználókat (igen, Breaking Bad rajongó vagyok! ) hozzá.:

groupadd developers
useradd walterwhite
useradd saulgoodman
usermod -a -G developers walterwhite
usermod -a -G developers saulgoodman

Mielőtt továbblépnénk, ellenőrizze, hogy mindkét felhasználót felvette-e a fejlesztői csoportba:

id walterwhite
id saulgoodman

Most hozzunk létre egy test nevű könyvtárat a /mnt mappában, és egy acl.txt nevű fájlt (/mnt/test/acl). .txt).

Ezután a csoport tulajdonosát a fejlesztők értékre állítjuk, és az alapértelmezett ugo/rwx engedélyeket rekurzív módon 770-re változtatjuk (ezáltal biztosítjuk az olvasást, írást és végrehajtást a fájl tulajdonosának és csoporttulajdonosának egyaránt biztosított engedélyek):

mkdir /mnt/test
touch /mnt/test/acl.txt
chgrp -R developers /mnt/test
chmod -R 770 /mnt/test

Ahogy az várható volt, a /mnt/test/acl.txt címre walterwhite vagy saulgoodman néven írhat:

su - walterwhite
echo "My name is Walter White" > /mnt/test/acl.txt
exit
su - saulgoodman
echo "My name is Saul Goodman" >> /mnt/test/acl.txt
exit

Eddig jó. Hamarosan azonban problémát fogunk látni, amikor írási hozzáférést kell biztosítanunk a /mnt/test/acl.txt fájlhoz egy másik felhasználó számára, aki nem szerepel a fejlesztői csoportban.

A normál ugo/rwx engedélyek megkövetelik, hogy az új felhasználót felvegyék a fejlesztői csoportba, de ez ugyanazokat az engedélyeket adná neki a csoport tulajdonában lévő összes objektumra. Pontosan itt jönnek jól az ACL-ek.

Az ACL beállítása Linuxban

Kétféle ACL létezik: a hozzáférési ACL-ek (amelyek egy fájlra vagy könyvtárra vonatkoznak) és az alapértelmezett (opcionális) ACL-ek, amelyek csak egy könyvtárra alkalmazhatók. .

Ha az alapértelmezett ACL-t tartalmazó könyvtárban lévő fájlok nem rendelkeznek saját ACL-lel, akkor a szülőkönyvtáruk alapértelmezett ACL-jét öröklik.

Adjunk a gacanepa felhasználónak olvasási és írási hozzáférést a /mnt/test/acl.txt fájlhoz. Mielőtt ezt megtenné, nézzük meg az aktuális ACL-beállításokat a könyvtárban:

getfacl /mnt/test/acl.txt

Ezután módosítsa az ACL-eket a fájlban, használja az u: parancsot, majd a felhasználónevet és az :rw-t az olvasási/írási engedélyek jelzésére:

setfacl -m u:gacanepa:rw /mnt/test/acl.txt

Az összehasonlításhoz futtassa újra a getfacl programot a fájlon. A következő képen az „Előtte” és az „Utána” láthatók:

getfacl /mnt/test/acl.txt

Ezután végrehajtási engedélyeket kell adnunk másoknak a /mnt/test könyvtárban:


chmod +x /mnt/test

Ne feledje, hogy egy könyvtár tartalmának eléréséhez a normál felhasználónak végrehajtási engedélyekre van szüksége az adott könyvtárban.

A gacanepa felhasználónak most már tudnia kell írni a fájlba. Váltson erre a felhasználói fiókra, és hajtsa végre a következő parancsot a megerősítéshez:

echo "My name is Gabriel Cánepa" >> /mnt/test/acl.txt

Ha alapértelmezett ACL-t szeretne beállítani egy könyvtárra (amelyet a tartalma örökölni fog, hacsak másképp nem írják felül), adja hozzá a d: elemet a szabály elé, és adjon meg egy könyvtárat a fájlnév helyett:

setfacl -m d:o:r /mnt/test
getfacl /mnt/test/

A fenti ACL lehetővé teszi, hogy a tulajdonosi csoportba nem tartozó felhasználók olvasási hozzáférést kapjanak a /mnt/test könyvtár jövőbeli tartalmához. Figyelje meg a különbséget a getfacl /mnt/test kimenetében a változás előtt és után:

Egy adott ACL eltávolításához cserélje ki a fenti parancsok -m elemét -x-re. Például,

setfacl -x d:o /mnt/test

Alternatív megoldásként használhatja a -b opciót is az ÖSSZES ACL egy lépésben történő eltávolításához:

setfacl -b /mnt/test

Az ACL-ek használatára vonatkozó további információkért és példákért tekintse meg az openSUSE biztonsági útmutató 10. fejezetének 2. szakaszát (PDF formátumban is ingyenesen letölthető ).

Állítsa be a Linux lemezkvótákat a felhasználókon és a fájlrendszereken

A tárhely egy másik erőforrás, amelyet gondosan kell használni és figyelemmel kell kísérni. Ennek érdekében a kvótákat fájlrendszerenként lehet beállítani, akár egyéni felhasználók, akár csoportok számára.

Így egy adott felhasználó vagy egy adott csoport számára engedélyezett lemezhasználati korlátok vannak beállítva, és megnyugodhat, hogy a lemezeket nem tölti meg teljesen egy gondatlan (vagy rossz szándékú) felhasználó.

Az első dolog, amit a kvóták fájlrendszeren való engedélyezéséhez meg kell tennie, az az usrquota vagy grpquota (felhasználói, illetve csoportkvóták) opcióival az /etc/fstab fájlban.

Például engedélyezzünk felhasználóalapú kvótákat a /dev/vg00/vol_backups és csoportalapú kvótákat a /dev/vg00/vol_projects oldalon.

Vegye figyelembe, hogy az UUID az egyes fájlrendszerek azonosítására szolgál.

UUID=f6d1eba2-9aed-40ea-99ac-75f4be05c05a /home/projects ext4 defaults,grpquota 0 0
UUID=e1929239-5087-44b1-9396-53e09db6eb9e /home/backups ext4 defaults,usrquota 0 0

Mindkét fájlrendszer leválasztása és újracsatolása:

umount /home/projects
umount /home/backups
mount -o remount /home/projects
mount -o remount /home/backups 

Ezután ellenőrizze, hogy az usrquota és a grpquota opciók jelen vannak-e a mount kimenetében (lásd alább kiemelve):

mount | grep vg00

Végül futtassa a következő parancsokat a kvóták inicializálásához és engedélyezéséhez:

quotacheck -avugc
quotaon -vu /home/backups
quotaon -vg /home/projects

Ennek ellenére most rendeljünk kvótákat a korábban említett felhasználónévhez és csoporthoz. Később letilthatja a kvótákat a quotaoff funkcióval.

Linux lemezkvóták beállítása

Kezdjük azzal, hogy beállítunk egy ACL-t a /home/backups oldalon a gacanepa felhasználó számára, amely olvasási, írási és végrehajtási engedélyeket ad neki az adott könyvtárban:

setfacl -m u:gacanepa:rwx /home/backups/

Aztán azzal,

edquota -u gacanepa

A lágy limit=900 és a kemény limit=1000 blokkokat készítjük (1024 bájt/blokk * 1000 blokk=1024000 bájt=1 MB ) a lemezterület használatáról.

Emellett 20 és 25 korlátot is beállíthatunk a felhasználó által létrehozható fájlok számának lágy és szigorú korlátozásaként.

A fenti parancs elindítja a ($EDITOR) szövegszerkesztőt egy ideiglenes fájllal, ahol beállíthatjuk a korábban említett korlátokat:

Ezek a beállítások figyelmeztetést jelenítenek meg a gacanepa felhasználó számára, ha elérte az alapértelmezett 900 blokkos vagy 20 inode korlátot. türelmi idő 7 nap.

Ha a túllépés helyzetet addig nem szüntetik meg (például fájlok eltávolításával), akkor a lágy korlát lesz a kemény korlát, és ez a felhasználó nem tud több tárhelyet használni vagy létrehozni. fájlokat.

A teszteléshez hagyjuk, hogy a gacanepa felhasználó hozzon létre egy üres 2 MB fájlt test1 néven a /home/backups mappában:

dd if=/dev/zero of=/home/backups/test1 bs=2M count=1
ls -lh /home/backups/test1

Amint láthatja, az írási művelet fájl meghiúsul a lemezkvóta túllépése miatt. Mivel csak az első1000 KB kerül a lemezre, az eredmény ebben az esetben valószínűleg egy sérült fájl lesz.

Hasonlóképpen létrehozhat egy ACL-t a fejlesztői csoportok számára, hogy a csoport tagjai számára rwx hozzáférést biztosítson a /home/projects-hez:

setfacl -m g:developers:rwx /home/projects/

És állítsa be a kvótakorlátokat:

edquota -g developers

Csakúgy, mint korábban a gacanepa felhasználóval.

A türelmi időszak tetszőleges számú másodpercre, percre, órára, napra, hétre vagy hónapra megadható végrehajtással.

edquota -t

és frissítse az értékeket a Türelmi időszak blokkolása és az Inode türelmi időszak alatt.

A blokk- vagy inode-használattal szemben (amelyek felhasználói vagy csoportos alapon vannak beállítva), a türelmi időszak rendszerszinten van beállítva.

A kvóták jelentéséhez használhatja a quota -u [felhasználó] vagy a quota -g [csoport] parancsot a gyors listához, vagy a repquota -v [/útvonal/hoz /filesystem] a részletesebb (bőbeszédű) és szépen formázott jelentésért.

Természetesen le kell cserélnie a [felhasználó], [csoport] és [/elérési út/fájlrendszerhez] elemet egy adott felhasználóra/az ellenőrizni kívánt csoportneveket és fájlrendszert.

Összegzés

Ebben a cikkben elmagyaráztuk, hogyan állíthat be Hozzáférés-vezérlési listákat és lemezkvótákat a felhasználók és csoportok számára. Mindkettő használatával hatékonyabban kezelheti az engedélyeket és a lemezhasználatot.

Ha többet szeretne megtudni a kvótákról, tekintse meg a Quota Mini-HowTo című részt a Linux dokumentációs projektben.

Mondanom sem kell, hogy a kérdések megválaszolásában is számíthat ránk. Csak küldje el őket az alábbi megjegyzés űrlap segítségével, és mi örömmel megnézzük.