Kaip nustatyti prieigos kontrolės sąrašus (ACL) ir diskų kvotas vartotojams ir grupėms


Prieigos kontrolės sąrašai (taip pat žinomi kaip ACL) yra „Linux“ branduolio bruožas, leidžiantis apibrėžti daugiau išsamių failų ir katalogų prieigos teisių, nei nurodoma naudojant įprastas „ugo/rwx“ teises.

Pavyzdžiui, standartiniai „ugo/rwx“ leidimai neleidžia nustatyti skirtingų leidimų skirtingiems vartotojams ar grupėms. Su ACL tai palyginti lengva padaryti, kaip pamatysime šiame straipsnyje.

Failų sistemos suderinamumo su ACL tikrinimas

Norėdami įsitikinti, kad jūsų failų sistemos šiuo metu palaiko ACL, turėtumėte patikrinti, ar jie buvo prijungti, naudodami parinktį acl. Norėdami tai padaryti, „ext2/3/4“ failų sistemoms naudosime „tune2fs“, kaip nurodyta toliau. Pakeiskite/dev/sda1 į įrenginį ar failų sistemą, kurią norite patikrinti:

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

Pastaba: Naudojant „XFS“, prieigos kontrolės sąrašai palaikomi iš dėžutės.

Šioje „ext4“ failų sistemoje galime pamatyti, kad ACL buvo įgalintos/dev/xvda2:

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

Jei pirmiau nurodyta komanda nenurodo, kad failų sistema buvo įdiegta palaikant ACL, tai greičiausiai yra dėl to, kad „noacl“ parinktis yra/etc/fstab.

Tokiu atveju jį pašalinkite, atjunkite failų sistemą ir vėl įdiekite arba paprasčiausiai perkraukite sistemą, išsaugoję pakeitimus į/etc/fstab.

Pristatome ACL sistemoje „Linux“

Norėdami iliustruoti, kaip veikia ACL, naudosime grupę, pavadintą kūrėjai, ir pridėsime vartotojus walterwhite ir saulgoodman (taip, aš esu „Breaking Bad“ gerbėjas!):

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

Prieš tęsdami, patikrinkime, ar abu vartotojai buvo pridėti prie kūrėjų grupės:

# id walterwhite
# id saulgoodman

Dabar sukurkime katalogą, pavadintą test in/mnt, ir failą pavadinimu acl.txt viduje (/mnt/test/acl.txt).

Tada nustatysime grupės savininką kūrėjams ir pakeisime jo numatytuosius „ugo/rwx“ leidimus rekursyviai į 770 (taip suteikdami skaitymo, rašymo ir vykdymo teises, suteiktas ir failo savininkui, ir grupės savininkui):

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

Kaip ir tikėtasi, galite parašyti /mnt/test/acl.txt kaip walterwhite arba 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

Kol kas viskas gerai. Tačiau netrukus pastebėsime problemą, kai reikės suteikti rašymo prieigą prie /mnt/test/acl.txt kitam vartotojui, kuris nėra kūrėjų grupėje.

Standartiniams „ugo/rwx“ leidimams reikės, kad naujas vartotojas būtų įtrauktas į kūrėjų grupę, tačiau tai suteiktų jam vienodus leidimus visiems grupei priklausantiems objektams. Būtent čia praverčia ACL.

ACL nustatymas „Linux“

Yra dviejų tipų ACL: prieigos ACL yra (kurios taikomos failui ar katalogui) ir numatytosios (neprivalomos) ACL, kurios gali būti taikomos tik katalogui.

Jei failai kataloge, kuriame nustatytas numatytasis ACL, neturi savo ACL, jie paveldi numatytąjį pagrindinio katalogo ACL.

Suteikime vartotojui „gacanepa“ skaitymo ir rašymo prieigą prie /mnt/test/acl.txt. Prieš tai atlikdami, pažvelkime į dabartinius ACL nustatymus tame kataloge:

# getfacl /mnt/test/acl.txt

Tada pakeiskite failo ACL, naudokite u: , paskui vartotojo vardą ir : rw , nurodydami skaitymo/rašymo teises:

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

Ir dar kartą paleiskite failą „getfacl“, kad galėtumėte palyginti. Šis paveikslėlis rodo „Prieš“ ir „Po“:

# getfacl /mnt/test/acl.txt

Tada mums reikės suteikti kitiems vykdyti leidimus kataloge/mnt/test:

# chmod +x /mnt/test

Atminkite, kad norint pasiekti katalogo turinį, įprastam vartotojui reikia vykdyti to katalogo leidimus.

Vartotojas „gacanepa“ dabar turėtų galėti rašyti į failą. Perjunkite į tą vartotojo abonementą ir atlikite šią komandą, kad patvirtintumėte:

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

Norėdami nustatyti numatytąjį ACL katalogą (kurį jo turinys paveldės, nebent perrašoma kitaip), prieš taisyklę pridėkite d: ir vietoj failo pavadinimo nurodykite katalogą:

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

Aukščiau pateiktas ACL leis vartotojams, nepriklausantiems savininkų grupei, skaitymo prieigą prie būsimo katalogo/mnt/test turinio. Atkreipkite dėmesį į getfacl/mnt/test išvesties skirtumą prieš ir po pakeitimo:

Norėdami pašalinti konkretų ACL, aukščiau esančiose komandose pakeiskite -m -x . Pavyzdžiui,

# setfacl -x d:o /mnt/test

Arba taip pat galite naudoti parinktį -b , jei norite pašalinti VISUS ACL vienu veiksmu:

# setfacl -b /mnt/test

Norėdami gauti daugiau informacijos ir pavyzdžių apie ACL naudojimą, žiūrėkite „openSUSE“ saugos vadovo 10 skyriaus 2 skyrių (taip pat galite nemokamai atsisiųsti PDF formatu).

Nustatykite „Linux“ disko kvotas vartotojams ir failų sistemoms

Sandėliavimo vieta yra dar vienas šaltinis, kurį reikia atidžiai naudoti ir stebėti. Norėdami tai padaryti, kvotos gali būti nustatomos pagal failų sistemą atskiriems vartotojams arba grupėms.

Taigi tam tikram vartotojui ar konkrečiai grupei leidžiamas disko naudojimas yra ribojamas, ir jūs galite būti tikri, kad neatsargus (arba netinkamai) vartotojas jūsų diskus neužpildys.

Pirmas dalykas, kurį turite padaryti, kad įgalintumėte kvotas failų sistemoje, yra prijungti jį su „usrquota“ arba „grpquota“ (atitinkamai vartotojo ir grupės kvotoms) parinktimis/etc/fstab.

Pavyzdžiui, įgalinkime vartotojo kvotas/dev/vg00/vol_backups ir grupines kvotas projektuose/dev/vg00/vol_projects.

Atminkite, kad UUID naudojamas kiekvienai failų sistemai identifikuoti.

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

Atjunkite ir sumontuokite abi failų sistemas:

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

Tada patikrinkite, ar „mount“ išvestyje yra „usrquota“ ir „grpquota“ parinktys (žr. Paryškintą toliau):

# mount | grep vg00

Galiausiai paleiskite šias komandas, norėdami inicijuoti ir įgalinti kvotas:

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

Taigi, dabar priskirkime kvotas anksčiau minėtam vartotojo vardui ir grupei. Vėliau galite išjungti kvotas su kvota.

„Linux“ disko kvotų nustatymas

Pradėkime nustatydami vartotojo gacanepa ACL/home/backups, kuri suteiks jam skaitymo, rašymo ir vykdymo teises tame kataloge:

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

Tada su

# edquota -u gacanepa

Mes nustatysime, kad minkštoji riba = 900, o kietoji - 1000 blokų (1024 baitai/blokas * 1000 blokų = 1024000 baitai = 1 MB) vietos diske.

Taip pat galime nustatyti 20 ir 25 ribas, nes failų, kuriuos gali sukurti šis vartotojas, apribojimai yra minkšti ir griežti.

Pirmiau nurodyta komanda paleis teksto redaktorių ($EDITOR) su laikinu failu, kuriame galėsime nustatyti anksčiau minėtas ribas:

Šie nustatymai sukels įspėjimą vartotojui „gacanepa“, kai jis pasieks 900 blokų arba 20 inodų ribas numatytam 7 dienų atidėjimo laikotarpiui.

Jei iki šiol kvotų perviršis nebus pašalintas (pvz., Pašalinant failus), „minkšta“ riba taps griežta riba ir šiam vartotojui bus draudžiama naudoti daugiau vietos ar sukurti daugiau failų.

Norėdami išbandyti, leiskime vartotojui gacanepa pabandyti sukurti tuščią 2 MB failą, pavadintą test1, viduje/home/backups:

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

Kaip matote, įrašymo operacijos failas nepavyksta dėl viršytos disko kvotos. Kadangi tik pirmieji 1000 KB yra įrašyti į diską, rezultatas šiuo atveju greičiausiai bus sugadintas failas.

Panašiai galite sukurti ACL kūrėjų grupėms, kad šios grupės nariams suteiktumėte prieigą prie/home/projects:

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

Kvotos apribojimus nustatykite:

# edquota -g developers

Kaip ir anksčiau su vartotoju gacanepa.

Malonės laikotarpis gali būti nurodytas bet kokiam sekundžių, minučių, valandų, dienų, savaičių ar mėnesių skaičiui vykdant.

# edquota -t

ir reikšmių atnaujinimas laukeliuose „Blokuoti atidėjimo laikotarpį“ ir „Inode“.

Priešingai nei blokų ar inodo naudojimas (kurie nustatomi pagal vartotoją ar grupę), lengvatinis laikotarpis nustatomas visoje sistemoje.

Norėdami pranešti apie kvotas, galite naudoti kvotą -u [user] arba quota -g [group] , jei norite pateikti greitą sąrašą, arba repquota -v [/ path/to/filesystem] , jei norite gauti išsamesnę (daugžodžiausią) ir gražiai suformatuotą ataskaitą.

Žinoma, norėsite pakeisti [user] , [group] ir [/ path/to/filesystem] konkrečiu vartotoju/grupės pavadinimai ir failų sistema, kurią norite patikrinti.

Santrauka

Šiame straipsnyje mes paaiškinome, kaip nustatyti prieigos kontrolės sąrašus ir diskų kvotas vartotojams ir grupėms. Naudodamiesi abiem, galėsite efektyviau valdyti leidimus ir disko naudojimą.

Jei norite sužinoti daugiau apie kvotas, „Linux“ dokumentacijos projekte galite rasti „Quota Mini-HowTo“.

Nereikia nė sakyti, kad taip pat galite tikėtis, jog mes atsakysime į klausimus. Tiesiog pateikite juos naudodamiesi žemiau esančia komentaro forma ir mes su malonumu pažvelgsime.