Popisi za kontrolu pristupa (poznate i kao ACL-ovi) značajka su jezgre Linuxa koja omogućuje definiranje preciznijih prava pristupa datotekama i direktorijima od onih koja su navedena u uobičajenoj verziji. ugo/rwx dopuštenja.
Na primjer, standard ugo/rwx dopuštenja ne dopuštaju postavljanje različitih dopuštenja za različite pojedinačne korisnike ili grupe. S ACL -ovima to je relativno lako učiniti, kao što ćemo vidjeti u ovom članku.
Kako biste bili sigurni da vaši datotečni sustavi trenutno podržavaju ACL -ove, provjerite jesu li montirani pomoću opcije acl. Za to ćemo koristiti tune2fs za ext2/3/4 datotečne sustave kako je dolje navedeno. Zamijeniti /dev/sda1 s uređajem ili datotečnim sustavom koji želite provjeriti:
# tune2fs -l /dev /sda1 | grep "Zadane opcije montiranja:"
Bilješka: S XFS, Popisi za kontrolu pristupa podržani su iz kutije.
U sljedećem ext4 datotečni sustav, možemo vidjeti da su ACL -ovi omogućeni za /dev/xvda2:
# tune2fs -l /dev /xvda2 | grep "Zadane opcije montiranja:"
Ako gornja naredba ne ukazuje na to da je datotečni sustav montiran s podrškom za ACL -ove, najvjerojatnije je to zbog noacl opcija prisutna u /etc/fstab.
U tom slučaju uklonite ga, isključite datotečni sustav, a zatim ga ponovno montirajte ili jednostavno ponovno pokrenite sustav nakon spremanja promjena na /etc/fstab.
Za ilustraciju rada ACL -ova koristit ćemo grupu pod nazivom programeri i dodati korisnike walterwhite i saulgoodman (da, ja sam ljubitelj Breaking Bad -a!) toga:
# groupadd programera. # useradd walterwhite. # useradd saulgoodman. # usermod -a -G programeri walterwhite. # usermod -a -G programeri saulgoodman.
Prije nego nastavimo, provjerimo jesu li oba korisnika dodana u grupu programera:
# id walterwhite. # id saulgoodman.
Sada stvorimo direktorij pod nazivom test u /mnti datoteku pod nazivom acl.txt unutra (/mnt/test/acl.txt).
Tada ćemo postaviti vlasnika grupe na programeri i promijeniti zadanu vrijednost ugo/rwx dopuštenja rekurzivno za 770 (čime se odobravaju dozvole za čitanje, pisanje i izvršavanje dane vlasniku i vlasniku grupe datoteke):
# mkdir /mnt /test. # dodirnite /mnt/test/acl.txt. # chgrp -R programeri /mnt /test. # chmod -R 770 /mnt /test.
Očekivano, možete pisati /mnt/test/acl.txt kao walterwhite ili saulgoodman:
# su - walterwhite. # echo "Moje ime je Walter White"> /mnt/test/acl.txt. # Izlaz. # su - saulgoodman. # echo "Moje ime je Saul Goodman" >> /mnt/test/acl.txt. # Izlaz.
Zasada je dobro. Međutim, uskoro ćemo vidjeti problem kada trebamo odobriti pristup pisanju /mnt/test/acl.txt za drugog korisnika koji nije u grupi programera.
Standard ugo/rwx dopuštenja bi zahtijevala da se novi korisnik doda u grupu programera, ali bi mu to dalo ista dopuštenja za sve objekte u vlasništvu grupe. Upravo tu ACL -ovi dobro dolaze.
Postoje dvije vrste ACL -ova: pristup ACL -ovima su (koje se primjenjuju na datoteku ili direktorij) i zadani (izborni) ACL -ovi, koji se može primijeniti samo na imenik.
Ako se datoteke unutar direktorija nalaze u zadani ACL je postavljen nemaju vlastiti ACL, oni nasljeđuju zadani ACL svog roditeljskog direktorija.
Dajmo korisnika gacanepa pristup za čitanje i pisanje /mnt/test/acl.txt. Prije nego što to učinimo, pogledajmo trenutne ACL postavke u tom direktoriju s:
# getfacl /mnt/test/acl.txt.
Zatim promijenite ACL -ove u datoteci, koristite ti:
nakon čega slijedi korisničko ime i : rw
za označavanje dopuštenja za čitanje / pisanje:
# setfacl -m u: gacanepa: rw /mnt/test/acl.txt.
I trči getfacl ponovno u datoteci za usporedbu. Sljedeća slika prikazuje "Prije" i "Nakon":
# getfacl /mnt/test/acl.txt.
Zatim ćemo drugima morati dati dopuštenja za izvršavanje na /mnt/test imenik:
# chmod +x /mnt /test.
Imajte na umu da je za pristup sadržaju imenika redovitom korisniku potrebno izvršiti dopuštenja za taj direktorij.
Korisnik gacanepa sada bi trebao moći pisati u datoteku. Prebacite se na taj korisnički račun i izvršite sljedeću naredbu za potvrdu:
# echo "Moje ime je Gabriel Cánepa" >> /mnt/test/acl.txt.
Da biste zadani ACL postavili na imenik (koji će njegov sadržaj naslijediti ako nije drugačije prepisano), dodajte d:
prije pravila i odredite direktorij umjesto naziva datoteke:
# setfacl -m d: o: r /mnt /test. # getfacl/mnt/test/
Gore navedeni ACL dopustit će korisnicima koji nisu u vlasničkoj grupi pristup za čitanje budućeg sadržaja /mnt/test imenik. Obratite pozornost na razliku u izlazu od getfacl /mnt /test prije i poslije promjene:
Da biste uklonili određeni ACL, zamijenite ga -m
u gornjim naredbama s -x
. Na primjer,
# setfacl -x d: o /mnt /test.
Alternativno, možete koristiti i -b
mogućnost uklanjanja SVIH ACL -ova u jednom koraku:
# setfacl -b /mnt /test.
Za više informacija i primjere korištenja ACL -ova pogledajte poglavlje 10, odjeljak 2, od sigurnosni vodič za openSUSE (također dostupno za besplatno preuzimanje u PDF formatu).
Skladišni prostor je još jedan resurs koji se mora pažljivo koristiti i pratiti. Za to se kvote mogu postaviti na temelju datotečnog sustava, bilo za pojedinačne korisnike ili za grupe.
Stoga je ograničeno korištenje diska dopušteno za određenog korisnika ili određenu skupinu, a možete biti sigurni da nemarni (ili zlonamjerni) korisnik neće do kraja napuniti vaše diskove.
Prvo što morate učiniti da biste omogućili kvote u datotečnom sustavu jest da ih montirate pomoću opcija usrquota ili grpquota (za korisničke i grupne kvote) u /etc/fstab.
Na primjer, omogućimo kvote na temelju korisnika /dev/vg00/vol_backups i grupne kvote na /dev/vg00/vol_projects.
Imajte na umu da UUID koristi se za identifikaciju svakog datotečnog sustava.
UUID = f6d1eba2-9aed-40ea-99ac-75f4be05c05a /home /projects ext4 zadane postavke, grpquota 0 0. UUID = e1929239-5087-44b1-9396-53e09db6eb9e /home /sigurnosne kopije ext4 zadane postavke, usrquota 0 0.
Demontirajte i ponovno instalirajte oba datotečna sustava:
# umount /home /projects. # umount /home /sigurnosne kopije. # mount -o remount /home /projekti. # mount -o remount /home /sigurnosne kopije
Zatim provjerite jesu li opcije usrquota i grpquota prisutne u izlazu montiranja (pogledajte dolje istaknuto):
# nosač | grep vg00.
Na kraju, pokrenite sljedeće naredbe za inicijalizaciju i omogućavanje kvota:
# quotacheck -avugc. # quotaon -vu /home /sigurnosne kopije. # kvota -vg /home /projekti.
No, dodijelimo sada kvote korisničkom imenu i grupi koje smo ranije spomenuli. Kvote možete kasnije onemogućiti pomoću kvota.
Počnimo s postavljanjem ACL -a /home/backups za korisnika gacanepa, koji će mu dati dozvole za čitanje, pisanje i izvršavanje u tom direktoriju:
# setfacl -m u: gacanepa: rwx/home/backups/
Zatim sa,
# edquota -u gacanepa.
Napravit ćemo mekanu granica = 900 i teško granica = 1000 blokovi (1024 bajta/blok * 1000 blokova = 1024000 bajtova = 1 MB) korištenja prostora na disku.
Također možemo postaviti granicu od 20 i 25 kao meko i tvrdo ograničenje broja datoteka koje ovaj korisnik može stvoriti.
Gore navedena naredba pokrenut će uređivač teksta ($ EDITOR) s privremenom datotekom u kojoj možemo postaviti prethodno spomenuta ograničenja:
Ove će postavke uzrokovati da se upozorenje prikaže korisniku gacanepa kad je ili stigao do 900 blokova ili 20-inodni ograničenja za početni grejs period od 7 dana.
Ako je prekomjerna kvota situacija do tada nije uklonjena (na primjer, uklanjanjem datoteka), meka granica će postalo teško ograničenje te će ovom korisniku biti onemogućeno korištenje više prostora za pohranu ili stvaranje više datoteke.
Za testiranje, neka korisnik gacanepa pokuša stvoriti prazan 2 MB naziv datoteke test1 unutra /home/backups:
# dd if =/dev/zero of =/home/backups/test1 bs = 2M count = 1. # ls -lh/home/backups/test1.
Kao što vidite, datoteka operacije pisanja ne uspijeva zbog prekoračenja kvote diska. Budući da je samo prvi 1000 KB su zapisane na disk, rezultat će u ovom slučaju najvjerojatnije biti oštećena datoteka.
Slično, možete stvoriti ACL za grupe razvojnih programera kako biste članovima te grupe dali rwx pristup /home/projects:
# setfacl -m g: programeri: rwx/home/projects/
I postavite ograničenja kvote s:
# edquota -g programera.
Baš kao što smo učinili s korisnikom gacanepa ranije.
Period odgode može se odrediti za bilo koji broj sekundi, minuta, sati, dana, tjedana ili mjeseci izvršavanjem.
# edquota -t.
i ažuriranje vrijednosti pod Blokiraj grejs period i Inode grejs period.
Za razliku od upotrebe bloka ili inode (koji su postavljeni na bazi korisnika ili grupe), razdoblje odgode je postavljeno za cijeli sustav.
Za prijavu kvota možete koristiti kvotu -u [korisnik]
ili kvota -g [grupa]
za brzi popis ili repquota -v [/path/to/datotečni sustav]
za detaljnije (detaljno) i lijepo oblikovano izvješće.
Naravno, htjet ćete zamijeniti [korisnik]
, [skupina]
, i [/path/to/datotečni sustav]
s određenim imenima korisnika / grupa i datotečnim sustavom koje želite provjeriti.
U ovom smo članku objasnili kako postaviti Popisi za kontrolu pristupa i disk kvote za korisnike i grupe. Koristeći oboje, moći ćete učinkovitije upravljati dopuštenjima i upotrebom diska.
Ako želite saznati više o kvotama, možete se obratiti na Kvota Mini-HowTo u Linux Documentation Project -u.
Nepotrebno je reći da možete računati i na nas da ćemo odgovoriti na pitanja. Samo ih pošaljite putem donjeg obrasca za komentare i bit će nam drago pogledati.