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.