Kako postaviti liste kontrole pristupa (ACL) i kvote diska za korisnike i grupe


Liste kontrole pristupa (također poznate kao ACL-ovi) su karakteristika Linux kernela koja omogućava definiranje preciznijih prava pristupa za datoteke i direktorije od onih specificiranih uobičajenim ugo/rwx dozvolama.

Na primjer, standardne dozvole ugo/rwx ne dozvoljavaju postavljanje različitih dozvola za različite pojedinačne korisnike ili grupe. Sa ACL-ovima je to relativno lako učiniti, kao što ćemo vidjeti u ovom članku.

Provjera kompatibilnosti sistema datoteka sa ACL-ovima

Da biste bili sigurni da vaši sistemi datoteka trenutno podržavaju ACL-ove, trebali biste provjeriti da li su montirani pomoću opcije acl. Da bismo to uradili, koristićemo tune2fs za ext2/3/4 sisteme datoteka kao što je navedeno u nastavku. Zamijenite /dev/sda1 sa uređajem ili sistemom datoteka koji želite provjeriti:

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

Napomena: Sa XFS, liste kontrole pristupa su podržane bez upotrebe.

U sljedećem sistemu datoteka ext4, možemo vidjeti da su ACL-ovi omogućeni za /dev/xvda2:

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

Ako gornja komanda ne pokazuje da je sistem datoteka montiran sa podrškom za ACL-ove, to je najvjerovatnije zbog opcije noacl koja je prisutna u /etc/fstab.

U tom slučaju, uklonite ga, demontirajte sistem datoteka, a zatim ga ponovo montirajte ili jednostavno ponovo pokrenite sistem nakon što sačuvate promjene u /etc/fstab.

Uvođenje ACL-ova u Linux

Da bismo ilustrirali kako ACL-ovi rade, koristit ćemo grupu pod nazivom programeri i dodati korisnike walterwhite i saulgoodman (da, ja sam Breaking Bad fan! ) na to.:

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

Prije nego što nastavimo, provjerimo jesu li oba korisnika dodana u grupu programera:

id walterwhite
id saulgoodman

Kreirajmo sada direktorij pod nazivom test u /mnt i datoteku pod nazivom acl.txt unutra (/mnt/test/acl .txt).

Zatim ćemo postaviti vlasnika grupe na programere i promijeniti njegove zadane dozvole ugo/rwx rekurzivno na 770 (na taj način dodijeliti čitanje, pisanje i izvršavanje dozvole dodijeljene i vlasniku i vlasniku grupe datoteke):

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

Kao što se i očekivalo, možete pisati na /mnt/test/acl.txt kao walterwhite ili 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

Zasada je dobro. Međutim, uskoro ćemo vidjeti problem kada budemo trebali odobriti pristup pisanju /mnt/test/acl.txt za drugog korisnika koji nije u grupi programera.

Standardne ugo/rwx dozvole bi zahtijevale da se novi korisnik doda u grupu programera, ali to bi mu/joj dalo iste dozvole za sve objekte u vlasništvu grupe. Upravo tu ACL-ovi dobro dođu.

Postavljanje ACL-a u Linuxu

Postoje dvije vrste ACL-ova: pristupni ACL-ovi su (koji se primjenjuju na datoteku ili direktorij) i podrazumevani (opcijski) ACL-ovi, koji se mogu primijeniti samo na direktorij .

Ako datoteke unutar direktorija gdje je postavljen podrazumevani ACL nemaju vlastiti ACL, oni nasljeđuju zadani ACL svog roditeljskog direktorija.

Omogućimo korisniku gacanepa pristup za čitanje i pisanje u /mnt/test/acl.txt. Prije nego to učinimo, pogledajmo trenutne postavke ACL-a u tom direktoriju sa:

getfacl /mnt/test/acl.txt

Zatim promijenite ACL-ove na datoteci, koristite u: praćeno korisničkim imenom i :rw da označite dozvole za čitanje/pisanje:

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

I ponovo pokrenite getfacl na datoteci da uporedite. Sljedeća slika prikazuje “Prije ” i ”Nakon ”:

getfacl /mnt/test/acl.txt

Zatim ćemo morati drugima dati dozvole za izvršavanje u direktoriju /mnt/test:


chmod +x /mnt/test

Imajte na umu da za pristup sadržaju direktorija običan korisnik treba da izvrši dozvole za taj direktorij.

Korisnik gacanepa bi sada trebao moći pisati u fajl. Prebacite se na taj korisnički nalog i izvršite sljedeću naredbu za potvrdu:

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

Da postavite zadani ACL na direktorij (koji će njegov sadržaj naslijediti osim ako se drugačije ne prepiše), dodajte d: prije pravila i navedite direktorij umjesto imena datoteke:

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

ACL iznad će omogućiti korisnicima koji nisu u grupi vlasnika da imaju pristup za čitanje budućeg sadržaja /mnt/test direktorija. Obratite pažnju na razliku u izlazu getfacl /mnt/test prije i nakon promjene:

Da biste uklonili određeni ACL, zamijenite -m u gornjim naredbama sa -x. Na primjer,

setfacl -x d:o /mnt/test

Alternativno, također možete koristiti opciju -b da uklonite SVE ACL-ove u jednom koraku:

setfacl -b /mnt/test

Za više informacija i primjera o korištenju ACL-ova, pogledajte poglavlje 10, odjeljak 2, OpenSUSE Sigurnosnog vodiča (takođe dostupno za besplatno preuzimanje u PDF formatu ).

Postavite kvote Linux diskova za korisnike i sisteme datoteka

Prostor za skladištenje je još jedan resurs koji se mora pažljivo koristiti i nadgledati. Da biste to učinili, kvote se mogu postaviti na bazi sistema datoteka, bilo za pojedinačne korisnike ili za grupe.

Stoga je postavljeno ograničenje na korištenje diska dozvoljeno za datog korisnika ili određenu grupu, i možete biti sigurni da vaši diskovi neće biti popunjeni do kapaciteta od strane nemarnog (ili nenamjernog) korisnika.

Prva stvar koju morate učiniti da biste omogućili kvote na sistemu datoteka je da ga montirate sa opcijama usrquota ili grpquota (za korisničke i grupne kvote) u /etc/fstab.

Na primjer, omogućimo kvote zasnovane na korisnicima na /dev/vg00/vol_backups i grupne kvote na /dev/vg00/vol_projects.

Imajte na umu da se UUID koristi za identifikaciju svakog sistema datoteka.

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

Demontirajte i ponovo montirajte oba sistema datoteka:

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

Zatim provjerite da li su opcije usrquota i grpquota prisutne u izlazu mount (pogledajte istaknuto ispod):

mount | grep vg00

Konačno, pokrenite sljedeće naredbe da inicijalizirate i omogućite kvote:

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

Uz to, dodijelimo kvote korisničkom imenu i grupi koje smo ranije spomenuli. Kasnije možete onemogućiti kvote pomoću kvota.

Postavljanje kvota za Linux diskove

Započnimo postavljanjem ACL-a na /home/backups za korisnika gacanepa, koji će mu dati dozvole za čitanje, pisanje i izvršavanje na tom direktoriju:

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

Zatim sa,

edquota -u gacanepa

Napravićemo meke blokove limit=900 i hard limit=1000 (1024 bajta/blok * 1000 blokova=1024000 bajtova=1 MB ) korištenja prostora na disku.

Također možemo postaviti ograničenje od 20 i 25 kao meka i čvrsta ograničenja na broj fajlova koji ovaj korisnik može kreirati.

Gornja komanda će pokrenuti uređivač teksta ($EDITOR) sa privremenim fajlom gdje možemo postaviti ograničenja koja su prethodno spomenuta:

Ove postavke će uzrokovati da se korisniku gacanepa prikaže upozorenje kada dosegne 900 blokova ili 20 inoda ograničenja za zadanu vrijednost grejs period od 7 dana.

Ako situacija preko kvote nije eliminisana do tada (na primjer, uklanjanjem datoteka), meko ograničenje će postati tvrdo ograničenje i ovaj korisnik će biti spriječen da koristi više prostora za pohranu ili kreira više datoteke.

Za testiranje, neka korisnik gacanepa pokuša kreirati praznu datoteku 2 MB pod nazivom test1 unutar /home/backups:

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

Kao što možete vidjeti, datoteka operacije pisanja ne uspijeva zbog prekoračenja diskovne kvote. Pošto je samo prvih 1000 KB upisano na disk, rezultat će u ovom slučaju najvjerovatnije biti oštećena datoteka.

Slično, možete kreirati ACL za grupe programera kako biste članovima te grupe dali rwx pristup /home/projects:

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

I postavite ograničenja kvote sa:

edquota -g developers

Baš kao što smo ranije radili s korisnikom gacanepa.

Period odgode može se odrediti za bilo koji broj sekundi, minuta, sati, dana, sedmica ili mjeseci izvršavanjem.

edquota -t

i ažuriranje vrijednosti pod Block grace period i Inode grece period.

Za razliku od korištenja bloka ili inode (koje su postavljene na bazi korisnika ili grupe), period odgode je postavljen na cijelom sistemu.

Da biste prijavili kvote, možete koristiti kvotu -u [korisnik] ili quota -g [grupa] za brzu listu ili repquota -v [/path/to /filesystem] za detaljniji (opširniji) i lijepo formatiran izvještaj.

Naravno, htjet ćete zamijeniti [korisnik], [grupa] i [/path/to/filesystem] sa određenim korisnikom/imena grupa i sistem datoteka koje želite provjeriti.

Sažetak

U ovom članku smo objasnili kako postaviti Liste kontrole pristupa i diskovne kvote za korisnike i grupe. Koristeći oba, moći ćete efikasnije upravljati dozvolama i korištenjem diska.

Ako želite saznati više o kvotama, možete pogledati Quota Mini-HowTo u Linux dokumentacijskom projektu.

Nepotrebno je reći da možete računati i na nas da odgovorimo na pitanja. Samo ih pošaljite koristeći formular za komentare ispod i biće nam više nego drago da ih pogledamo.