Jinsi ya Kuweka Orodha za Udhibiti wa Ufikiaji (ACLs) na Sehemu za Diski kwa Watumiaji na Vikundi


Orodha za Udhibiti wa Ufikiaji (pia hujulikana kama ACLs) ni kipengele cha kinu cha Linux ambacho huruhusu kufafanua haki za ufikiaji za faili na saraka kuliko zile zilizobainishwa na ruhusa za kawaida za ugo/rwx.

Kwa mfano, ruhusa za kawaida za ugo/rwx haziruhusu kuweka ruhusa tofauti kwa watumiaji au vikundi mbalimbali. Kwa ACLs hii ni rahisi kufanya, kama tutakavyoona katika makala hii.

Kuangalia Utangamano wa Mfumo wa Faili na ACL

Ili kuhakikisha kuwa mifumo ya faili zako kwa sasa inaauni ACL, unapaswa kuangalia kuwa zimepachikwa kwa kutumia chaguo la acl. Ili kufanya hivyo, tutatumia tune2fs kwa mifumo ya faili ext2/3/4 kama ilivyoonyeshwa hapa chini. Badilisha /dev/sda1 na kifaa au mfumo wa faili unaotaka kuangalia:

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

Kumbuka: Kwa XFS, Orodha za Udhibiti wa Ufikiaji zinatumika nje ya boksi.

Katika mfumo ufuatao wa faili wa ext4, tunaweza kuona kwamba ACL zimewezeshwa kwa /dev/xvda2:

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

Ikiwa amri iliyo hapo juu haionyeshi kuwa mfumo wa faili umewekwa kwa usaidizi wa ACLs, kuna uwezekano mkubwa kutokana na chaguo la noacl kuwepo /etc/fstab.

Katika hali hiyo, iondoe, uondoe mfumo wa faili, na kisha uipandishe tena, au fungua upya mfumo wako baada ya kuhifadhi mabadiliko kwa /etc/fstab.

Tunaanzisha ACL kwenye Linux

Ili kuonyesha jinsi ACLs hufanya kazi, tutatumia kikundi kinachoitwa wasanidi programu na kuongeza watumiaji walterwhite na saulgoodman (ndiyo, mimi ni shabiki wa Breaking Bad!) kwake.:

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

Kabla hatujaendelea, hebu tuthibitishe kuwa watumiaji wote wawili wameongezwa kwenye kikundi cha wasanidi programu:

# id walterwhite
# id saulgoodman

Hebu sasa tuunde saraka inayoitwa test katika /mnt, na faili inayoitwa acl.txt ndani (/mnt/test/acl.txt).

Kisha tutaweka mmiliki wa kikundi kuwa wasanidi na kubadilisha ruhusa zake chaguo-msingi za ugo/rwx hadi 770 (hivyo kutoa ruhusa za kusoma, kuandika na kutekeleza zilizotolewa kwa mmiliki na mmiliki wa kikundi cha faili):

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

Kama inavyotarajiwa, unaweza kuandika kwa /mnt/test/acl.txt kama walterwhite au 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

Hadi sasa nzuri sana. Hata hivyo, hivi karibuni tutaona tatizo tunapohitaji kutoa ufikiaji wa kuandika kwa /mnt/test/acl.txt kwa mtumiaji mwingine ambaye hayuko katika kikundi cha wasanidi.

Ruhusa za kawaida za ugo/rwx zitahitaji mtumiaji mpya aongezwe kwenye kikundi cha wasanidi programu, lakini hiyo ingempa ruhusa sawa juu ya vitu vyote vinavyomilikiwa na kikundi. Hapo ndipo ACL zinapofaa.

Kuweka ACL katika Linux

Kuna aina mbili za ACL: ACL za ufikiaji ni (ambazo zinatumika kwa faili au saraka), na ACL chaguo-msingi (ya hiari), ambazo zinaweza kutumika kwenye saraka pekee.

Ikiwa faili zilizo ndani ya saraka ambapo ACL chaguo-msingi imewekwa hazina ACL yake, zitarithi ACL chaguo-msingi ya saraka kuu kuu.

Hebu tumpe mtumiaji gacanepa ufikiaji wa kusoma na kuandika kwa /mnt/test/acl.txt. Kabla ya kufanya hivyo, hebu tuangalie mipangilio ya sasa ya ACL kwenye saraka hiyo na:

# getfacl /mnt/test/acl.txt

Kisha ubadilishe ACL kwenye faili, tumia u: ikifuatiwa na jina la mtumiaji na :rw ili kuonyesha ruhusa za kusoma/kuandika:

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

Na endesha getfacl kwenye faili tena ili kulinganisha. Picha ifuatayo inaonyesha \Kabla na \Baadaye:

# getfacl /mnt/test/acl.txt

Ifuatayo, tutahitaji kuwapa wengine ruhusa ya kutekeleza kwenye saraka ya /mnt/test:

# chmod +x /mnt/test

Kumbuka kwamba ili kufikia yaliyomo kwenye saraka, mtumiaji wa kawaida anahitaji kutekeleza ruhusa kwenye saraka hiyo.

Mtumiaji gacanepa sasa anapaswa kuwa na uwezo wa kuandika kwa faili. Badili kwa akaunti hiyo ya mtumiaji na utekeleze amri ifuatayo ili kuthibitisha:

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

Ili kuweka ACL chaguo-msingi kwenye saraka (ambayo yaliyomo ndani yake yatarithi isipokuwa kufutwa vinginevyo), ongeza d: kabla ya sheria na ubainishe saraka badala ya jina la faili:

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

ACL iliyo hapo juu itaruhusu watumiaji wasio katika kikundi cha wamiliki kupata ufikiaji wa kusoma kwa yaliyomo ya baadaye ya saraka ya /mnt/test. Kumbuka tofauti katika matokeo ya getfacl /mnt/test kabla na baada ya mabadiliko:

Ili kuondoa ACL mahususi, badilisha -m katika amri zilizo hapo juu na -x. Kwa mfano,

# setfacl -x d:o /mnt/test

Vinginevyo, unaweza pia kutumia chaguo la -b kuondoa ACL ZOTE kwa hatua moja:

# setfacl -b /mnt/test

Kwa maelezo zaidi na mifano kuhusu matumizi ya ACL, tafadhali rejelea sura ya 10, sehemu ya 2, ya Mwongozo wa Usalama wa openSUSE (pia unapatikana kwa kupakuliwa bila gharama katika umbizo la PDF).

Weka Viwango vya Diski ya Linux kwenye Watumiaji na Mifumo ya Faili

Nafasi ya kuhifadhi ni rasilimali nyingine ambayo lazima itumike kwa uangalifu na kufuatiliwa. Ili kufanya hivyo, upendeleo unaweza kuwekwa kwa msingi wa mfumo wa faili, ama kwa watumiaji binafsi au kwa vikundi.

Kwa hivyo, kikomo kinawekwa kwenye matumizi ya diski kuruhusiwa kwa mtumiaji aliyepewa au kikundi maalum, na unaweza kuwa na uhakika kwamba disks zako hazitajazwa kwa uwezo na mtumiaji asiyejali (au asiye na nia).

Jambo la kwanza lazima ufanye ili kuwezesha upendeleo kwenye mfumo wa faili ni kuiweka na usrquota au grpquota (kwa upendeleo wa watumiaji na kikundi, mtawaliwa) katika /etc/fstab.

Kwa mfano, hebu tuwashe upendeleo kulingana na mtumiaji kwenye /dev/vg00/vol_backups na upendeleo kulingana na kikundi kwenye /dev/vg00/vol_projects.

Kumbuka kuwa UUID inatumika kutambua kila mfumo wa faili.

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

Fungua na uweke upya mifumo yote miwili ya faili:

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

Kisha angalia kuwa chaguzi za usrquota na grpquota zipo kwenye matokeo ya mount (tazama iliyoangaziwa hapa chini):

# mount | grep vg00

Hatimaye, endesha amri zifuatazo ili kuanzisha na kuwezesha upendeleo:

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

Hiyo ilisema, hebu sasa tupe upendeleo kwa jina la mtumiaji na kikundi tulichotaja hapo awali. Baadaye unaweza kulemaza upendeleo na mgawo.

Kuweka Viwango vya Diski ya Linux

Wacha tuanze kwa kuweka ACL kwenye /home/chelezo kwa mtumiaji gacanepa, ambayo itampa kusoma, kuandika, na kutekeleza ruhusa kwenye saraka hiyo:

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

Kisha na,

# edquota -u gacanepa

Tutafanya kikomo laini = 900 na kikomo ngumu = 1000 vitalu (1024 bytes/block * 1000 vitalu = 1024000 bytes = 1 MB) ya matumizi ya nafasi ya disk.

Tunaweza pia kuweka kikomo cha 20 na 25 kama vikomo laini na ngumu kwenye idadi ya faili ambazo mtumiaji huyu anaweza kuunda.

Amri iliyo hapo juu itazindua kihariri cha maandishi ($EDITOR) na faili ya muda ambapo tunaweza kuweka mipaka iliyotajwa hapo awali:

Mipangilio hii itasababisha onyo kuonyeshwa kwa mtumiaji gacanepa wakati aidha amefikia kikomo cha block 900 au 20-inodi kwa muda wa matumizi chaguomsingi wa siku 7.

Ikiwa hali ya mgawo wa ziada haijaondolewa kufikia wakati huo (kwa mfano, kwa kuondoa faili), kikomo laini kitakuwa kikomo ngumu na mtumiaji huyu atazuiwa kutumia nafasi zaidi ya kuhifadhi au kuunda faili zaidi.

Ili kujaribu, wacha turuhusu mtumiaji gacanepa ajaribu kuunda faili tupu ya MB 2 inayoitwa test1 ndani /home/chelezo:

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

Kama unaweza kuona, faili ya operesheni ya uandishi inashindwa kwa sababu ya upendeleo wa diski umezidishwa. Kwa kuwa tu 1000 KB ya kwanza imeandikwa kwenye diski, matokeo katika kesi hii yatakuwa na uwezekano mkubwa wa faili iliyoharibika.

Vile vile, unaweza kuunda ACL ya vikundi vya wasanidi programu ili kuwapa washiriki wa kikundi hicho rwx ufikiaji wa /home/projects:

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

Na weka mipaka ya upendeleo na:

# edquota -g developers

Kama vile tulivyofanya na mtumiaji gacanepa hapo awali.

Kipindi cha matumizi kinaweza kubainishwa kwa idadi yoyote ya sekunde, dakika, saa, siku, wiki au miezi kwa kutekeleza.

# edquota -t

na kusasisha thamani chini ya kipindi cha matumizi ya Block na kipindi cha matumizi ya Inode.

Kinyume na uzuiaji au utumiaji wa ingizo (ambazo zimewekwa kwa msingi wa mtumiaji au kikundi), muda wa matumizi umewekwa kwa mfumo mzima.

Ili kuripoti nafasi, unaweza kutumia mgawo -u [user] au quota -g [group] kwa orodha ya haraka au repquota -v [/path/to /mfumo wa faili] kwa ripoti ya kina zaidi (kitenzi) na iliyoumbizwa vyema.

Bila shaka, utataka kubadilisha [mtumiaji], [group], na [/path/to/filesystem] na mtumiaji maalum/majina ya kikundi na mfumo wa faili unaotaka kuangalia.

Muhtasari

Katika makala hii tumeelezea jinsi ya kuweka Orodha za Udhibiti wa Ufikiaji na upendeleo wa diski kwa watumiaji na vikundi. Kwa kutumia zote mbili, utaweza kudhibiti ruhusa na utumiaji wa diski kwa ufanisi zaidi.

Iwapo ungependa kujifunza zaidi kuhusu upendeleo, unaweza kurejelea Quota Mini-HowTo katika Mradi wa Hati za Linux.

Bila kusema, unaweza pia kutegemea sisi kujibu maswali. Wawasilishe tu kwa kutumia fomu ya maoni iliyo hapa chini na tutafurahi zaidi kuziangalia.