Kā iestatīt piekļuves kontroles sarakstus (ACL) un disku kvotas lietotājiem un grupām
Piekļuves kontroles saraksti (pazīstami arī kā ACL) ir Linux kodola iezīme, kas ļauj failiem un direktorijiem noteikt precīzākas piekļuves tiesības, nekā tās, kuras nosaka parastās ugo/rwx atļaujas.
Piemēram, standarta ugo/rwx atļaujas neļauj iestatīt dažādas atļaujas dažādiem atsevišķiem lietotājiem vai grupām. Ar ACL to ir salīdzinoši viegli izdarīt, kā mēs redzēsim šajā rakstā.
Failu sistēmas saderības ar ACL pārbaude
Lai nodrošinātu, ka jūsu failu sistēmas pašlaik atbalsta ACL, jums jāpārbauda, vai tās ir uzstādītas, izmantojot opciju acl. Lai to izdarītu, mēs izmantosim tune2fs ext2/3/4 failu sistēmām, kā norādīts zemāk. Nomainiet/dev/sda1 ar ierīci vai failu sistēmu, kuru vēlaties pārbaudīt:
# tune2fs -l /dev/sda1 | grep "Default mount options:"
Piezīme. Izmantojot XFS, piekļuves kontroles saraksti tiek atbalstīti ārpus kastes.
Šajā ext4 failu sistēmā mēs varam redzēt, ka ACL ir iespējoti domēnam/dev/xvda2:
# tune2fs -l /dev/xvda2 | grep "Default mount options:"
Ja iepriekš minētā komanda nenorāda, ka failu sistēma ir uzstādīta ar atbalstu ACL, tas, visticamāk, ir saistīts ar opciju noacl/etc/fstab.
Tādā gadījumā noņemiet to, atvienojiet failu sistēmu un pēc tam pievienojiet to vēlreiz vai vienkārši restartējiet sistēmu pēc izmaiņu saglabāšanas mapē/etc/fstab.
Iepazīstinām ar ACL Linux
Lai ilustrētu ACL darbību, mēs izmantosim grupu ar nosaukumu izstrādātāji un pievienosim tam lietotājus walterwhite un saulgoodman (jā, es esmu Breaking Bad ventilators!):
# groupadd developers # useradd walterwhite # useradd saulgoodman # usermod -a -G developers walterwhite # usermod -a -G developers saulgoodman
Pirms turpinām, pārbaudīsim, vai abi lietotāji ir pievienoti izstrādātāju grupai:
# id walterwhite # id saulgoodman
Tagad izveidosim direktoriju ar nosaukumu test in/mnt un iekšpusē failu ar nosaukumu acl.txt (/mnt/test/acl.txt).
Tad mēs grupas īpašnieku iestatīsim izstrādātājiem un rekursīvi mainīsim tā noklusētās ugo/rwx atļaujas uz 770 (tādējādi piešķirot lasīšanas, rakstīšanas un izpildes atļaujas, kas piešķirtas gan faila īpašniekam, gan grupas īpašniekam):
# mkdir /mnt/test # touch /mnt/test/acl.txt # chgrp -R developers /mnt/test # chmod -R 770 /mnt/test
Kā jau gaidīts, varat rakstīt uz /mnt/test/acl.txt kā valterbalts vai 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
Tik tālu, labi. Tomēr drīz mēs redzēsim problēmu, kad mums būs jāpiešķir rakstīšanas piekļuve /mnt/test/acl.txt citam lietotājam, kurš nav izstrādātāju grupā.
Standarta ugo/rwx atļaujām jaunais lietotājs būs jāpievieno izstrādātāju grupai, taču tas viņam/viņai piešķirs tādas pašas atļaujas visiem grupas īpašumā esošajiem objektiem. Tieši tur ir noderīgi ACL.
ACL iestatīšana Linux
Ir divu veidu ACL: piekļuves ACL ir (kuras tiek lietotas failam vai direktorijam) un noklusējuma (pēc izvēles) ACL, kuras var piemērot tikai direktorijai.
Ja failiem direktorijā, kurā ir iestatīta noklusējuma ACL, nav sava ACL, tie pārmanto vecāku direktorija noklusējuma ACL.
Piešķirsim lietotājam gacanepa lasīšanas un rakstīšanas piekļuvi /mnt/test/acl.txt. Pirms to izdarīsim, apskatīsim pašreizējos ACL iestatījumus šajā direktorijā ar:
# getfacl /mnt/test/acl.txt
Pēc tam mainiet faila ACL, izmantojiet u:
, kam seko lietotājvārds un : rw
, lai norādītu lasīšanas/rakstīšanas atļaujas:
# setfacl -m u:gacanepa:rw /mnt/test/acl.txt
Un vēlreiz palaidiet failā getfacl, lai salīdzinātu. Šis attēls parāda “Pirms” un “Pēc”:
# getfacl /mnt/test/acl.txt
Tālāk mums būs jādod citiem izpildīt atļaujas direktorijā/mnt/test:
# chmod +x /mnt/test
Paturiet prātā, ka, lai piekļūtu direktorija saturam, parastam lietotājam ir jāizpilda atļaujas šajā direktorijā.
Lietotājam gacanepa tagad vajadzētu būt iespējai rakstīt failā. Pārslēdzieties uz šo lietotāja kontu un izpildiet šo komandu, lai apstiprinātu:
# echo "My name is Gabriel Cánepa" >> /mnt/test/acl.txt
Lai iestatītu noklusējuma ACL direktorijai (kuru tā saturs tiks mantots, ja vien netiek pārrakstīts citādi), pirms kārtulas pievienojiet d:
un faila nosaukuma vietā norādiet direktoriju:
# setfacl -m d:o:r /mnt/test # getfacl /mnt/test/
Iepriekš norādītā ACL ļaus lietotājiem, kas nav īpašnieku grupā, piekļūt lasīšanas piekļuvei direktorija/mnt/test nākotnes saturam. Ievērojiet getfacl/mnt/test izejas atšķirību pirms un pēc izmaiņām:
Lai noņemtu noteiktu ACL, iepriekšējās komandās aizstājiet -m
ar -x
. Piemēram,
# setfacl -x d:o /mnt/test
Varat arī izmantot opciju -b
, lai vienā posmā noņemtu VISAS ACL:
# setfacl -b /mnt/test
Lai iegūtu papildinformāciju un piemērus par ACL lietošanu, lūdzu, skatiet openSUSE drošības rokasgrāmatas 10. nodaļas 2. sadaļu (bez maksas pieejama arī lejupielādei PDF formātā).
Lietotājiem un failu sistēmām iestatiet Linux diska kvotas
Krātuve ir vēl viens resurss, kas ir rūpīgi jāizmanto un jāuzrauga. Lai to izdarītu, kvotas var noteikt, pamatojoties uz failu sistēmu, vai nu atsevišķiem lietotājiem, vai grupām.
Tādējādi diskā tiek noteikts ierobežojums, kas atļauts konkrētam lietotājam vai noteiktai grupai, un jūs varat būt drošs, ka neuzmanīgs (vai nepareizi iedomāts) lietotājs nepildīs jūsu diskus.
Pirmais, kas jums jādara, lai iespējotu kvotas failu sistēmā, ir jāpiestiprina to ar opcijām usrquota vai grpquota (attiecīgi lietotāju un grupu kvotām) mapē/etc/fstab.
Piemēram, iespējosim lietotāju kvotas/dev/vg00/vol_backups un grupas kvotas projektos/dev/vg00/vol_projects.
Ņemiet vērā, ka UUID tiek izmantots katras failu sistēmas identificēšanai.
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
Atvienojiet un pārinstalējiet abas failu sistēmas:
# umount /home/projects # umount /home/backups # mount -o remount /home/projects # mount -o remount /home/backups
Pēc tam pārbaudiet, vai mount izvadā ir opcijas usrquota un grpquota (skatiet iezīmēto zemāk):
# mount | grep vg00
Visbeidzot, palaidiet šādas komandas, lai inicializētu un iespējotu kvotas:
# quotacheck -avugc # quotaon -vu /home/backups # quotaon -vg /home/projects
Tas nozīmē, ka tagad piešķirsim kvotas iepriekš pieminētajam lietotājvārdam un grupai. Vēlāk jūs varat atspējot kvotas ar kvotu izslēgšanu.
Linux diska kvotu iestatīšana
Sāksim ar lietotāja gacanepa iestatīšanu ACL/home/backups, kas viņam ļaus lasīt, rakstīt un izpildīt atļaujas šajā direktorijā:
# setfacl -m u:gacanepa:rwx /home/backups/
Tad ar
# edquota -u gacanepa
Mēs izveidosim diska vietas izmantošanas ierobežojumu = 900 un cieto robežu = 1000 bloki (1024 baiti/bloks * 1000 bloki = 1024000 baiti = 1 MB).
Mēs varam arī noteikt ierobežojumu 20 un 25 kā mīkstus un stingrus ierobežojumus failu skaitam, ko šis lietotājs var izveidot.
Iepriekš minētā komanda palaidīs teksta redaktoru ($EDITOR) ar pagaidu failu, kurā mēs varam iestatīt iepriekš minētos ierobežojumus:
Šie iestatījumi izraisīs brīdinājumu lietotājam gacanepa, kad viņš noklusējuma 7 dienu labvēlības periodā ir sasniedzis 900 bloku vai 20 inodu robežas.
Ja kvotu pārsniegšanas situācija līdz tam brīdim nav novērsta (piemēram, noņemot failus), mīkstais ierobežojums kļūs par stingro ierobežojumu, un šim lietotājam tiks liegts izmantot vairāk vietas vai izveidot vairāk failu.
Lai pārbaudītu, ļaujiet lietotājam gacanepa mēģināt izveidot tukšu 2 MB failu ar nosaukumu test1 iekšā/home/backups:
# dd if=/dev/zero of=/home/backups/test1 bs=2M count=1 # ls -lh /home/backups/test1
Kā redzat, rakstīšanas operācijas fails neizdodas, jo ir pārsniegta diska kvota. Tā kā tikai pirmie 1000 KB ir ierakstīti diskā, rezultāts šajā gadījumā, visticamāk, būs bojāts fails.
Tāpat varat izveidot ACL izstrādātāju grupām, lai šīs grupas dalībniekiem piešķirtu piekļuvi/home/projektiem:
# setfacl -m g:developers:rwx /home/projects/
Un iestatiet kvotu ierobežojumus, izmantojot:
# edquota -g developers
Tāpat kā mēs to darījām ar lietotāju gacanepa agrāk.
Labvēlības periodu var noteikt jebkuram sekunžu, minūšu, stundu, dienu, nedēļu vai mēnešu skaitam, izpildot.
# edquota -t
un vērtību atjaunināšana sadaļā Bloka labvēlības periods un Inodes labvēlības periods.
Atšķirībā no bloķēšanas vai inoda lietošanas (kas tiek iestatīts uz lietotāju vai grupu), labvēlības periods tiek noteikts visā sistēmā.
Lai ziņotu par kvotām, varat izmantot kvotu -u [lietotājs]
vai quota -g [group]
ātram sarakstam vai repquota -v [/ path/to/filesystem]
detalizētākam (daudzveidīgam) un labi formatētam pārskatam.
Protams, jūs vēlaties aizstāt [user]
, [group]
un [/ path/to/filesystem]
ar konkrētu lietotāju/grupu nosaukumi un failu sistēma, kuru vēlaties pārbaudīt.
Kopsavilkums
Šajā rakstā mēs esam paskaidrojuši, kā iestatīt piekļuves kontroles sarakstus un disku kvotas lietotājiem un grupām. Izmantojot abus, jūs varēsiet efektīvāk pārvaldīt atļaujas un diska lietojumu.
Ja vēlaties uzzināt vairāk par kvotām, Linux dokumentācijas projektā varat atsaukties uz Quota Mini-HowTo.
Lieki piebilst, ka jūs varat arī paļauties, ka mēs atbildēsim uz jautājumiem. Vienkārši iesniedziet tos, izmantojot zemāk esošo komentāru veidlapu, un mēs būsim priecīgi to apskatīt.