Kuidas määrata kasutajatele ja gruppidele juurdepääsukontrolli loendeid (ACL) ja kettakvoote
Juurdepääsukontrolli loendid (tuntud ka kui ACL-id) on Linuxi kerneli funktsioon, mis võimaldab määratleda failidele ja kataloogidele täpsemaid juurdepääsuõigusi kui need, mida määravad tavalised ugo/rwx-õigused.
Näiteks ei võimalda standardsed ugo/rwx-õigused seada erinevatele kasutajatele või rühmadele erinevaid õigusi. ACL-ide abil on seda suhteliselt lihtne teha, nagu näeme sellest artiklist.
Failisüsteemi ühilduvuse kontrollimine ACL-idega
Veendumaks, et teie failisüsteemid toetavad praegu ACL-e, peaksite kontrollima, kas need on paigaldatud suvandiga acl. Selleks kasutame ext2/3/4 failisüsteemide jaoks tune2fs, nagu allpool näidatud. Asendage/dev/sda1 kontrollitava seadme või failisüsteemiga:
# tune2fs -l /dev/sda1 | grep "Default mount options:"
Märkus. XFS-i puhul on juurdepääsukontrolli loendeid toetatud kastist välja.
Järgmises ext4-failisüsteemis näeme, et ACL-id on/dev/xvda2 jaoks lubatud:
# tune2fs -l /dev/xvda2 | grep "Default mount options:"
Kui ülaltoodud käsk ei osuta, et failisüsteem on ühendatud ACL-ide toega, on see tõenäoliselt tingitud valikust noacl kataloogis/etc/fstab.
Sel juhul eemaldage see, ühendage failisüsteem lahti ja seejärel ühendage see uuesti või taaskäivitage süsteem pärast muudatuste salvestamist faili/etc/fstab.
Tutvustame Linuxis ACL-e
ACL-ide töö illustreerimiseks kasutame arendajate nimelist rühma ja lisame sellele kasutajad walterwhite ja saulgoodman (jah, ma olen Breaking Badi fänn!):
# groupadd developers # useradd walterwhite # useradd saulgoodman # usermod -a -G developers walterwhite # usermod -a -G developers saulgoodman
Enne jätkamist kontrollime, kas mõlemad kasutajad on arendajate rühma lisatud:
# id walterwhite # id saulgoodman
Loome nüüd kataloogi nimega test/mnt ja sees oleva faili acl.txt (/mnt/test/acl.txt).
Seejärel määrame rühma omaniku arendajatele ja muudame selle ugo/rwx vaikelubadeks rekursiivselt 770 (andes nii faili omanikule kui ka rühma omanikule antud lugemis-, kirjutamis- ja täitmisõigused):
# mkdir /mnt/test # touch /mnt/test/acl.txt # chgrp -R developers /mnt/test # chmod -R 770 /mnt/test
Ootuspäraselt võite kirjutada aadressile /mnt/test/acl.txt kui walterwhite või 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
Siiamaani on kõik korras. Kuid peagi näeme probleemi, kui peame andma kirjutusõiguse /mnt/test/acl.txt teisele kasutajale, kes ei kuulu arendajate rühma.
Tavapärased ugo/rwx-õigused nõuavad uue kasutaja lisamist arendajate rühma, kuid see annaks talle samad õigused kõigile grupile kuuluvatele objektidele. Just seal on ACL-id kasulikud.
ACL-ide määramine Linuxis
ACL-sid on kahte tüüpi: juurdepääsu ACL-id on (mida rakendatakse failile või kataloogile) ja vaikimisi (valikulised) ACL-id, mida saab rakendada ainult kataloogidele.
Kui kataloogis, kus vaikimisi ACL on määratud, pole failidel oma ACL-i, pärivad nad oma vanema kataloogi ACL-i vaikeloendi.
Andkem kasutajale gacanepa lugemis- ja kirjutusjuurdepääs /mnt/test/acl.txt. Enne seda vaatame selle kataloogi praeguseid ACL-seadeid järgmiselt:
# getfacl /mnt/test/acl.txt
Seejärel muutke faili ACL-e, lugemis-/kirjutamisõiguste tähistamiseks kasutage u:
, millele järgneb kasutajanimi ja : rw
:
# setfacl -m u:gacanepa:rw /mnt/test/acl.txt
Ja käivitage failis uuesti getfacl, et seda võrrelda. Järgmine pilt näitab\"Enne" ja\"Pärast":
# getfacl /mnt/test/acl.txt
Järgmisena peame andma teistele kataloogis/mnt/test õigused käivitamiseks:
# chmod +x /mnt/test
Pidage meeles, et kataloogi sisule juurdepääsuks vajab tavakasutaja selles kataloogis õigusi.
Kasutaja gacanepa peaks nüüd saama faili kirjutada. Lülitage sellele kasutajakontole ja täitmiseks kinnitage järgmine käsk:
# echo "My name is Gabriel Cánepa" >> /mnt/test/acl.txt
Vaikimisi ACL-i määramiseks kataloogile (mille selle sisu pärib, kui ei kirjutata teisiti), lisage reegli ette d:
ja määrake failinime asemel kataloog:
# setfacl -m d:o:r /mnt/test # getfacl /mnt/test/
Ülaltoodud ACL võimaldab kasutajatel, kes pole omanike rühmas, olla lugemisõigus kataloogi/mnt/test tulevasele sisule. Pange tähele getfacl/mnt/test väljundi erinevust enne ja pärast muudatust:
Konkreetse ACL-i eemaldamiseks asendage ülaltoodud käskudes -m
-x
-ga. Näiteks,
# setfacl -x d:o /mnt/test
Teise võimalusena saate KÕIK ACL-id ühe sammu eemaldamiseks kasutada ka valikut -b
:
# setfacl -b /mnt/test
Lisateavet ja näiteid ACL-ide kasutamise kohta leiate openSUSE turvajuhendi 10. peatüki 2. jaotisest (saadaval tasuta alla laadida ka PDF-vormingus).
Määrake kasutajatele ja failisüsteemidele Linuxi kettakvoodid
Hoiuruum on veel üks ressurss, mida tuleb hoolikalt kasutada ja jälgida. Selleks saab kvoodid määrata failisüsteemi alusel kas üksikutele kasutajatele või rühmadele.
Seega seatakse antud kasutajale või konkreetsele rühmale lubatud kettakasutusele piirang ja võite olla kindel, et hooletu (või tahtmatult) kasutaja ei täida teie kettaid täis.
Esimene asi, mida peate kvootide lubamiseks failisüsteemis tegema, on selle ühendamine suvanditega usrquota või grpquota (vastavalt kasutajate ja rühmade kvootide jaoks) kataloogis/etc/fstab.
Lubame näiteks kasutajapõhised kvoodid/dev/vg00/vol_backups ja rühmapõhised kvoodid projektidel/dev/vg00/vol_projects.
Pange tähele, et UUID-d kasutatakse iga failisüsteemi tuvastamiseks.
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
Mõlemad failisüsteemid eemaldage ja ühendage uuesti:
# umount /home/projects # umount /home/backups # mount -o remount /home/projects # mount -o remount /home/backups
Seejärel kontrollige, kas mount väljundis on suvandid usrquota ja grpquota (vt allpool esile tõstetud):
# mount | grep vg00
Lõpuks käivitage kvootide lähtestamiseks ja lubamiseks järgmised käsud:
# quotacheck -avugc # quotaon -vu /home/backups # quotaon -vg /home/projects
See tähendab, et määragem nüüd kvoodid varem mainitud kasutajanimele ja rühmale. Hiljem saate kvoodid keelata koos kvoodiga.
Linuxi kettakvootide määramine
Alustame kasutaja gacanepa ACL-i seadistamisest/home/backups, mis annab talle selles kataloogis lugemis-, kirjutamis- ja täitmisõigused:
# setfacl -m u:gacanepa:rwx /home/backups/
Siis koos
# edquota -u gacanepa
Teeme kettaruumi kasutamise pehme limiidi = 900 ja kõva piiri = 1000 plokki (1024 baiti/plokk * 1000 plokki = 1024000 baiti = 1 MB).
Samuti võime seada 20 ja 25 piirmäära pehmete ja raskete piirangutena failide arvule, mida see kasutaja saab luua.
Ülaltoodud käsk käivitab tekstiredaktori ($EDITOR) ajutise failiga, kus saame seada varem mainitud piirangud:
Nende seadete korral kuvatakse kasutajale gacanepa hoiatus, kui ta on 7-päevase vaikeperioodi jooksul saavutanud 900-ploki või 20-inoodi piirid.
Kui kvoodi ületamise olukorda pole selleks ajaks kõrvaldatud (näiteks failide eemaldamise teel), muutub pehmeks limiidiks kõva limiit ja sellel kasutajal ei lubata kasutada rohkem salvestusruumi ega luua rohkem faile.
Testimiseks laseme kasutajal gacanepal luua/home/backups tühi 2 MB fail nimega test1:
# dd if=/dev/zero of=/home/backups/test1 bs=2M count=1 # ls -lh /home/backups/test1
Nagu näete, ebaõnnestub kirjutamisoperatsiooni fail kettakvoodi ületamise tõttu. Kuna kettale on kirjutatud ainult esimesed 1000 KB, on tulemuseks antud juhul tõenäoliselt rikutud fail.
Samamoodi saate luua arendajate rühmadele ACL-i, et anda selle rühma liikmetele juurdepääs/home/projektidele:
# setfacl -m g:developers:rwx /home/projects/
Ja määrake kvoodipiirangud järgmiselt:
# edquota -g developers
Täpselt nii nagu me tegime varem kasutaja gacanepaga.
Ajapikenduse saab määrata mis tahes sekundite, minutite, tundide, päevade, nädalate või kuude arvuks.
# edquota -t
ja väärtuste värskendamine jaotistes Blokeeri ajaperiood ja Inode ajapikendus.
Erinevalt ploki või inoodi kasutamisest (mis määratakse kasutaja või grupi põhiselt), määratakse ajapikendus kogu süsteemile.
Kvootidest teatamiseks võite kiirloendi jaoks kasutada kvoodi -u [kasutaja]
või quota -g [group]
või repquota -v [/ path/to/filesystem]
üksikasjalikuma (üksikasjalikuma) ja kenasti vormindatud aruande jaoks.
Muidugi soovite asendada [kasutaja]
, [group]
ja [/ path/to/failisüsteem]
konkreetse kasutajaga/rühmade nimed ja failisüsteem, mida soovite kontrollida.
Kokkuvõte
Selles artiklis oleme selgitanud, kuidas seadistada kasutajatele ja rühmadele juurdepääsukontrolli loendid ja kettakvoodid. Mõlemat kasutades saate tõhusamalt lubasid ja kettakasutust hallata.
Kui soovite kvootide kohta lisateavet saada, lugege Linuxi dokumentatsiooniprojekti Quota Mini-HowTo.
Ütlematagi selge, et võite ka loota, et me küsimustele vastame. Esitage need lihtsalt alloleva kommentaarivormi abil ja meil on hea meel seda vaadata.