Vyhledávání na webu

Jak nastavit seznamy řízení přístupu (ACL) a diskové kvóty pro uživatele a skupiny


Seznamy řízení přístupu (také známé jako ACL) jsou funkcí linuxového jádra, která umožňuje definovat podrobnější přístupová práva k souborům a adresářům, než jaká jsou určena běžnými oprávněními ugo/rwx.

Například standardní oprávnění ugo/rwx neumožňují nastavit různá oprávnění pro různé jednotlivé uživatele nebo skupiny. S ACL je to relativně snadné, jak uvidíme v tomto článku.

Kontrola kompatibility systému souborů s ACL

Abyste se ujistili, že vaše systémy souborů aktuálně podporují ACL, měli byste zkontrolovat, že byly připojeny pomocí volby acl. K tomu použijeme tune2fs pro souborové systémy ext2/3/4, jak je uvedeno níže. Nahraďte /dev/sda1 zařízením nebo souborovým systémem, který chcete zkontrolovat:

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

Poznámka: S XFS jsou seznamy řízení přístupu podporovány ihned po vybalení.

V následujícím souborovém systému ext4 můžeme vidět, že ACL byly povoleny pro /dev/xvda2:

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

Pokud výše uvedený příkaz neindikuje, že souborový systém byl připojen s podporou ACL, je to pravděpodobně způsobeno volbou noacl v /etc/fstab.

V takovém případě jej odeberte, odpojte souborový systém a poté jej znovu připojte, nebo jednoduše restartujte systém po uložení změn do /etc/fstab.

Představení ACL v Linuxu

Abychom ilustrovali, jak ACL fungují, použijeme skupinu s názvem developers a přidáme uživatele walterwhite a saulgoodman (ano, jsem fanouškem Breaking Bad! ) k tomu.:

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

Než budeme pokračovat, ověřte, že oba uživatelé byli přidáni do skupiny vývojářů:

id walterwhite
id saulgoodman

Pojďme nyní vytvořit adresář s názvem test v /mnt a soubor s názvem acl.txt uvnitř (/mnt/test/acl .txt).

Poté nastavíme vlastníka skupiny na vývojáře a jeho výchozí oprávnění ugo/rwx rekurzivně změníme na 770 (čímž udělíme čtení, zápis a spouštění oprávnění udělená vlastníkovi i vlastníkovi skupiny souboru):

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

Podle očekávání můžete napsat na /mnt/test/acl.txt jako walterwhite nebo saulgoodman:

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

Zatím je vše dobré. Brzy však zaznamenáme problém, když budeme potřebovat udělit přístup pro zápis do /mnt/test/acl.txt jinému uživateli, který není ve skupině vývojářů.

Standardní oprávnění ugo/rwx by vyžadovalo, aby byl nový uživatel přidán do skupiny vývojářů, ale to by mu dalo stejná oprávnění ke všem objektům vlastněným skupinou. To je přesně místo, kde se ACL hodí.

Nastavení ACL v Linuxu

Existují dva typy ACL: přístupové ACL jsou (které jsou aplikovány na soubor nebo adresář) a výchozí (volitelné) ACL, které lze použít pouze na adresář .

Pokud soubory v adresáři, kde byl nastaven výchozí ACL, nemají vlastní ACL, zdědí výchozí ACL svého nadřazeného adresáře.

Dejme uživateli gacanepa přístup pro čtení a zápis do /mnt/test/acl.txt. Než to uděláme, podívejme se na aktuální nastavení ACL v tomto adresáři pomocí:

getfacl /mnt/test/acl.txt

Poté změňte ACL v souboru, použijte u: následované uživatelským jménem a :rw k označení oprávnění pro čtení/zápis:

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

A znovu spusťte getfacl na souboru pro porovnání. Následující obrázek ukazuje „Před“ a „Po“:

getfacl /mnt/test/acl.txt

Dále budeme muset ostatním udělit oprávnění ke spuštění v adresáři /mnt/test:


chmod +x /mnt/test

Mějte na paměti, že pro přístup k obsahu adresáře potřebuje běžný uživatel oprávnění ke spuštění tohoto adresáře.

Uživatel gacanepa by nyní měl mít možnost zapisovat do souboru. Přepněte se na tento uživatelský účet a proveďte následující příkaz pro potvrzení:

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

Chcete-li nastavit výchozí ACL na adresář (který jeho obsah zdědí, pokud nebude přepsán jinak), přidejte před pravidlo d: a místo názvu souboru zadejte adresář:

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

ACL výše umožní uživatelům, kteří nejsou ve skupině vlastníků, mít přístup pro čtení k budoucímu obsahu adresáře /mnt/test. Všimněte si rozdílu ve výstupu getfacl /mnt/test před a po změně:

Chcete-li odebrat konkrétní ACL, nahraďte -m ve výše uvedených příkazech za -x. Například,

setfacl -x d:o /mnt/test

Případně můžete také použít volbu -b k odstranění VŠECH ACL v jednom kroku:

setfacl -b /mnt/test

Další informace a příklady použití seznamů ACL naleznete v kapitole 10, sekci 2, příručky zabezpečení openSUSE (k dispozici také bezplatně ke stažení ve formátu PDF ).

Nastavit Linuxové diskové kvóty pro uživatele a systémy souborů

Úložný prostor je dalším zdrojem, který musí být pečlivě využíván a sledován. Za tímto účelem lze kvóty nastavit na základě systému souborů, a to buď pro jednotlivé uživatele, nebo pro skupiny.

Tím je omezeno využití disku povolené pro daného uživatele nebo konkrétní skupinu a můžete si být jisti, že vaše disky nebudou zaplněny do konce nedbalým (nebo úmyslným) uživatelem.

První věc, kterou musíte udělat, abyste povolili kvóty na souborovém systému, je připojit jej pomocí možností usrquota nebo grpquota (pro uživatelské a skupinové kvóty) v /etc/fstab.

Povolme například uživatelské kvóty pro /dev/vg00/vol_backups a skupinové kvóty pro /dev/vg00/vol_projects.

Všimněte si, že UUID se používá k identifikaci každého systému souborů.

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

Odpojte a znovu připojte oba systémy souborů:

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

Poté zkontrolujte, zda jsou ve výstupu mount přítomny volby usrquota a grpquota (viz zvýrazněno níže):

mount | grep vg00

Nakonec spusťte následující příkazy pro inicializaci a povolení kvót:

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

To znamená, že nyní přiřaďme kvóty uživatelskému jménu a skupině, o které jsme se zmínili dříve. Kvóty můžete později deaktivovat pomocí kvóty.

Nastavení diskových kvót Linuxu

Začněme nastavením ACL na /home/backups pro uživatele gacanepa, který mu dá oprávnění ke čtení, zápisu a spouštění v tomto adresáři:

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

Potom s,

edquota -u gacanepa

Vytvoříme měkký limit=900 a pevný limit=1000 bloků (1024 bajtů/blok * 1000 bloků=1024 000 bajtů=1 MB ) využití místa na disku.

Můžeme také nastavit limit 20 a 25 jako měkké a tvrdé limity počtu souborů, které může tento uživatel vytvořit.

Výše uvedený příkaz spustí textový editor ($EDITOR) s dočasným souborem, kde můžeme nastavit výše zmíněné limity:

Tato nastavení způsobí, že se uživateli gacanepa zobrazí varování, když dosáhne limitu 900 bloků nebo 20 uzlů pro výchozí nastavení. doba odkladu 7 dní.

Pokud do té doby nebude situace překročení kvóty odstraněna (například odebráním souborů), z měkkého limitu se stane pevný limit a tento uživatel nebude moci využívat více úložného prostoru nebo vytvářet další soubory.

Pro testování nechejte uživatele gacanepa, aby se pokusil vytvořit prázdný 2 MB soubor s názvem test1 uvnitř /home/backups:

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

Jak můžete vidět, soubor operace zápisu selže kvůli překročení diskové kvóty. Protože se na disk zapisuje pouze prvních 1000 kB, výsledkem bude v tomto případě pravděpodobně poškozený soubor.

Podobně můžete vytvořit seznam ACL pro skupiny vývojářů, abyste členům této skupiny poskytli rwx přístup k /home/projects:

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

A nastavte limity kvót pomocí:

edquota -g developers

Stejně jako jsme to udělali s uživatelem gacanepa dříve.

Dobu odkladu lze spuštěním zadat na libovolný počet sekund, minut, hodin, dnů, týdnů nebo měsíců.

edquota -t

a aktualizaci hodnot v části Dodatečná lhůta blokování a Dodatečná lhůta Inode.

Na rozdíl od použití blokování nebo inodu (které jsou nastaveny na základě uživatele nebo skupiny) je doba odkladu nastavena v celém systému.

Chcete-li nahlásit kvóty, můžete použít kvótu -u [uživatel] nebo quota -g [skupina] pro rychlý seznam nebo repquota -v [/cesta/k /filesystem] pro podrobnější (podrobnější) a pěkně formátovanou zprávu.

Samozřejmě budete chtít nahradit [user], [group] a [/path/to/filesystem] konkrétním uživatelem/názvy skupin a systém souborů, které chcete zkontrolovat.

souhrn

V tomto článku jsme vysvětlili, jak nastavit Seznamy řízení přístupu a diskové kvóty pro uživatele a skupiny. Pomocí obou budete moci efektivněji spravovat oprávnění a využití disku.

Pokud se chcete o kvótách dozvědět více, můžete se podívat na Quota Mini-HowTo v The Linux Documentation Project.

Netřeba dodávat, že se můžete spolehnout i na to, že zodpovíme dotazy. Stačí je odeslat pomocí formuláře pro komentáře níže a my se na ně rádi podíváme.