Ruhusa katika Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Salaam wote. Hii ni tafsiri ya makala kutoka kwa kitabu RedHat RHCSA RHCE 7 RedHat Enterprise Linux 7 EX200 na EX300.

Sukuma: Natumaini makala hiyo itakuwa muhimu sio tu kwa Kompyuta, lakini pia itasaidia wasimamizi wenye ujuzi zaidi kuboresha ujuzi wao.

Basi twende.

Ruhusa katika Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Ili kufikia faili katika Linux, ruhusa hutumiwa. Ruhusa hizi zimepewa vitu vitatu: mmiliki wa faili, mmiliki wa kikundi, na kitu kingine (yaani, kila mtu mwingine). Katika makala haya, utajifunza jinsi ya kutumia ruhusa.

Makala haya yanaanza kwa muhtasari wa dhana za kimsingi, ikifuatiwa na majadiliano ya Ruhusa Maalum na Orodha za Udhibiti wa Ufikiaji (ACLs). Mwishoni mwa makala haya, tunashughulikia uwekaji wa ruhusa chaguo-msingi kupitia umask, pamoja na kudhibiti sifa za mtumiaji zilizopanuliwa.

Usimamizi wa umiliki wa faili

Kabla ya kujadili ruhusa, unapaswa kufahamu jukumu la mmiliki wa faili na saraka. Umiliki wa faili na saraka ni muhimu ili kushughulikia ruhusa. Katika sehemu hii, utajifunza kwanza jinsi unaweza kuona mmiliki. Kisha utajifunza jinsi ya kubadilisha mmiliki na mtumiaji wa kikundi kwa faili na saraka.

Inaonyesha mmiliki wa faili au saraka

Katika Linux, kila faili na kila saraka ina wamiliki wawili: mtumiaji na mmiliki wa kikundi.

Wamiliki hawa huwekwa wakati faili au saraka imeundwa. Mtumiaji anayeunda faili anakuwa mmiliki wa faili hiyo, na kikundi cha msingi ambacho mtumiaji huyohuo yuko nacho pia huwa mmiliki wa faili hiyo. Ili kubaini kama wewe, kama mtumiaji, una ruhusa ya kufikia faili au saraka, ganda hukagua umiliki.

Hii hutokea kwa utaratibu ufuatao:

  1. Gamba hukagua ili kuona ikiwa wewe ndiye mmiliki wa faili unayotaka kufikia. Ikiwa wewe ndiye mmiliki, unapata ruhusa na ganda huacha kuangalia.
  2. Ikiwa wewe si mmiliki wa faili, shell itaangalia ili kuona kama wewe ni mwanachama wa kikundi ambacho kina ruhusa kwenye faili. Ikiwa wewe ni mshiriki wa kikundi hiki, utafikia faili kwa vibali ambavyo kikundi kimeweka, na shell itaacha kuangalia.
  3. Ikiwa wewe si mtumiaji wala si mmiliki wa kikundi, unapewa haki za watumiaji wengine (Nyingine).

Ili kuona kazi za mmiliki wa sasa, unaweza kutumia amri ls -l. Amri hii inaonyesha mtumiaji na mmiliki wa kikundi. Hapo chini unaweza kuona mipangilio ya mmiliki ya saraka kwenye saraka ya nyumbani.

[root@server1 home]# ls -l
total 8
drwx------. 3  bob            bob            74     Feb   6   10:13 bob
drwx------. 3  caroline       caroline       74     Feb   6   10:13 caroline
drwx------. 3  fozia          fozia          74     Feb   6   10:13 fozia
drwx------. 3  lara           lara           74     Feb   6   10:13 lara
drwx------. 5  lisa           lisa           4096   Feb   6   10:12 lisa
drwx------. 14 user           user           4096   Feb   5   10:35 user

Kutumia amri ls unaweza kuonyesha mmiliki wa faili kwenye saraka fulani. Wakati mwingine inaweza kuwa muhimu kupata orodha ya faili zote kwenye mfumo ambazo zina mtumiaji au kikundi fulani kama mmiliki. Kwa hili unaweza kutumia kupata. Hoja pata-mtumiaji inaweza kutumika kwa kusudi hili. Kwa mfano, amri ifuatayo inaorodhesha faili zote zinazomilikiwa na mtumiaji linda:

find / -user linda

Unaweza pia kutumia kupata kutafuta faili ambazo zina kikundi fulani kama mmiliki wao.

Kwa mfano, amri ifuatayo hutafuta faili zote za kikundi watumiaji:

find / -group users

Mabadiliko ya umiliki

Ili kutumia ruhusa zinazofaa, jambo la kwanza kuzingatia ni umiliki. Kuna amri kwa hili chown. Syntax ya amri hii ni rahisi kuelewa:

chown ΠΊΡ‚ΠΎ Ρ‡Ρ‚ΠΎ

Kwa mfano, amri ifuatayo inabadilisha mmiliki wa /home/account saraka kwa mtumiaji linda:

chown linda /home/account

Timu chown ina chaguzi kadhaa, moja ambayo ni muhimu sana: -R. Unaweza kukisia inafanya nini kwa sababu chaguo hili linapatikana kwa amri zingine nyingi pia. Hii inakuwezesha kuweka mara kwa mara mmiliki, ambayo inakuwezesha kuweka mmiliki wa saraka ya sasa na kila kitu kilicho chini. Amri ifuatayo inabadilisha umiliki wa saraka ya nyumbani na kila kitu kilicho chini yake kwa mtumiaji wa linda:

Sasa wamiliki wanaonekana kama hii:

[root@localhost ~]# ls -l /home
total 0
drwx------. 2 account account 62 Sep 25 21:41 account
drwx------. 2 lisa    lisa    62 Sep 25 21:42 lisa

Hebu tufanye:

[root@localhost ~]# chown -R lisa /home/account
[root@localhost ~]#

Sasa mtumiaji lisa amekuwa mmiliki wa saraka ya akaunti:

[root@localhost ~]# ls -l /home
total 0
drwx------. 2 lisa account 62 Sep 25 21:41 account
drwx------. 2 lisa lisa    62 Sep 25 21:42 lisa

Badilisha mmiliki wa kikundi

Kuna njia mbili za kubadilisha umiliki wa kikundi. Unaweza kufanya hivyo kwa kutumia chown, lakini kuna amri maalum inayoitwa chgrphiyo inafanya kazi. Ikiwa unataka kutumia amri chown, tumia . au : mbele ya jina la kikundi.

Amri ifuatayo inabadilisha mmiliki yeyote wa /nyumbani/kikundi cha akaunti kuwa kikundi cha akaunti:

chown .account /home/account

unaweza kutumia chown kubadilisha mmiliki wa mtumiaji na/au kikundi kwa njia kadhaa. Hapa kuna baadhi ya mifano:

  • chown lisa myfile1 huweka mtumiaji lisa kama mmiliki wa myfile1.
  • chown lisa.sales myfile huweka mtumiaji lisa kama mmiliki wa faili ya myfile, na pia huweka kikundi cha mauzo kama mmiliki wa faili sawa.
  • chown lisa:mauzo myfile sawa na amri iliyotangulia.
  • chown .mauzo myfile huweka kikundi cha mauzo kama mmiliki wa myfile bila kubadilisha mmiliki wa mtumiaji.
  • chown :sales myfile sawa na amri iliyotangulia.

Unaweza kutumia amri chgrpkubadilisha mmiliki wa kikundi. Fikiria mfano ufuatao, ambapo unaweza kutumia chgrp weka mmiliki wa saraka ya akaunti kwa kikundi cha mauzo:

chgrp .sales /home/account

Kama na chown, unaweza kutumia chaguo -R с chgrp, pamoja na kubadilisha mmiliki wa kikundi kwa kujirudia.

Kuelewa Mmiliki Chaguomsingi

Huenda umegundua kuwa mtumiaji anapounda faili, umiliki chaguomsingi hutumika.
Mtumiaji anayeunda faili kiotomatiki anakuwa mmiliki wa faili hiyo, na kikundi cha msingi cha mtumiaji huyo huwa mmiliki wa faili hiyo kiotomatiki. Kwa kawaida hiki ndicho kikundi ambacho kimeorodheshwa kwenye /etc/passwd faili kama kikundi cha msingi cha mtumiaji. Hata hivyo, ikiwa mtumiaji ni mwanachama wa zaidi ya kikundi kimoja, mtumiaji anaweza kubadilisha kikundi cha msingi kinachofaa.

Ili kuonyesha kikundi cha msingi cha ufanisi cha sasa, mtumiaji anaweza kutumia amri makundi:

[root@server1 ~]# groups lisa
lisa : lisa account sales

Ikiwa mtumiaji wa sasa wa linda anataka kubadilisha kikundi cha msingi kinachofaa, atatumia amri mpyaikifuatiwa na jina la kikundi anachotaka kukiweka kama kikundi kipya cha msingi chenye ufanisi. Baada ya kutumia amri mpya kikundi cha msingi kitafanya kazi hadi mtumiaji aingize amri exit au usitoke nje.

Ifuatayo inaonyesha jinsi linda mtumiaji hutumia amri hii, na mauzo kama kikundi cha msingi:

lisa@server1 ~]$ groups
lisa account sales
[lisa@server1 ~]$ newgrp sales
[lisa@server1 ~]$ groups
sales lisa account
[lisa@server1 ~]$ touch file1
[lisa@server1 ~]$ ls -l
total 0
-rw-r--r--. 1 lisa sales 0 Feb 6 10:06 file1

Baada ya kubadilisha kikundi cha msingi kinachofaa, faili zote mpya zilizoundwa na mtumiaji zitakuwa na kikundi hicho kama mmiliki wa kikundi. Ili kurejea kwenye mpangilio asili wa kikundi cha msingi, tumia exit.

Ili kuweza kutumia amri mpya, mtumiaji lazima awe mwanachama wa kikundi anachotaka kutumia kama kikundi cha msingi. Kwa kuongeza, nenosiri la kikundi linaweza kutumika kwa kikundi kinachotumia amri gpasswd. Ikiwa mtumiaji anatumia amri mpyalakini sio mshiriki wa kikundi kinacholengwa, ganda huuliza nenosiri la kikundi. Baada ya kuingiza nenosiri sahihi la kikundi, kikundi kipya cha msingi kinachofaa kitaanzishwa.

Usimamizi wa haki za kimsingi

Mfumo wa ruhusa wa Linux ulivumbuliwa katika miaka ya 1970. Kwa kuwa mahitaji ya kompyuta yalikuwa machache katika miaka hiyo, mfumo wa ruhusa ya msingi ulikuwa mdogo sana. Mfumo huu wa ruhusa hutumia ruhusa tatu ambazo zinaweza kutumika kwa faili na saraka. Katika sehemu hii, utajifunza jinsi ya kutumia na kubadilisha ruhusa hizi.

Kuelewa Kusoma, Kuandika, na Kutekeleza Ruhusa

Ruhusa tatu za kimsingi hukuruhusu kusoma, kuandika na kutekeleza faili. Athari za ruhusa hizi hutofautiana zinapotumika kwa faili au saraka. Kwa faili, ruhusa ya kusoma inakupa haki ya kufungua faili kwa ajili ya kusoma. Kwa hiyo, unaweza kusoma maudhui yake, lakini hiyo ina maana kwamba kompyuta yako inaweza kufungua faili kufanya kitu nayo.

Faili ya programu inayohitaji ufikiaji wa maktaba lazima, kwa mfano, iwe na ufikiaji wa kusoma kwa maktaba hiyo. Inafuata kwamba ruhusa ya kusoma ndio ruhusa ya msingi unayohitaji kufanya kazi na faili.

Inapotumika kwenye saraka, kusoma hukuruhusu kuonyesha yaliyomo kwenye saraka hiyo. Unapaswa kufahamu kuwa ruhusa hii haikuruhusu kusoma faili kwenye saraka. Mfumo wa ruhusa wa Linux haujui urithi, na njia pekee ya kusoma faili ni kutumia ruhusa za kusoma kwenye faili hiyo.

Kama unavyoweza kukisia, ruhusa ya kuandika, ikiwa inatumika kwa faili, inaruhusu kuandika kwa faili. Kwa maneno mengine, hukuruhusu kubadilisha yaliyomo kwenye faili zilizopo. Hata hivyo, haikuruhusu kuunda au kufuta faili mpya au kubadilisha ruhusa za faili. Ili kufanya hivyo, unahitaji kutoa ruhusa ya kuandika kwenye saraka ambapo unataka kuunda faili. Katika saraka, ruhusa hii pia hukuruhusu kuunda na kufuta saraka mpya.

Ruhusa ya kutekeleza ndio unahitaji kutekeleza faili. Haitasakinishwa kwa chaguo-msingi, ambayo hufanya Linux iwe karibu kabisa na virusi. Ni mtu aliye na ruhusa za kuandika tu kwenye saraka ndiye anayeweza kuomba ruhusa ya kutekeleza.

Ifuatayo ni muhtasari wa matumizi ya ruhusa za kimsingi:

Ruhusa katika Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Kutumia chmod

Amri hutumiwa kudhibiti ruhusa. chmod... Kutumia chmod unaweza kuweka ruhusa kwa mtumiaji (mtumiaji), vikundi (kikundi) na wengine (nyingine). Unaweza kutumia amri hii kwa njia mbili: hali ya jamaa na hali kamili. Katika hali kamili, tarakimu tatu hutumiwa kuweka ruhusa za msingi.

Ruhusa katika Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Wakati wa kuweka ruhusa, hesabu thamani unayohitaji. Ikiwa unataka kuweka kusoma / kuandika / kutekeleza kwa mtumiaji, soma / tekeleza kwa kikundi, na usome / utekeleze wengine kwenye / somefile basi unatumia amri ifuatayo. chmod:

chmod 755 /somefile

Unapotumia chmod kwa njia hii, ruhusa zote za sasa zinabadilishwa na ruhusa ulizoweka.

Ikiwa ungependa kubadilisha ruhusa zinazohusiana na ruhusa za sasa, unaweza kutumia chmod katika hali ya jamaa. Kutumia chmod katika hali ya jamaa unafanya kazi na viashiria vitatu kuashiria unachotaka kufanya:

  1. Kwanza unabainisha ni nani unayetaka kubadilisha ruhusa kwa ajili yake. Ili kufanya hivyo, unaweza kuchagua kati ya mtumiaji (u), kikundi (g) na wengine (o).
  2. Kisha unatumia taarifa kuongeza au kuondoa ruhusa kutoka kwa hali ya sasa, au kuziweka kabisa.
  3. Mwishoni unatumia r, w ΠΈ xkubainisha ni ruhusa zipi unataka kuweka.

Wakati wa kubadilisha ruhusa katika hali ya jamaa, unaweza kuruka sehemu ya "hadi" ili kuongeza au kuondoa ruhusa kwa vitu vyote. Kwa mfano, amri hii inaongeza ruhusa ya kutekeleza kwa watumiaji wote:

chmod +x somefile

Unapofanya kazi katika hali ya jamaa, unaweza pia kutumia amri ngumu zaidi. Kwa mfano, amri hii inaongeza ruhusa ya kuandika kwa kikundi na kuondoa ruhusa ya kusoma kwa wengine:

chmod g+w,o-r somefile

Wakati wa kutumia chmod -R o+rx /data unaweka ruhusa ya kutekeleza kwa saraka zote na faili kwenye saraka ya data. Kuweka ruhusa ya kutekeleza tu kwa saraka na sio faili, tumia chmod -R o+ rX /data.

Herufi kubwa X huhakikisha kuwa faili hazipati ruhusa ya kutekeleza isipokuwa faili tayari imeweka ruhusa ya kutekeleza kwa baadhi ya vitu. Hii inafanya X kuwa njia nadhifu ya kushughulika na kutekeleza ruhusa; hii itaepuka kuweka ruhusa hii kwenye faili ambapo haihitajiki.

Haki zilizopanuliwa

Kando na ruhusa za kimsingi ambazo umesoma kuzihusu, Linux pia ina seti ya ruhusa za juu. Hizi sio ruhusa ulizoweka kwa chaguo-msingi, lakini wakati mwingine hutoa nyongeza muhimu. Katika sehemu hii, utajifunza ni nini na jinsi ya kuziweka.

Kuelewa SUID, GUID, na Ruhusa Zilizopanuliwa za Biti Nata

Kuna ruhusa tatu za juu. Ya kwanza kati ya hizi ni ruhusa ya kuweka kitambulisho cha mtumiaji (SUID). Katika baadhi ya matukio maalum, unaweza kutumia ruhusa hii kwa faili zinazoweza kutekelezwa. Kwa chaguo-msingi, mtumiaji anayeendesha faili inayoweza kutekelezwa huendesha faili hiyo kwa ruhusa zake mwenyewe.

Kwa watumiaji wa kawaida, hii ina maana kwamba matumizi ya programu ni mdogo. Hata hivyo, katika baadhi ya matukio, mtumiaji anahitaji ruhusa maalum, tu kufanya kazi maalum.

Fikiria, kwa mfano, hali ambapo mtumiaji anahitaji kubadilisha nenosiri lake. Ili kufanya hivyo, mtumiaji lazima aandike nenosiri lake jipya kwa faili /etc/shadow. Walakini, faili hii haiandikiki na watumiaji wasio wa mizizi:

root@hnl ~]# ls -l /etc/shadow
----------. 1 root root 1184 Apr 30 16:54 /etc/shadow

Ruhusa ya SUID inatoa suluhu kwa tatizo hili. Huduma ya /usr/bin/passwd hutumia ruhusa hii kwa chaguo-msingi. Hii ina maana kwamba wakati wa kubadilisha nenosiri, mtumiaji anakuwa mzizi kwa muda, ambayo inamruhusu kuandika kwa faili /etc/shadow. Unaweza kuona ruhusa ya SUID na ls -l kama s katika nafasi ambayo kwa kawaida ungetarajia kuona x kwa ruhusa maalum:

[root@hnl ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 32680 Jan 28 2010 /usr/bin/passwd

Ruhusa ya SUID inaweza kuonekana kuwa muhimu (na katika hali zingine ni), lakini wakati huo huo inaweza kuwa hatari. Ikiwa haijatumika kwa usahihi, unaweza kutoa ruhusa za mizizi kwa bahati mbaya. Kwa hiyo, napendekeza kuitumia tu kwa uangalifu mkubwa.

Wasimamizi wengi hawatawahi kuhitaji kuitumia; utaiona tu katika faili zingine ambapo mfumo wa uendeshaji unapaswa kuiweka kwa chaguo-msingi.

Ruhusa maalum ya pili ni kitambulisho cha kikundi (SGID). Ruhusa hii ina athari mbili. Inapotumika kwa faili inayoweza kutekelezwa, humpa mtumiaji anayetekeleza faili ruhusa ya mmiliki wa kikundi cha faili. Kwa hivyo SGID inaweza kufanya zaidi au chini ya kitu sawa na SUID. Walakini, SGID haitumiki kwa kusudi hili.

Kama ilivyo kwa ruhusa ya SUID, SGID inatumika kwa baadhi ya faili za mfumo kama mpangilio chaguomsingi.

Inapotumika kwenye saraka, SGID inaweza kuwa muhimu kwa sababu unaweza kuitumia kuweka mmiliki chaguo-msingi wa kikundi kwa faili na saraka ndogo zilizoundwa katika saraka hiyo. Kwa chaguo-msingi, mtumiaji anapounda faili, kikundi chao cha msingi kinachofaa huwekwa kama mmiliki wa kikundi cha faili hiyo.

Hii sio muhimu sana kila wakati, haswa kwa kuwa watumiaji wa Red Hat/CentOS wameweka kikundi chao cha msingi kwa kikundi kilicho na jina sawa na la mtumiaji, na ambalo mtumiaji ndiye mshiriki pekee. Kwa hivyo, kwa chaguo-msingi, faili ambazo mtumiaji huunda zitashirikiwa kwa wingi.

Hebu fikiria hali ambapo watumiaji linda na lori wanafanya kazi katika uhasibu na ni wanachama wa kikundi akaunti. Kwa chaguo-msingi, watumiaji hawa ni washiriki wa kikundi cha faragha ambacho wao ndio washiriki pekee. Walakini, watumiaji wote wawili ni washiriki wa kikundi cha akaunti, lakini pia kama kigezo cha kikundi cha pili.

Hali chaguo-msingi ni kwamba mtumiaji yeyote kati ya hawa anapounda faili, kikundi cha msingi kinakuwa mmiliki. Kwa hiyo, kwa default, linda hawezi kufikia faili zilizoundwa na lori, na kinyume chake. Walakini, ikiwa utaunda saraka ya kikundi kilichoshirikiwa (sema / vikundi/akaunti) na uhakikishe kuwa ruhusa ya SGID inatumika kwenye saraka hiyo na kwamba akaunti ya kikundi imewekwa kama mmiliki wa kikundi cha saraka hiyo, faili zote zilizoundwa kwenye saraka hiyo na zote. ya saraka zake ndogo , pia pata akaunti ya kikundi kama mmiliki wa kikundi kwa chaguomsingi.

Kwa sababu hii, ruhusa ya SGID ni ruhusa muhimu sana ya kuweka kwenye saraka za vikundi vya umma.

Ruhusa ya SGID imeonyeshwa kwenye pato ls -l kama s katika nafasi ambayo kwa kawaida utapata ruhusa ya kutekeleza kikundi:

[root@hnl data]# ls -ld account
drwxr-sr-x. 2 root account 4096 Apr 30 21:28 account

Ya tatu ya ruhusa maalum ni sehemu ya kunata. Ruhusa hii ni muhimu kwa kulinda faili kutokana na kufutwa kwa bahati mbaya katika mazingira ambayo watumiaji wengi wanaweza kuandika kwa saraka sawa. Ikiwa sehemu ya kunata inatumiwa, mtumiaji anaweza tu kufuta faili ikiwa ndiye mmiliki wa faili au saraka iliyo na faili. Kwa sababu hii, inatumika kama ruhusa chaguo-msingi ya saraka ya /tmp na inaweza kuwa muhimu kwa saraka za vikundi vya umma pia.

Bila kitu cha kunata, ikiwa mtumiaji anaweza kuunda faili kwenye saraka, wanaweza pia kufuta faili kutoka kwa saraka hiyo. Katika mazingira ya kikundi cha umma, hii inaweza kuwa ya kukasirisha. Hebu fikiria watumiaji linda na lori, ambao wote wana ruhusa ya kuandika kwa saraka ya data/akaunti na kupata ruhusa hizo kwa kuwa washiriki wa kikundi cha akaunti. Kwa hiyo, linda anaweza kufuta faili zilizoundwa na lori na kinyume chake.

Unapoweka sehemu ya kunata, mtumiaji anaweza tu kufuta faili ikiwa mojawapo ya masharti yafuatayo ni kweli:

  • Mtumiaji ndiye mmiliki wa faili;
  • Mtumiaji ndiye mmiliki wa saraka ambapo faili iko.

Wakati wa kutumia ls -l, unaweza kuona kunata kama t katika nafasi ambayo kwa kawaida utaona ruhusa ya utekelezaji kwa wengine:

[root@hnl data]# ls -ld account/
drwxr-sr-t. 2 root account 4096 Apr 30 21:28 account/

Kutumia haki zilizoongezwa

Kuweka SUID, SGID na biti ya kunata unaweza pia kutumia chmod. SUID ina thamani ya nambari ya 4, SGID ina thamani ya nambari ya 2, na biti ya kunata ina thamani ya nambari ya 1.

Ikiwa ungependa kutumia ruhusa hizi, unahitaji kuongeza hoja ya tarakimu nne kwa chmod, ambayo tarakimu yake ya kwanza inarejelea ruhusa maalum. Mstari ufuatao, kwa mfano, utaongeza ruhusa ya SGID kwenye saraka na kuweka rwx kwa mtumiaji na rx kwa kikundi na wengine:

chmod 2755 /somedir

Hii haiwezekani ikiwa unahitaji kuona ruhusa za sasa ambazo zimewekwa kabla ya kufanya kazi nazo chmod katika hali kamili. (Unaendesha hatari ya kubatilisha ruhusa ikiwa hutafanya hivyo.) Kwa hivyo ninapendekeza kukimbia katika hali ya jamaa ikiwa unahitaji kutumia ruhusa zozote maalum:

  1. Kwa matumizi ya SUID chmod u+s.
  2. Kwa matumizi ya SGID chmod g+s.
  3. Kwa matumizi ya biti yenye kunata chmod +t, ikifuatiwa na jina la faili au saraka ambayo unataka kuweka vibali.

Jedwali linatoa muhtasari wa kila kitu unachohitaji kujua kuhusu kudhibiti ruhusa maalum.

Ruhusa katika Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Mfano wa kufanya kazi na haki maalum

Katika mfano huu, unatumia ruhusa maalum ili kurahisisha washiriki wa kikundi kushiriki faili katika saraka ya kikundi kilichoshirikiwa. Unapeana kitambulisho kwa kitambulisho cha kikundi kilichowekwa pamoja na kitu kinachonata, na unaona kwamba kikiwekwa, vipengele vinaongezwa ili kurahisisha washiriki wa kikundi kufanya kazi pamoja.

  1. Fungua terminal ambapo wewe ni mtumiaji wa linda. Unaweza kuunda mtumiaji na amri tumia linda, ongeza nenosiri pitia Linda.
  2. Unda saraka ya data kwenye mzizi na /data/sales subdirectory kwa amri mkdir -p /data/sales. Kamilisha cd /data/saleskwenda kwenye saraka ya mauzo. Kamilisha gusa linda1 ΠΈ gusa linda2kuunda faili mbili tupu zinazomilikiwa na linda.
  3. Tekeleza su-lisa kubadilisha mtumiaji wa sasa kwa mtumiaji lisa, ambaye pia ni mwanachama wa kikundi cha mauzo.
  4. Tekeleza cd /data/sales na kutoka kwa saraka hiyo tekeleza ls -l. Utaona faili mbili ambazo ziliundwa na mtumiaji wa linda na ni za kikundi cha linda. Kamilisha rm -f linda*. Hii itafuta faili zote mbili.
  5. Tekeleza gusa lisa1 ΠΈ gusa lisa2kuunda faili mbili ambazo zinamilikiwa na mtumiaji lisa.
  6. Tekeleza su- ili kuinua marupurupu yako hadi mizizi.
  7. Tekeleza chmod g+s,o+t /data/saleskuweka kitambulisho cha kikundi (GUID) kidogo na vile vile nata kwenye saraka ya kikundi kilichoshirikiwa.
  8. Tekeleza su-linda. Kisha fanya gusa linda3 ΠΈ gusa linda4. Unapaswa sasa kuona kwamba faili mbili ulizounda zinamilikiwa na kikundi cha mauzo, ambacho ni mmiliki wa kikundi cha saraka ya data/mauzo.
  9. Tekeleza rm -rf lisa*. Nata inazuia faili hizi kufutwa kwa niaba ya mtumiaji wa linda, kwani wewe sio mmiliki wa faili hizi. Kumbuka kuwa ikiwa mtumiaji wa linda ndiye mmiliki wa saraka ya /data/mauzo, wanaweza kufuta faili hizi hata hivyo!

Usimamizi wa ACL (setfacl, getfacl) katika Linux

Ingawa ruhusa zilizopanuliwa zilizojadiliwa hapo juu zinaongeza utendakazi muhimu kwa jinsi Linux inavyoshughulikia ruhusa, haikuruhusu kutoa ruhusa kwa zaidi ya mtumiaji au kikundi kimoja katika faili moja.

Orodha za udhibiti wa ufikiaji hutoa kipengele hiki. Kwa kuongeza, wanaruhusu wasimamizi kuweka vibali vya chaguo-msingi kwa njia ngumu, ambapo ruhusa zilizowekwa zinaweza kutofautiana kutoka saraka hadi saraka.

Kuelewa ACLs

Ingawa mfumo mdogo wa ACL unaongeza utendakazi mzuri kwa seva yako, una hasara moja: sio huduma zote zinazoiunga mkono. Kwa hivyo, unaweza kupoteza mipangilio yako ya ACL unaponakili au kuhamisha faili, na programu yako ya chelezo inaweza kushindwa kucheleza mipangilio yako ya ACL.

Huduma ya tar haitumii ACL. Ili kuhakikisha kuwa mipangilio ya ACL haijapotea unapounda chelezo, tumia nyota badala ya lami. nyota inafanya kazi na chaguzi sawa na tar; inaongeza tu msaada kwa mipangilio ya ACL.

Unaweza pia kuhifadhi nakala za ACL kwa kupata, ambayo inaweza kurejeshwa kwa kutumia setfacl amri. Ili kuunda nakala rudufu, tumia getfacl -R /directory > file.acls. Ili kurejesha mipangilio kutoka kwa faili ya chelezo, tumia setfacl --restore=file.acl.

Ukosefu wa msaada wa baadhi ya zana haipaswi kuwa tatizo. ACL mara nyingi hutumika kwa saraka kama kipimo cha kimuundo badala ya faili za kibinafsi.
Kwa hiyo, hakutakuwa na wengi wao, lakini wachache tu, watatumika katika maeneo ya smart katika mfumo wa faili. Kwa hivyo, kurejesha ACL asili ulizofanya kazi nazo ni rahisi kiasi, hata kama programu yako ya chelezo haiauni.

Kuandaa mfumo wa faili kwa ACLs

Kabla ya kuanza kufanya kazi na ACL, unaweza kuhitaji kuandaa mfumo wako wa faili ili kusaidia ACL. Kwa sababu metadata ya mfumo wa faili inahitaji kupanuliwa, si mara zote hakuna usaidizi chaguomsingi wa ACL katika mfumo wa faili. Ukipata ujumbe wa "operesheni haitumiki" wakati wa kusanidi ACL kwa mfumo wa faili, mfumo wako wa faili unaweza usitumie ACL.

Ili kurekebisha hii unahitaji kuongeza chaguo acl mlima katika /etc/fstab ili mfumo wa faili umewekwa na usaidizi wa ACL kwa chaguo-msingi.

Kubadilisha na kutazama mipangilio ya ACL na setfacl na getfacl

Ili kuweka ACL unahitaji amri setfacl. Ili kuona mipangilio ya sasa ya ACL, unahitaji kupata. Timu ls -l haionyeshi ACL zozote zilizopo; inaonyesha tu + baada ya orodha ya ruhusa, ambayo inaonyesha kuwa ACL zinatumika kwenye faili pia.

Kabla ya kusanidi ACL, ni wazo nzuri kila wakati kuonyesha mipangilio ya sasa ya ACL kupata. Katika mfano ulio hapa chini, unaweza kuona ruhusa za sasa, kama inavyoonyeshwa na ls -l, na pia kama inavyoonyeshwa na kupata. Ukiangalia kwa karibu vya kutosha, utaona kuwa habari iliyoonyeshwa ni sawa kabisa.

[root@server1 /]# ls -ld /dir
drwxr-xr-x. 2 root root 6 Feb 6 11:28 /dir
[root@server1 /]# getfacl /dir
getfacl: Removing leading '/' from absolute path names
# file: dir
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

Kama matokeo ya kutekeleza amri kupata chini unaweza kuona kwamba ruhusa zinaonyeshwa kwa vitu vitatu tofauti: mtumiaji, kikundi na wengine. Sasa hebu tuongeze ACL ili kutoa ruhusa za kusoma na kutekeleza kwa kikundi cha mauzo pia. amri kwa hili setfacl -mg:mauzo:rx /dir. Katika timu hii -m inaonyesha kuwa mipangilio ya sasa ya ACL inahitaji kubadilishwa. Baada ya hapo g:mauzo:rx inaambia amri ya kuweka kusoma-kutekeleza ACL (rx) kwa kikundi (g) mauzo. Chini unaweza kuona jinsi amri inavyoonekana, pamoja na matokeo ya getfacl baada ya kubadilisha mipangilio ya sasa ya ACL.

[root@server1 /]# setfacl -m g:sales:rx /dir
[root@server1 /]# getfacl /dir
getfacl: Removing leading '/' from absolute path names
# file: dir
# owner: root
# group: root
user::rwx
group::r-x
group:sales:r-x
mask::r-x
other::r-x

Kwa kuwa sasa unaelewa jinsi ya kusanidi ACL ya kikundi, ni rahisi kuelewa ACL kwa watumiaji na watumiaji wengine. Kwa mfano, amri setfacl -mu:linda:rwx /data inatoa ruhusa kwa mtumiaji wa linda kwenye saraka ya data bila kuifanya mmiliki au kubadilisha mgawo wa mmiliki wa sasa.

Timu setfacl ina sifa nyingi na chaguzi. Chaguo moja ni muhimu hasa, parameter -R. Ikitumiwa, chaguo hufanya ACL kuweka kwa faili zote na saraka ndogo ambazo zipo kwa sasa kwenye saraka ambapo umeweka ACL. Inapendekezwa kuwa utumie chaguo hili kila wakati unapobadilisha ACL kwa saraka zilizopo.

Kufanya kazi na ACL Chaguomsingi

Mojawapo ya faida za kutumia ACL ni kwamba unaweza kutoa ruhusa kwa watumiaji au vikundi vingi katika saraka. Faida nyingine ni kwamba unaweza kuwezesha urithi kwa kufanya kazi na ACL chaguo-msingi.

Kwa kuweka ACL chaguo-msingi, unaamua ruhusa ambazo zitawekwa kwa vipengee vyote vipya vilivyoundwa kwenye saraka. Fahamu kuwa ACL chaguo-msingi haibadilishi ruhusa kwenye faili na saraka zilizopo. Ili kuzibadilisha, unahitaji kuongeza ACL ya kawaida pia!

Hili ni muhimu kujua. Ikiwa unataka kutumia ACL kusanidi watumiaji au vikundi vingi kufikia saraka sawa, lazima uweke ACL mara mbili. Matumizi ya kwanza setfacl -R -mkubadilisha ACL kwa faili za sasa. Kisha tumia setfacl-md:kutunza vipengele vyote vipya ambavyo pia vitaundwa.

Ili kuweka ACL chaguo-msingi unahitaji tu kuongeza chaguo d baada ya chaguo -m (Mambo ya kuagiza!). Kwa hivyo tumia setfacl -md:g:mauzo:rx /dataikiwa unataka mauzo ya kikundi kusoma na kutekeleza chochote kinachowahi kuundwa kwenye saraka ya data.

Unapotumia ACL chaguo-msingi, inaweza pia kuwa muhimu kuweka ACL kwa wengine. Kwa kawaida hii haileti maana sana kwa sababu unaweza pia kubadilisha ruhusa kwa wengine wanaotumia chmod. Walakini, kile ambacho huwezi kufanya nacho chmod, ni kubainisha haki ambazo lazima zitolewe kwa watumiaji wengine kwa kila faili mpya inayowahi kuundwa. Ikiwa unataka kuzuia wengine kupata ruhusa yoyote kwenye kitu chochote kilichoundwa ndani /data kwa mfano tumia setfacl -md:o::- /data.

ACL na ruhusa za kawaida hazijaunganishwa vizuri kila wakati. Matatizo yanaweza kutokea ikiwa unatumia ACL chaguo-msingi kwenye saraka, kisha vipengee vinaongezwa kwenye saraka hiyo, na kisha jaribu kubadilisha ruhusa za kawaida. Mabadiliko yanayotumika kwa ruhusa za kawaida hayataonyeshwa vyema katika muhtasari wa ACL. Ili kuepuka matatizo, weka vibali vya kawaida kwanza, kisha weka ACL chaguo-msingi (na jaribu kuzibadilisha tena baada ya hapo).

Mfano wa Usimamizi wa Haki za Juu Kwa Kutumia ACL

Katika mfano huu, utaendelea na saraka za /data/akaunti na /data/mauzo ulizounda awali. Katika mifano iliyotangulia, ulihakikisha kuwa kikundi cha mauzo kina ruhusa kwenye /data/mauzo na kikundi cha akaunti kina ruhusa kwenye /data/akaunti.

Kwanza, hakikisha kuwa kikundi cha akaunti kinapata ruhusa za kusoma kwenye saraka ya /data/mauzo na kikundi cha mauzo kinapata ruhusa za kusoma kwenye saraka ya data/akaunti.

Kisha unaweka ACL chaguo-msingi ili kuhakikisha kuwa faili zote mpya zina ruhusa sahihi zilizowekwa kwa vipengee vyote vipya.

  1. Fungua terminal.
  2. Tekeleza setfacl -mg:account:rx /data/sales ΠΈ setfacl -mg:mauzo:rx /data/account.
  3. Tekeleza kupataili kuhakikisha kuwa ruhusa zimewekwa jinsi unavyotaka.
  4. Tekeleza setfacl -md:g:akaunti:rwx,g:mauzo:rx /data/mauzokuweka ACL chaguo-msingi kwa saraka ya mauzo.
  5. Ongeza ACL chaguo-msingi kwa saraka ya /data/akaunti ukitumia setfacl -md:g:sales:rwx,g:account:rx /data/account.
  6. Thibitisha kuwa mipangilio ya ACL inatumika kwa kuongeza faili mpya kwa /data/sales. Kamilisha gusa /data/sales/newfile na kutekeleza getfacl /data/sales/newfile kuangalia ruhusa za sasa.

Kuweka ruhusa chaguo-msingi na umask

Hapo juu, umejifunza jinsi ya kufanya kazi na ACL chaguo-msingi. Ikiwa hautumii ACL, kuna chaguo la ganda ambalo huamua ruhusa chaguo-msingi utapata: umask (mask ya nyuma). Katika sehemu hii, utajifunza jinsi ya kubadilisha ruhusa chaguo-msingi na umask.

Huenda umegundua kuwa unapounda faili mpya, baadhi ya vibali chaguo-msingi huwekwa. Ruhusa hizi huamuliwa na mpangilio umask. Mpangilio huu wa ganda unatumika kwa watumiaji wote kwenye logon. Katika parameter umask thamani ya nambari hutumiwa, ambayo imetolewa kutoka kwa ruhusa ya juu ambayo inaweza kuweka moja kwa moja kwa faili; mpangilio wa juu wa faili ni 666 na kwa saraka ni 777.

Hata hivyo, baadhi ya ubaguzi hutumika kwa sheria hii. Unaweza kupata muhtasari kamili wa mipangilio umask katika jedwali hapa chini.

Kati ya nambari zinazotumika katika umask, kama ilivyo kwa hoja za nambari za amri chmod, tarakimu ya kwanza inarejelea ruhusa za mtumiaji, tarakimu ya pili inarejelea ruhusa za kikundi, na ya mwisho inarejelea ruhusa chaguo-msingi zilizowekwa kwa ajili ya wengine. Maana umask chaguo-msingi 022 inatoa 644 kwa faili zote mpya na 755 kwa saraka zote mpya zilizoundwa kwenye seva yako.

Muhtasari kamili wa thamani zote za nambari umask na matokeo yao katika jedwali hapa chini.

Ruhusa katika Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Njia rahisi ya kuona jinsi mpangilio wa umask unavyofanya kazi ni kama ifuatavyo: anza na vibali chaguo-msingi vya faili vilivyowekwa hadi 666 na uondoe umask ili kupata vibali vinavyofaa. Fanya vivyo hivyo kwa saraka na ruhusa zake za msingi za 777.

Kuna njia mbili za kubadilisha mpangilio wa umask: kwa watumiaji wote na kwa watumiaji binafsi. Ikiwa unataka kuweka umask kwa watumiaji wote, lazima uhakikishe kuwa mpangilio wa umask unazingatiwa wakati wa kuanzisha faili za mazingira ya shell, kama ilivyoainishwa katika /etc/profile. Njia sahihi ni kuunda hati ya ganda inayoitwa umask.sh kwenye saraka ya /etc/profile.d na ubainishe umask unayotaka kutumia kwenye hati hiyo ya ganda. Ikiwa umask inabadilishwa katika faili hii, inatumika kwa watumiaji wote baada ya kuingia kwenye seva.

Njia mbadala ya kuweka umask kupitia /etc/profile na faili zinazohusiana, ambapo inatumika kwa watumiaji wote wanaoingia, ni kubadilisha mipangilio ya umask kwenye faili inayoitwa .profile ambayo imeundwa katika saraka ya nyumbani ya kila mtumiaji.

Mipangilio inayotumika katika faili hii inatumika tu kwa mtumiaji binafsi; kwa hivyo hii ni njia nzuri ikiwa unahitaji maelezo zaidi. Binafsi napenda kipengele hiki kubadilisha umask chaguo-msingi kwa mtumiaji wa mizizi kuwa 027 wakati watumiaji wa kawaida wanaendesha na umask chaguo-msingi wa 022.

Kufanya kazi na sifa za mtumiaji zilizopanuliwa

Hii ndio sehemu ya mwisho ya ruhusa za Linux.

Wakati wa kufanya kazi na ruhusa, daima kuna uhusiano kati ya mtumiaji au kitu cha kikundi na ruhusa ambazo mtumiaji au vitu vya kikundi vina kwenye faili au saraka. Njia mbadala ya kulinda faili kwenye seva ya Linux ni kufanya kazi na sifa.
Sifa hufanya kazi yao bila kujali mtumiaji anayepata faili.

Kama ilivyo kwa ACL, sifa za faili zinaweza kuhitaji kujumuisha chaguo mlima.

Hili ni chaguo mtumiaji_xattr. Ukipata ujumbe wa "operesheni haitumiki" wakati wa kufanya kazi na sifa za mtumiaji zilizopanuliwa, hakikisha kuweka kigezo. mlima katika /etc/fstab.

Sifa nyingi zimeandikwa. Baadhi ya sifa zinapatikana lakini bado hazijatekelezwa. Usitumie; hawatakuletea chochote.

Zifuatazo ni sifa muhimu zaidi unazoweza kutumia:

A Sifa hii inahakikisha kwamba muda wa kufikia faili wa faili haubadiliki.
Kwa kawaida, kila wakati faili inapofunguliwa, muda wa kufikia faili lazima urekodiwe katika metadata ya faili. Hii inathiri vibaya utendaji; kwa hivyo kwa faili zinazopatikana mara kwa mara, sifa A inaweza kutumika kuzima kipengele hiki.

a Sifa hii hukuruhusu kuongeza lakini usiondoe faili.

c Iwapo unatumia mfumo wa faili unaoauni ukandamizaji wa kiwango cha sauti, sifa hii ya faili inahakikisha kuwa faili imebanwa mara ya kwanza utaratibu wa mbano umewashwa.

D Sifa hii inahakikisha kwamba mabadiliko ya faili yameandikwa kwenye diski mara moja badala ya kuakibishwa kwanza. Hii ni sifa muhimu kwenye faili muhimu za hifadhidata ili kuhakikisha kuwa hazipotei kati ya kashe ya faili na diski kuu.

d Sifa hii inahakikisha kuwa faili haitahifadhiwa kwenye chelezo ambapo matumizi ya utupaji yanatumika.

I Sifa hii huwezesha kuorodhesha kwa saraka ambayo imewezeshwa. Hii hutoa ufikiaji wa haraka wa faili kwa mifumo ya faili ya zamani kama Ext3 ambayo haitumii hifadhidata ya B-tree kwa ufikiaji wa faili haraka.

i Sifa hii hufanya faili isibadilike. Kwa hiyo, hakuna mabadiliko yanaweza kufanywa kwa faili, ambayo ni muhimu kwa faili zinazohitaji ulinzi wa ziada.

j Sifa hii inahakikisha kwamba, kwenye mfumo wa faili wa ext3, faili imeandikwa kwanza kwa jarida na kisha kwa vizuizi vya data kwenye diski ngumu.

s Batilisha vizuizi ambamo faili ilihifadhiwa kwa sekunde 0 baada ya kufuta faili. Hii inahakikisha kwamba faili haiwezi kurejeshwa baada ya kufutwa.

u Sifa hii huhifadhi taarifa kuhusu ufutaji. Hii hukuruhusu kukuza matumizi ambayo hufanya kazi na habari hii kuokoa faili zilizofutwa.

Ikiwa unataka kutumia sifa, unaweza kutumia amri gumzo. Kwa mfano, tumia chattr +s somefilekutumia sifa kwa somefile. Je, unahitaji kuondoa sifa? Kisha tumia chattr -s somefilena itaondolewa. Ili kupata muhtasari wa sifa zote zinazotumika sasa, tumia amri lsattr.

Muhtasari

Katika makala hii, umejifunza jinsi ya kufanya kazi na ruhusa. Unasoma kuhusu ruhusa tatu za kimsingi, ruhusa za kina, na jinsi ya kutumia ACL kwenye mfumo wa faili. Umejifunza pia jinsi ya kutumia chaguo la umask kuomba ruhusa chaguomsingi. Mwishoni mwa makala hii, ulijifunza jinsi ya kutumia sifa zilizopanuliwa za mtumiaji ili kutumia safu ya ziada ya usalama wa mfumo wa faili.

Ikiwa ulipenda tafsiri hii, basi tafadhali andika juu yake kwenye maoni. Kutakuwa na motisha zaidi ya kufanya tafsiri muhimu.

Ilisahihisha baadhi ya makosa ya uchapaji na kisarufi katika makala. Imepunguza aya kadhaa kubwa kuwa ndogo kwa usomaji bora.

Badala ya "Ni mtu aliye na haki za usimamizi tu kwenye saraka ndiye anaweza kuomba ruhusa ya kutekeleza." Iliyowekwa kwa "Ni mtu aliye na ruhusa za kuandika kwenye saraka tu ndiye anayeweza kuomba ruhusa ya kutekeleza.", ambayo itakuwa sahihi zaidi.

Asante kwa maoni berez.

Kubadilishwa:
Ikiwa wewe si mmiliki wa mtumiaji, shell itaangalia ili kuona kama wewe ni mwanachama wa kikundi, kinachojulikana pia kama kikundi cha faili.

Kwenye:
Ikiwa wewe si mmiliki wa faili, shell itaangalia ili kuona kama wewe ni mwanachama wa kikundi ambacho kina ruhusa kwenye faili. Ikiwa wewe ni mshiriki wa kikundi hiki, utafikia faili kwa vibali ambavyo kikundi kimeweka, na shell itaacha kuangalia.

Asante kwa maoni yako CryptoPirate

Chanzo: mapenzi.com

Kuongeza maoni