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.