Lejet në Linux (chown, chmod, SUID, GUID, ngjitës, ACL, umask)

Pershendetje te gjitheve. Ky është një përkthim i një artikulli nga libri RedHat RHCSA RHCE 7 RedHat Enterprise Linux 7 EX200 dhe EX300.

Shtyje: Shpresoj se artikulli do të jetë i dobishëm jo vetëm për fillestarët, por gjithashtu do të ndihmojë administratorët më me përvojë të përmirësojnë njohuritë e tyre.

Le të shkojmë.

Lejet në Linux (chown, chmod, SUID, GUID, ngjitës, ACL, umask)

Për të hyrë në skedarë në Linux, përdoren lejet. Këto leje u janë caktuar tre objekteve: pronari i skedarit, pronari i grupit dhe një objekt tjetër (d.m.th., të gjithë të tjerët). Në këtë artikull, do të mësoni se si të aplikoni lejet.

Ky artikull fillon me një përmbledhje të koncepteve bazë, e ndjekur nga një diskutim i lejeve speciale dhe listave të kontrollit të aksesit (ACL). Në fund të këtij artikulli, ne mbulojmë vendosjen e lejeve të paracaktuara përmes umask, si dhe menaxhimin e atributeve të zgjeruara të përdoruesit.

Menaxhimi i pronësisë së skedarit

Para se të diskutoni për lejet, duhet të jeni të vetëdijshëm për rolin e pronarit të skedarit dhe drejtorisë. Pronësia e skedarëve dhe drejtorive është jetike për trajtimin e lejeve. Në këtë seksion, së pari do të mësoni se si mund ta shihni pronarin. Më pas do të mësoni se si të ndryshoni pronarin dhe përdoruesin e grupit për skedarët dhe drejtoritë.

Shfaqja e pronarit të një skedari ose drejtorie

Në Linux, çdo skedar dhe çdo drejtori ka dy pronarë: një përdorues dhe një pronar grupi.

Këta zotërues vendosen kur krijohet një skedar ose drejtori. Përdoruesi që krijon skedarin bëhet pronar i atij skedari dhe grupi primar që i përket i njëjti përdorues bëhet gjithashtu pronar i atij skedari. Për të përcaktuar nëse ju, si përdorues, keni leje për të hyrë në një skedar ose drejtori, guaska kontrollon për pronësinë.

Kjo ndodh në rendin e mëposhtëm:

  1. Predha kontrollon për të parë nëse jeni pronari i skedarit që dëshironi të përdorni. Nëse jeni pronari, ju merrni leje dhe guaska pushon së kontrolluari.
  2. Nëse nuk jeni pronari i skedarit, guaska do të kontrollojë nëse jeni anëtar i një grupi që ka leje për skedarin. Nëse jeni anëtar i këtij grupi, do t'i qaseni skedarit me lejet që grupi ka vendosur dhe guaska do të ndalojë së kontrolluari.
  3. Nëse nuk jeni as përdorues dhe as pronar i një grupi, ju jepen të drejtat e përdoruesve të tjerë (Të tjerët).

Për të parë detyrat aktuale të pronarit, mund të përdorni komandën ls-l. Kjo komandë tregon përdoruesin dhe pronarin e grupit. Më poshtë mund të shihni cilësimet e pronarit për drejtoritë në drejtorinë /home.

[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

Me komandën ls ju mund të shfaqni pronarin e skedarëve në një direktori të caktuar. Ndonjëherë mund të jetë e dobishme të merrni një listë të të gjithë skedarëve në sistem që kanë një përdorues ose grup të caktuar si pronar. Për këtë ju mund të përdorni gjej. Argument gjeni-përdorues mund të përdoret për këtë qëllim. Për shembull, komanda e mëposhtme liston të gjithë skedarët që janë në pronësi të përdoruesit Linda:

find / -user linda

Ju gjithashtu mund të përdorni gjej për të kërkuar skedarë që kanë një grup të caktuar si pronar të tyre.

Për shembull, komanda e mëposhtme kërkon të gjithë skedarët që i përkasin grupit përdoruesit:

find / -group users

Ndryshimi i pronarit

Për të aplikuar lejet e duhura, gjëja e parë që duhet marrë parasysh është pronësia. Ekziston një urdhër për këtë chown. Sintaksa e kësaj komande është e lehtë për t'u kuptuar:

chown кто что

Për shembull, komanda e mëposhtme ndryshon pronarin e drejtorisë /home/account në përdoruesin linda:

chown linda /home/account

Ekip chown ka disa opsione, njëra prej të cilave është veçanërisht e dobishme: -R. Mund ta merrni me mend se çfarë bën sepse ky opsion është i disponueshëm edhe për shumë komanda të tjera. Kjo ju lejon të vendosni në mënyrë rekursive pronarin, i cili ju lejon të vendosni zotëruesin e drejtorisë aktuale dhe gjithçka më poshtë. Komanda e mëposhtme ndryshon pronësinë e drejtorisë /home dhe gjithçka poshtë saj te përdoruesi i Linda:

Tani pronarët duken kështu:

[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

Le ta bejme:

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

Tani përdoruesi lisa është bërë pronar i drejtorisë së llogarisë:

[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

Ndryshoni pronarin e një grupi

Ka dy mënyra për të ndryshuar pronësinë e një grupi. Ju mund ta bëni këtë duke përdorur chown, por ka një komandë të veçantë me emrin chgrpqë e bën punën. Nëse dëshironi të përdorni komandën chown, përdorni . ose : përballë emrit të grupit.

Komanda e mëposhtme ndryshon çdo pronar të grupit /home/account në grupin e llogarive:

chown .account /home/account

ju mund të përdorni chown për të ndryshuar pronarin e një përdoruesi dhe/ose grupi në disa mënyra. Ketu jane disa shembuj:

  • chown lisa myfile1 vendos përdoruesin lisa si pronar të myfile1.
  • chown lisa.shitje myfile vendos përdoruesin lisa si pronar të skedarit myfile, dhe gjithashtu cakton grupin e shitjeve si pronar të të njëjtit skedar.
  • chown lisa:sales myfile njëjtë si komanda e mëparshme.
  • chown .shitje myfile vendos grupin e shitjeve si pronar të myfile pa ndryshuar pronarin e përdoruesit.
  • chown :sales myfile njëjtë si komanda e mëparshme.

Ju mund të përdorni komandën chgrppër të ndryshuar pronarin e grupit. Merrni parasysh shembullin e mëposhtëm, ku mund të përdorni chgrp vendosni pronarin e drejtorisë së llogarisë në grupin e shitjeve:

chgrp .sales /home/account

Si me chown, mund të përdorni opsionin -R с chgrp, si dhe të ndryshojë në mënyrë rekursive pronarin e grupit.

Kuptimi i pronarit të paracaktuar

Ju mund të keni vënë re se kur një përdorues krijon një skedar, zbatohet pronësia e paracaktuar.
Përdoruesi që krijon skedarin bëhet automatikisht pronar i atij skedari dhe grupi kryesor i atij përdoruesi bëhet automatikisht pronar i atij skedari. Ky është zakonisht grupi që renditet në skedarin /etc/passwd si grupi kryesor i përdoruesit. Megjithatë, nëse përdoruesi është anëtar i më shumë se një grupi, përdoruesi mund të ndryshojë grupin kryesor efektiv.

Për të treguar grupin kryesor aktual efektiv, përdoruesi mund të përdorë komandën Grupe:

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

Nëse përdoruesi aktual i Linda dëshiron të ndryshojë grupin kryesor efektiv, ai do të përdorë komandën newgrpe ndjekur nga emri i grupit që ai dëshiron të vendosë si grupin e ri kryesor efektiv. Pas përdorimit të komandës newgrp grupi primar do të jetë aktiv derisa përdoruesi të futë një komandë dalje ose të mos dilni.

Më poshtë tregon se si përdoruesi linda e përdor këtë komandë, me shitjet si grup primar:

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

Pas ndryshimit të grupit kryesor efektiv, të gjithë skedarët e rinj të krijuar nga përdoruesi do ta kenë atë grup si zotërues të grupit. Për t'u rikthyer në cilësimin origjinal të grupit kryesor, përdorni dalje.

Për të qenë në gjendje të përdorni komandën newgrp, përdoruesi duhet të jetë anëtar i grupit që dëshiron të përdorë si grup primar. Përveç kësaj, një fjalëkalim grupi mund të përdoret për një grup duke përdorur komandën gpasswd. Nëse përdoruesi përdor komandën newgrppor nuk është anëtar i grupit të synuar, guaska kërkon fjalëkalimin e grupit. Pasi të vendosni fjalëkalimin e saktë të grupit, do të krijohet një grup i ri kryesor efektiv.

Menaxhimi i të drejtave themelore

Sistemi i lejeve Linux u shpik në vitet 1970. Meqenëse nevojat për informatikë ishin të kufizuara në ato vite, sistemi bazë i lejeve ishte mjaft i kufizuar. Ky sistem lejesh përdor tre leje që mund të aplikohen në skedarë dhe drejtori. Në këtë seksion, do të mësoni se si t'i përdorni dhe ndryshoni këto leje.

Kuptimi i lejeve të leximit, shkrimit dhe ekzekutimit

Tre leje bazë ju lejojnë të lexoni, shkruani dhe ekzekutoni skedarë. Efekti i këtyre lejeve ndryshon kur zbatohet në skedarë ose drejtori. Për një skedar, leja e leximit ju jep të drejtën për të hapur skedarin për lexim. Prandaj, ju mund të lexoni përmbajtjen e tij, por kjo do të thotë se kompjuteri juaj mund të hapë skedarin për të bërë diçka me të.

Një skedar programi që ka nevojë për qasje në një bibliotekë duhet, për shembull, të ketë akses leximi në atë bibliotekë. Nga kjo rrjedh se leja e leximit është leja më themelore që ju nevojitet për të punuar me skedarët.

Kur aplikohet në një drejtori, leximi ju lejon të shfaqni përmbajtjen e atij drejtorie. Duhet të keni parasysh se kjo leje nuk ju lejon të lexoni skedarët në drejtori. Sistemi i lejeve Linux nuk njeh trashëgimi dhe mënyra e vetme për të lexuar një skedar është përdorimi i lejeve të leximit në atë skedar.

Siç mund ta merrni me mend, leja e shkrimit, nëse aplikohet në një skedar, lejon shkrimin në skedar. Me fjalë të tjera, ju lejon të ndryshoni përmbajtjen e skedarëve ekzistues. Megjithatë, nuk ju lejon të krijoni ose fshini skedarë të rinj ose të ndryshoni lejet e skedarëve. Për ta bërë këtë, duhet të jepni lejen e shkrimit në drejtorinë ku dëshironi të krijoni skedarin. Në drejtori, kjo leje ju lejon gjithashtu të krijoni dhe fshini nëndrejtori të reja.

Leja e ekzekutimit është ajo që ju nevojitet për të ekzekutuar skedarin. Nuk do të instalohet kurrë si parazgjedhje, gjë që e bën Linux pothuajse plotësisht imun ndaj viruseve. Vetëm dikush me leje shkrimi në drejtori mund të aplikojë lejen e ekzekutimit.

Më poshtë përmbledh përdorimin e lejeve bazë:

Lejet në Linux (chown, chmod, SUID, GUID, ngjitës, ACL, umask)

Duke përdorur chmod

Komanda përdoret për të menaxhuar lejet. chmod... Duke përdorur chmod mund të vendosni leje për përdoruesin (përdoruesin), grupet (grupin) dhe të tjerët (të tjerët). Ju mund ta përdorni këtë komandë në dy mënyra: modaliteti relativ dhe modaliteti absolut. Në modalitetin absolut, tre shifra përdoren për të vendosur lejet bazë.

Lejet në Linux (chown, chmod, SUID, GUID, ngjitës, ACL, umask)

Kur vendosni lejet, llogaritni vlerën që ju nevojitet. Nëse dëshironi të vendosni lexim/shkrim/ekzekutim për përdoruesin, lexoni/ekzekutoni për grupin dhe lexoni/ekzekutoni për të tjerët në /somefile, atëherë përdorni komandën e mëposhtme chmod:

chmod 755 /somefile

Kur përdorni chmod në këtë mënyrë, të gjitha lejet aktuale zëvendësohen nga lejet që keni vendosur.

Nëse dëshironi të ndryshoni lejet në lidhje me lejet aktuale, mund të përdorni chmod në gjendje relative. Duke përdorur chmod në modalitetin relativ ju punoni me tre tregues për të treguar atë që dëshironi të bëni:

  1. Së pari ju specifikoni se për kë dëshironi të ndryshoni lejet. Për ta bërë këtë, ju mund të zgjidhni midis përdoruesit (u), grupi (g) dhe të tjerët (o).
  2. Më pas përdorni një deklaratë për të shtuar ose hequr lejet nga modaliteti aktual, ose për t'i vendosur ato absolutisht.
  3. Në fund ju përdorni r, w и xpër të specifikuar cilat leje dëshironi të vendosni.

Kur ndryshoni lejet në modalitetin relativ, mund të kaloni pjesën "te" për të shtuar ose hequr leje për të gjitha objektet. Për shembull, kjo komandë shton lejen e ekzekutimit për të gjithë përdoruesit:

chmod +x somefile

Kur punoni në modalitetin relativ, mund të përdorni gjithashtu komanda më komplekse. Për shembull, kjo komandë shton lejen e shkrimit në një grup dhe heq lejen e leximit për të tjerët:

chmod g+w,o-r somefile

Kur duke përdorur chmod -R o+rx /të dhëna ju vendosni lejen e ekzekutimit për të gjitha drejtoritë si dhe skedarët në drejtorinë /data. Për të vendosur lejen e ekzekutimit vetëm për drejtoritë dhe jo për skedarët, përdorni chmod -R o+ rX /të dhëna.

Shkrimi i madh X siguron që skedarët të mos marrin leje ekzekutimi nëse skedari nuk ka vendosur tashmë lejen e ekzekutimit për disa objekte. Kjo e bën X një mënyrë më të zgjuar për t'u marrë me ekzekutimin e lejeve; kjo do të shmangë vendosjen e kësaj leje në skedarët ku nuk kërkohet.

Të drejtat e zgjeruara

Përveç lejeve bazë për të cilat sapo keni lexuar, Linux ka gjithashtu një grup lejesh të avancuara. Këto nuk janë lejet që vendosni si parazgjedhje, por ndonjëherë ato ofrojnë një shtesë të dobishme. Në këtë seksion, do të mësoni se çfarë janë dhe si t'i vendosni ato.

Kuptimi i lejeve të SUID, GUID dhe Sticky Bit Extended

Ka tre leje të avancuara. E para prej tyre është leja për të vendosur një identifikues përdoruesi (SUID). Në disa raste të veçanta, mund ta aplikoni këtë leje për skedarët e ekzekutueshëm. Si parazgjedhje, një përdorues që drejton një ekzekutues e drejton atë skedar me lejet e veta.

Për përdoruesit e zakonshëm, kjo zakonisht do të thotë që përdorimi i programit është i kufizuar. Megjithatë, në disa raste, përdoruesi ka nevojë për leje të veçanta, vetëm për të kryer një detyrë specifike.

Konsideroni, për shembull, një situatë ku një përdorues duhet të ndryshojë fjalëkalimin e tij. Për ta bërë këtë, përdoruesi duhet të shkruajë fjalëkalimin e tij të ri në skedarin /etc/shadow. Megjithatë, ky skedar nuk mund të shkruhet nga përdoruesit jo-root:

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

Leja SUID ofron një zgjidhje për këtë problem. Shërbimi /usr/bin/passwd e përdor këtë leje si parazgjedhje. Kjo do të thotë që kur ndryshon fjalëkalimin, përdoruesi përkohësisht bëhet root, gjë që i lejon atij të shkruajë në skedarin /etc/shadow. Mund ta shihni lejen SUID me ls-l si s në një pozicion ku normalisht do të prisnit të shihnit x për lejet e personalizuara:

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

Leja SUID mund të duket e dobishme (dhe në disa raste është), por në të njëjtën kohë është potencialisht e rrezikshme. Nëse nuk zbatohet si duhet, ju mund të jepni aksidentalisht lejet e rrënjës. Prandaj, unë rekomandoj ta përdorni vetëm me kujdesin maksimal.

Shumica e administratorëve nuk do të kenë kurrë nevojë ta përdorin atë; do ta shihni vetëm në disa skedarë ku sistemi operativ duhet ta vendosë si parazgjedhje.

Leja e dytë speciale është identifikuesi i grupit (SGID). Kjo leje ka dy efekte. Kur aplikohet në një skedar të ekzekutueshëm, ai i jep përdoruesit që ekzekuton skedarin lejet e pronarit të grupit të skedarit. Pra, SGID mund të bëjë pak a shumë të njëjtën gjë si SUID. Sidoqoftë, SGID praktikisht nuk përdoret për këtë qëllim.

Ashtu si me lejen SUID, SGID aplikohet në disa skedarë të sistemit si cilësim i paracaktuar.

Kur aplikohet në një drejtori, SGID mund të jetë i dobishëm sepse mund ta përdorni për të vendosur zotëruesin e grupit të paracaktuar për skedarët dhe nëndrejtoritë e krijuara në atë direktori. Si parazgjedhje, kur një përdorues krijon një skedar, grupi i tyre kryesor efektiv caktohet si pronar i grupit për atë skedar.

Kjo nuk është gjithmonë shumë e dobishme, veçanërisht pasi përdoruesit e Red Hat/CentOS e kanë grupin e tyre kryesor të caktuar në një grup me të njëjtin emër si përdoruesi, dhe në të cilin përdoruesi është i vetmi anëtar. Kështu, si parazgjedhje, skedarët që krijon përdoruesi do të ndahen në masë.

Imagjinoni një situatë ku përdoruesit Linda dhe Lori punojnë në kontabilitet dhe janë anëtarë të një grupi llogari. Si parazgjedhje, këta përdorues janë anëtarë të një grupi privat, i vetmi anëtar i të cilit janë ata. Megjithatë, të dy përdoruesit janë anëtarë të grupit të llogarisë, por edhe si parametër grupi dytësor.

Situata e parazgjedhur është që kur ndonjë prej këtyre përdoruesve krijon një skedar, grupi primar bëhet pronar. Prandaj, si parazgjedhje, linda nuk mund të aksesojë skedarët e krijuar nga lori, dhe anasjelltas. Megjithatë, nëse krijoni një drejtori të përbashkët grupi (të themi /groups/account) dhe sigurohuni që leja SGID të zbatohet në atë direktori dhe që llogaria e grupit të vendoset si pronar i grupit për atë drejtori, të gjithë skedarët e krijuar në atë drejtori dhe të gjitha e nëndirektorive të tij, merrni gjithashtu llogarinë e grupit si pronar të grupit si parazgjedhje.

Për këtë arsye, leja SGID është një leje shumë e dobishme për të vendosur në drejtoritë e grupeve publike.

Leja SGID shfaqet në dalje ls-l si s në pozicionin ku normalisht do të gjenit leje për të ekzekutuar një grup:

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

E treta e lejeve speciale është pjesa ngjitëse. Kjo leje është e dobishme për mbrojtjen e skedarëve nga fshirja aksidentale në një mjedis ku përdorues të shumtë kanë akses shkrimi në të njëjtën direktori. Nëse përdoret një bit ngjitës, një përdorues mund të fshijë një skedar vetëm nëse është pronari i përdoruesit të skedarit ose drejtorisë që përmban skedarin. Për këtë arsye, përdoret si leja e paracaktuar për drejtorinë /tmp dhe mund të jetë e dobishme edhe për drejtoritë e grupeve publike.

Pa bitin ngjitës, nëse përdoruesi mund të krijojë skedarë në një drejtori, ai gjithashtu mund të fshijë skedarët nga ai direktori. Në një mjedis grupi publik, kjo mund të jetë e bezdisshme. Imagjinoni përdoruesit Linda dhe Lori, të cilët të dy kanë leje shkrimi në drejtorinë /data/account dhe i marrin ato leje duke qenë anëtarë të grupit të llogarive. Prandaj, linda mund të fshijë skedarët e krijuar nga lori dhe anasjelltas.

Kur aplikoni bitin ngjitës, përdoruesi mund të fshijë skedarët vetëm nëse një nga kushtet e mëposhtme është e vërtetë:

  • Përdoruesi është pronari i skedarit;
  • Përdoruesi është pronari i drejtorisë ku ndodhet skedari.

Kur duke përdorur ls-l, ju mund të shihni pak ngjitës si t në pozicionin ku normalisht do të shihni lejen e ekzekutimit për të tjerët:

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

Zbatimi i të drejtave të zgjeruara

Për të aplikuar SUID, SGID dhe bit ngjitës mund të përdorni gjithashtu chmod. SUID ka një vlerë numerike prej 4, SGID ka një vlerë numerike prej 2, dhe biti ngjitës ka një vlerë numerike prej 1.

Nëse dëshironi të aplikoni këto leje, duhet të shtoni një argument katërshifror chmod, shifra e parë e së cilës i referohet lejeve speciale. Rreshti i mëposhtëm, për shembull, do të shtojë lejen SGID në drejtori dhe do të vendosë rwx për përdoruesin dhe rx për grupin dhe të tjerët:

chmod 2755 /somedir

Kjo është mjaft jopraktike nëse duhet të shihni lejet aktuale që janë caktuar përpara se të punoni me të chmod në gjendje absolute. (Ju rrezikoni të mbishkruani lejet nëse nuk e bëni.) Kështu që unë rekomandoj të ekzekutoni në modalitetin relativ nëse keni nevojë të aplikoni ndonjë nga lejet speciale:

  1. Për përdorim SUID chmod u+s.
  2. Për përdorim SGID chmod g+s.
  3. Për përdorim të grimcave ngjitëse chmod +t, e ndjekur nga emri i skedarit ose drejtorisë për të cilën dëshironi të vendosni lejet.

Tabela përmbledh gjithçka që duhet të dini për menaxhimin e lejeve speciale.

Lejet në Linux (chown, chmod, SUID, GUID, ngjitës, ACL, umask)

Shembull i punës me të drejta të veçanta

Në këtë shembull, ju përdorni leje speciale për ta bërë më të lehtë për anëtarët e grupit të ndajnë skedarët në drejtorinë e përbashkët të grupit. Ju caktoni bitin e ID-së së grupit ID të grupit, si dhe atë ngjitës, dhe shihni se pasi të vendosen, shtohen veçori për ta bërë më të lehtë për anëtarët e grupit të punojnë së bashku.

  1. Hapni një terminal ku jeni përdoruesi i Linda. Ju mund të krijoni një përdorues me komandën përdoruesi shto Linda, shtoni fjalëkalimin passwd Linda.
  2. Krijo direktoriumin /data në rrënjë dhe nëndrejtorinë /data/sales me komandën mkdir -p /data/sales. I plotësuar cd /data/shitjepër të shkuar te drejtoria e shitjeve. I plotësuar prek Linda1 и prek Linda2për të krijuar dy skedarë bosh në pronësi të Linda.
  3. Ekzekutuar su-lisa për të kaluar përdoruesin aktual në përdoruesin lisa, i cili është gjithashtu anëtar i grupit të shitjeve.
  4. Ekzekutuar cd /data/shitje dhe nga ai direktorium ekzekutoni ls-l. Do të shihni dy skedarë që janë krijuar nga përdoruesi i Linda dhe i përkasin grupit linda. E plotësuar rm -f linda*. Kjo do të heqë të dy skedarët.
  5. Ekzekutuar prek lisa1 и prek lisa2për të krijuar dy skedarë që janë në pronësi të përdoruesit lisa.
  6. Ekzekutuar su- për të ngritur privilegjet tuaja në rrënjë.
  7. Ekzekutuar chmod g+s,o+t /të dhëna/shitjepër të vendosur bitin e identifikuesit të grupit (GUID) si dhe atë ngjitës në direktorinë e përbashkët të grupit.
  8. Ekzekutuar su-linda. Pastaj bëni prek Linda3 и prek Linda4. Tani duhet të shihni se dy skedarët që keni krijuar janë në pronësi të grupit të shitjeve, i cili është pronari i grupit të drejtorisë /data/sales.
  9. Ekzekutuar rm -rf lisa*. Biti ngjitës parandalon fshirjen e këtyre skedarëve në emër të përdoruesit të Linda, pasi ju nuk jeni pronari i këtyre skedarëve. Vini re se nëse përdoruesi i Linda është pronar i drejtorisë /data/sales, ai mund t'i fshijë këto skedarë gjithsesi!

Menaxhimi i ACL (setfacl, getfacl) në Linux

Edhe pse lejet e zgjeruara të diskutuara më sipër shtojnë funksionalitet të dobishëm në mënyrën se si Linux trajton lejet, ai nuk ju lejon të jepni leje për më shumë se një përdorues ose grup në të njëjtin skedar.

Listat e kontrollit të aksesit ofrojnë këtë veçori. Përveç kësaj, ato lejojnë administratorët të vendosin lejet e paracaktuara në një mënyrë komplekse, ku lejet e vendosura mund të ndryshojnë nga drejtoria në drejtori.

Kuptimi i ACL-ve

Megjithëse nënsistemi ACL shton funksionalitet të madh në serverin tuaj, ai ka një disavantazh: jo të gjitha shërbimet e mbështesin atë. Prandaj, mund të humbisni cilësimet e ACL-së kur kopjoni ose zhvendosni skedarë dhe softveri juaj rezervë mund të dështojë të rezervojë cilësimet tuaja ACL.

Programi tar nuk mbështet ACL-të. Për t'u siguruar që cilësimet ACL të mos humbasin kur krijoni një kopje rezervë, përdorni yll në vend të katranit. yll punon me të njëjtat opsione si katrani; ai thjesht shton mbështetje për cilësimet ACL.

Ju gjithashtu mund të rezervoni ACL-të me marre vesh, i cili mund të rikthehet duke përdorur komandën setfacl. Për të krijuar një kopje rezervë, përdorni getfacl -R /directory > file.acls. Për të rivendosur cilësimet nga një skedar rezervë, përdorni setfacl --restore=file.acl.

Mungesa e mbështetjes nga disa mjete nuk duhet të jetë problem. ACL-të shpesh aplikohen në direktori si një masë strukturore dhe jo në skedarë individualë.
Prandaj, nuk do të ketë shumë prej tyre, por vetëm disa, të aplikuara në vende inteligjente në sistemin e skedarëve. Prandaj, rivendosja e ACL-ve origjinale me të cilat keni punuar është relativisht e lehtë, edhe nëse softueri juaj rezervë nuk i mbështet ato.

Përgatitja e sistemit të skedarëve për ACL

Përpara se të filloni të punoni me ACL-të, mund t'ju duhet të përgatisni sistemin tuaj të skedarëve për të mbështetur ACL-të. Për shkak se të dhënat meta të sistemit të skedarëve duhet të zgjerohen, nuk ka gjithmonë mbështetje të paracaktuar për ACL-të në sistemin e skedarëve. Nëse ju merrni një mesazh "operacioni nuk mbështetet" kur konfiguroni ACL-të për një sistem skedari, sistemi juaj i skedarëve mund të mos mbështesë ACL-të.

Për ta rregulluar këtë, duhet të shtoni opsionin montimi acl në /etc/fstab në mënyrë që sistemi i skedarëve të montohet me mbështetje ACL si parazgjedhje.

Ndryshimi dhe shikimi i cilësimeve të ACL me setfacl dhe getfacl

Për të vendosur një ACL ju nevojitet komanda setfacl. Për të parë cilësimet aktuale të ACL, ju duhet marre vesh. Ekipi ls-l nuk tregon asnjë ACL ekzistuese; ai thjesht tregon një + pas listës së lejeve, që tregon se ACL-të zbatohen edhe për skedarin.

Para se të konfiguroni ACL-të, është gjithmonë një ide e mirë të tregoni cilësimet aktuale ACL me marre vesh. Në shembullin më poshtë, mund të shihni lejet aktuale, siç tregohet me ls-l, dhe gjithashtu siç tregohet me marre vesh. Nëse shikoni mjaftueshëm nga afër, do të shihni se informacioni i treguar është saktësisht i njëjtë.

[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

Si rezultat i ekzekutimit të komandës marre vesh më poshtë mund të shihni se lejet shfaqen për tre objekte të ndryshme: përdorues, grup dhe të tjerë. Tani le të shtojmë një ACL për të dhënë leje leximi dhe ekzekutimi edhe për grupin e shitjeve. komandë për këtë setfacl -mg:sales:rx /dir. Në këtë ekip -m tregon se cilësimet aktuale të ACL duhet të ndryshohen. Pas kësaj g:sales:rx tregon komandën për të vendosur ACL-në e leximit-ekzekutimit (rx) per grupin (g) shitjet. Më poshtë mund të shihni se si duket komanda, si dhe daljen e komandës getfacl pas ndryshimit të cilësimeve aktuale të 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

Tani që e kuptoni se si të krijoni një grup ACL, është e lehtë të kuptohen ACL-të për përdoruesit dhe përdoruesit e tjerë. Për shembull, komanda setfacl -mu:linda:rwx /data i jep leje përdoruesit linda në drejtorinë /data pa e bërë atë pronar ose pa ndryshuar caktimin e pronarit aktual.

Ekip setfacl ka shumë veçori dhe opsione. Një opsion është veçanërisht i rëndësishëm, parametri -R. Nëse përdoret, opsioni e bën ACL të vendosur për të gjithë skedarët dhe nëndirektoritë që ekzistojnë aktualisht në drejtorinë ku keni vendosur ACL. Rekomandohet që gjithmonë ta përdorni këtë opsion kur ndryshoni ACL-të për drejtoritë ekzistuese.

Puna me ACL-të e paracaktuara

Një nga përfitimet e përdorimit të ACL-ve është se ju mund t'u jepni leje përdoruesve ose grupeve të shumta në një direktori. Një përfitim tjetër është se mund të aktivizoni trashëgiminë duke punuar me ACL-të e paracaktuara.

Duke vendosur ACL-në e paracaktuar, ju përcaktoni lejet që do të vendosen për të gjithë artikujt e rinj të krijuar në drejtori. Kini parasysh se ACL e paracaktuar nuk i ndryshon lejet në skedarët dhe nëndrejtoritë ekzistuese. Për t'i ndryshuar ato, duhet të shtoni gjithashtu një ACL normale!

Kjo është e rëndësishme të dihet. Nëse dëshironi të përdorni një ACL për të konfiguruar shumë përdorues ose grupe për të hyrë në të njëjtën direktori, duhet të vendosni ACL dy herë. Përdorimi i parë setfacl -R -mpër të ndryshuar ACL-të për skedarët aktualë. Më pas përdorni setfacl-md:të kujdeset për të gjithë elementët e rinj që do të krijohen gjithashtu.

Për të vendosur ACL-në e paracaktuar, thjesht duhet të shtoni opsionin d pas opsionit -m (rendi ka rëndësi!). Pra përdorni setfacl -md:g:sales:rx /datanëse dëshironi që shitjet në grup të lexojnë dhe ekzekutojnë çdo gjë që është krijuar ndonjëherë në drejtorinë /data.

Kur përdorni ACL-të e paracaktuara, mund të jetë gjithashtu e dobishme të vendosni ACL-të për të tjerët. Kjo zakonisht nuk ka shumë kuptim sepse mund të ndryshoni edhe lejet për të tjerët që përdorin chmod. Megjithatë, me çfarë nuk mund të bësh chmod, është të specifikojë të drejtat që duhet t'u jepen përdoruesve të tjerë për çdo skedar të ri që krijohet ndonjëherë. Nëse dëshironi të parandaloni që të tjerët të marrin ndonjë leje për çdo gjë të krijuar në /data, për shembull, përdorni setfacl -md:o::- /data.

ACL-të dhe lejet normale nuk janë gjithmonë të integruara mirë. Problemet mund të lindin nëse aplikoni një ACL të paracaktuar në një drejtori, më pas artikujt shtohen në atë drejtori dhe më pas përpiqeni të ndryshoni lejet normale. Ndryshimet që zbatohen për lejet normale nuk do të pasqyrohen mirë në përmbledhjen e ACL. Për të shmangur problemet, vendosni fillimisht lejet normale, më pas vendosni ACL-të e paracaktuara (dhe përpiquni të mos i ndryshoni më pas kësaj).

Shembull i menaxhimit të të drejtave të ngritura duke përdorur ACL

Në këtë shembull, ju do të vazhdoni me drejtoritë /data/account dhe /data/sales që keni krijuar më parë. Në shembujt e mëparshëm, ju siguruat që grupi i shitjeve të ketë leje për /data/sales dhe grupi i llogarive ka leje për /data/account.

Së pari, sigurohuni që grupi i llogarisë të marrë leje leximi në drejtorinë /data/sales dhe grupi i shitjeve merr leje leximi në drejtorinë /data/account.

Më pas vendosni ACL-të e paracaktuara për t'u siguruar që të gjithë skedarët e rinj të kenë të drejtat e duhura të vendosura për të gjithë artikujt e rinj.

  1. Hap një terminal.
  2. Ekzekutuar setfacl -mg:account:rx /data/sales и setfacl -mg:sales:rx /data/account.
  3. Ekzekutuar marre veshpër t'u siguruar që lejet janë vendosur ashtu siç dëshironi.
  4. Ekzekutuar setfacl -md:g:account:rwx,g:sales:rx /data/salespër të vendosur ACL-në e paracaktuar për drejtorinë e shitjeve.
  5. Shtoni një ACL të paracaktuar për drejtorinë /data/account duke përdorur setfacl -md:g:sales:rwx,g:account:rx /data/account.
  6. Verifikoni që cilësimet ACL janë në fuqi duke shtuar një skedar të ri në /data/sales. E plotësuar prekni /data/sales/newfile dhe ekzekutoni getfacl /data/sales/newfile për të kontrolluar lejet aktuale.

Vendosja e lejeve të paracaktuara me umask

Më sipër, mësuat se si të punoni me ACL-të e paracaktuara. Nëse nuk jeni duke përdorur një ACL, ekziston një opsion shell që përcakton lejet e paracaktuara që do të merrni: umask (maskë e kundërt). Në këtë seksion, do të mësoni se si të ndryshoni lejet e paracaktuara me umask.

Ju mund të keni vënë re se kur krijoni një skedar të ri, vendosen disa leje të paracaktuara. Këto leje përcaktohen nga cilësimi umask. Ky cilësim i guaskës zbatohet për të gjithë përdoruesit në hyrje. Në parametër umask përdoret një vlerë numerike, e cila zbritet nga lejet maksimale që mund të vendosen automatikisht për skedarin; cilësimi maksimal për skedarët është 666 dhe për drejtoritë është 777.

Megjithatë, disa përjashtime zbatohen nga ky rregull. Mund të gjeni një përmbledhje të plotë të cilësimeve umask në tabelën e mëposhtme.

Nga numrat e përdorur në umask, si në rastin e argumenteve numerike për komandën chmod, shifra e parë i referohet lejeve të përdoruesit, shifra e dytë i referohet lejeve të grupit dhe e fundit i referohet lejeve të paracaktuara për të tjerët. Kuptimi umask default 022 jep 644 për të gjithë skedarët e rinj dhe 755 për të gjitha drejtoritë e reja të krijuara në serverin tuaj.

Pasqyrë e plotë e të gjitha vlerave numerike umask dhe rezultatet e tyre në tabelën e mëposhtme.

Lejet në Linux (chown, chmod, SUID, GUID, ngjitës, ACL, umask)

Një mënyrë e thjeshtë për të parë se si funksionon cilësimi umask është si më poshtë: filloni me lejet e paracaktuara të skedarit të vendosura në 666 dhe zbrisni umask për të marrë lejet efektive. Bëni të njëjtën gjë për drejtorinë dhe lejet e saj të paracaktuara të 777.

Ka dy mënyra për të ndryshuar cilësimin e umask: për të gjithë përdoruesit dhe për përdoruesit individualë. Nëse dëshironi të vendosni umask për të gjithë përdoruesit, duhet të siguroheni që cilësimi umask të merret parasysh kur filloni skedarët e mjedisit të guaskës, siç specifikohet në /etc/profile. Qasja e saktë është të krijoni një skrip shell të quajtur umask.sh në direktorinë /etc/profile.d dhe të specifikoni umask që dëshironi të përdorni në atë skript shell. Nëse umask ndryshohet në këtë skedar, ai zbatohet për të gjithë përdoruesit pas hyrjes në server.

Një alternativë për vendosjen e umask nëpërmjet /etc/profile dhe skedarëve të lidhur, ku zbatohet për të gjithë përdoruesit që hyjnë, është ndryshimi i cilësimeve të umask në një skedar të quajtur .profile që krijohet në drejtorinë kryesore të çdo përdoruesi.

Cilësimet e aplikuara në këtë skedar zbatohen vetëm për përdoruesin individual; prandaj kjo është një metodë e mirë nëse keni nevojë për më shumë detaje. Mua personalisht më pëlqen kjo veçori për të ndryshuar umaskun e paracaktuar për përdoruesin rrënjë në 027 ndërsa përdoruesit normalë po funksionojnë me umask të paracaktuar të 022.

Puna me atributet e zgjeruara të përdoruesit

Ky është seksioni i fundit mbi lejet e Linux.

Kur punoni me lejet, ekziston gjithmonë një marrëdhënie midis një objekti përdoruesi ose grupi dhe lejeve që kanë objektet e përdoruesit ose grupit në një skedar ose drejtori. Një metodë alternative për të mbrojtur skedarët në një server Linux është të punosh me atribute.
Atributet bëjnë punën e tyre pavarësisht nga përdoruesi që hyn në skedar.

Ashtu si me ACL-të, atributet e skedarëve mund të kenë nevojë të përfshijnë opsionin malin.

Ky është një opsion përdorues_xattr. Nëse merrni një mesazh "operacioni nuk mbështetet" kur punoni me atributet e zgjeruara të përdoruesit, sigurohuni që të vendosni parametrin malin në /etc/fstab.

Shumë atribute janë të dokumentuara. Disa atribute janë të disponueshme por nuk janë zbatuar ende. Mos i përdorni ato; ata nuk do t'ju sjellin asgjë.

Më poshtë janë atributet më të dobishme që mund të aplikoni:

A Ky atribut siguron që koha e aksesit të skedarit të mos ndryshojë.
Në mënyrë tipike, sa herë që hapet një skedar, koha e hyrjes së skedarit duhet të regjistrohet në meta të dhënat e skedarit. Kjo ndikon negativisht në performancën; kështu që për skedarët që aksesohen rregullisht, atributi A mund të përdoret për të çaktivizuar këtë veçori.

a Ky atribut ju lejon të shtoni, por jo të hiqni një skedar.

c Nëse jeni duke përdorur një sistem skedari që mbështet kompresimin në nivel vëllimi, ky atribut skedar siguron që skedari të kompresohet herën e parë që aktivizohet mekanizmi i kompresimit.

D Ky atribut siguron që ndryshimet në skedarë të shkruhen në disk menjëherë në vend që të ruhen në memorien e parë. Ky është një atribut i dobishëm në skedarët e rëndësishëm të bazës së të dhënave për t'u siguruar që ato të mos humbasin midis cache-it të skedarëve dhe hard drive-it.

d Ky atribut siguron që skedari nuk do të ruhet në kopje rezervë ku përdoret programi i shkarkimit.

I Ky atribut mundëson indeksimin për drejtorinë në të cilën është aktivizuar. Kjo siguron akses më të shpejtë të skedarëve për sistemet e skedarëve primitivë si Ext3 që nuk përdorin bazën e të dhënave B-tree për akses të shpejtë të skedarëve.

i Ky atribut e bën skedarin të pandryshueshëm. Prandaj, nuk mund të bëhet asnjë ndryshim në skedar, i cili është i dobishëm për skedarët që kanë nevojë për mbrojtje shtesë.

j Ky atribut siguron që, në një sistem skedari ext3, skedari së pari të shkruhet në ditar dhe më pas në blloqet e të dhënave në hard disk.

s Mbishkruani blloqet në të cilat skedari u ruajt në 0 pas fshirjes së skedarit. Kjo siguron që një skedar nuk mund të rikthehet pasi të jetë fshirë.

u Ky atribut ruan informacione rreth fshirjes. Kjo ju lejon të zhvilloni një mjet që punon me këtë informacion për të shpëtuar skedarët e fshirë.

Nëse dëshironi të aplikoni atributet, mund të përdorni komandën muhabet. Për shembull, përdorni chattr +s somefilepër të aplikuar atribute në disa skedarë. Duhet të hiqni një atribut? Më pas përdorni chattr -s somefiledhe do të hiqet. Për të marrë një pasqyrë të të gjitha atributeve që aplikohen aktualisht, përdorni komandën lsattr.

Përmbledhje

Në këtë artikull, ju mësuat se si të punoni me lejet. Ju lexoni për tre lejet bazë, lejet e avancuara dhe si të aplikoni ACL në një sistem skedari. Ju gjithashtu mësuat se si të përdorni opsionin umask për të aplikuar lejet e paracaktuara. Në fund të këtij artikulli, mësuat se si të përdorni atributet e zgjeruara nga përdoruesi për të aplikuar një shtresë shtesë të sigurisë së sistemit të skedarëve.

Nëse ju pëlqeu ky përkthim, atëherë ju lutemi shkruani për të në komente. Do të ketë më shumë motivim për të bërë përkthime të dobishme.

Korrigjuar disa gabime shtypi dhe gramatikore në artikull. Reduktoi disa paragrafë të rëndë në më të vegjël për lexueshmëri më të mirë.

Në vend të "Vetëm dikush me të drejta administrative në drejtori mund të aplikojë lejen e ekzekutimit." fiksuar në "Vetëm dikush me leje shkrimi në drejtori mund të aplikojë lejen e ekzekutimit.", që do të ishte më e saktë.

Faleminderit për komentet berez.

Zëvendësuar:
Nëse nuk jeni pronari i përdoruesit, guaska do të kontrollojë nëse jeni anëtar i një grupi, i njohur gjithashtu si grupi i skedarit.

Në:
Nëse nuk jeni pronari i skedarit, guaska do të kontrollojë nëse jeni anëtar i një grupi që ka leje për skedarin. Nëse jeni anëtar i këtij grupi, do t'i qaseni skedarit me lejet që grupi ka vendosur dhe guaska do të ndalojë së kontrolluari.

Faleminderit per komentin tuaj KriptoPirat

Burimi: www.habr.com

Shto një koment