„Linux“ leidimai (chown, chmod, SUID, GUID, lipnus bitas, ACL, umask)

Sveiki visi. Tai yra straipsnio vertimas iš knygos RedHat RHCSA RHCE 7 RedHat Enterprise Linux 7 EX200 ir EX300.

Stumti: Tikiuosi, kad straipsnis bus naudingas ne tik pradedantiesiems, bet ir labiau patyrusiems administratoriams sutvarkyti savo žinias.

Taigi, eikime.

„Linux“ leidimai (chown, chmod, SUID, GUID, lipnus bitas, ACL, umask)

Norint pasiekti failus Linux sistemoje, naudojami leidimai. Šie leidimai priskiriami trims objektams: failo savininkui, grupės savininkui ir kitam objektui (ty visiems kitiems). Šiame straipsnyje sužinosite, kaip taikyti leidimus.

Straipsnis pradedamas pagrindinių sąvokų apžvalga, o vėliau aptariami specialieji leidimai ir prieigos kontrolės sąrašai (ACL). Šio straipsnio pabaigoje aprašomas numatytųjų leidimų nustatymas naudojant umask, taip pat išplėstinių vartotojo atributų valdymas.

Failų nuosavybės valdymas

Prieš aptardami leidimus, turėtumėte žinoti failo ir katalogo savininko vaidmenį. Failų ir katalogų nuosavybės teisė yra gyvybiškai svarbi dirbant su leidimais. Šiame skyriuje pirmiausia sužinosite, kaip galite pamatyti savininką. Tada sužinosite, kaip pakeisti failų ir katalogų grupės savininką ir naudotoją.

Rodomas failo arba katalogo savininkas

Linux sistemoje kiekvienas failas ir kiekvienas katalogas turi du savininkus: vartotoją ir grupės savininką.

Šie savininkai nustatomi, kai sukuriamas failas arba katalogas. Failą sukūręs vartotojas tampa šio failo savininku, o pagrindinė grupė, kuriai priklauso tas pats vartotojas, taip pat tampa šio failo savininku. Norėdami nustatyti, ar jūs, kaip vartotojas, turite prieigos prie failo arba katalogo teises, apvalkalas patikrina nuosavybės teisę.

Tai vyksta tokia tvarka:

  1. Apvalkalas patikrina, ar esate failo, kurį norite pasiekti, savininkas. Jei esate tas savininkas, jums suteikiami leidimai ir apvalkalas nustoja tikrinti.
  2. Jei nesate failo savininkas, apvalkalas patikrins, ar esate grupės, turinčios failo teises, narys. Jei esate šios grupės narys, failą pasieksite su grupei nustatytais leidimais, o apvalkalas nustos tikrinti.
  3. Jei nesate nei vartotojas, nei grupės savininkas, gaunate Kitų vartotojų teises.

Norėdami pamatyti dabartines savininko užduotis, galite naudoti komandą palik tai. Ši komanda rodo grupės vartotoją ir savininką. Žemiau galite pamatyti /home katalogo katalogų savininko nustatymus.

[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

Su komanda ls galite rodyti failų savininką tam tikrame kataloge. Kartais gali būti naudinga gauti visų sistemoje esančių failų, kurių savininkas yra konkretus vartotojas arba grupė, sąrašą. Tam galite naudoti rasti. Argumentas rasti -vartotoją gali būti naudojamas šiam tikslui. Pavyzdžiui, ši komanda rodo visus failus, kurių savininkas yra linda:

find / -user linda

Taip pat galite naudoti rasti ieškoti failų, kurių savininkas yra tam tikra grupė.

Pavyzdžiui, ši komanda ieško visų grupei priklausančių failų Vartotojai:

find / -group users

Savininko pasikeitimas

Norint taikyti atitinkamus leidimus, pirmiausia reikia apsvarstyti nuosavybės teisę. Tam yra komanda chown. Šios komandos sintaksę lengva suprasti:

chown кто что

Pavyzdžiui, ši komanda pakeičia /home/account katalogo savininką į vartotoją linda:

chown linda /home/account

Komanda chown yra keletas variantų, iš kurių vienas yra ypač naudingas: -R. Galite atspėti, ką tai daro, nes ši parinktis galima ir daugeliui kitų komandų. Tai leidžia rekursyviai nustatyti savininką, o tai leidžia nustatyti dabartinio katalogo ir visko po juo savininką. Ši komanda pakeičia /home katalogo ir visko po juo savininką į vartotoją linda:

Dabar savininkai atrodo taip:

[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

Padarykim:

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

Dabar vartotojas lisa yra paskyros katalogo savininkas:

[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

Keisti grupės savininką

Yra du būdai pakeisti grupės nuosavybę. Tai galite padaryti naudodami chown, bet yra speciali komanda, vadinama chgrp, kuri atlieka šį darbą. Jei norite naudoti komandą chown, naudoti . arba : prieš grupės pavadinimą.

Ši komanda pakeičia bet kurį /home/account grupės savininką į paskyrų grupę:

chown .account /home/account

tu gali naudoti chown Norėdami pakeisti vartotojo ir (arba) grupės savininką keliais būdais. Štai keletas pavyzdžių:

  • chown lisa mano failas1 nustato vartotoją lisa kaip failo myfile1 savininką.
  • chown lisa.sales myfile nustato vartotoją lisa kaip failo myfile savininką, taip pat nustato pardavimo grupę kaip to paties failo savininką.
  • chown lisa:sales myfile tokia pati kaip ir ankstesnė komanda.
  • chown .sales myfile Nustato pardavimo grupę kaip mano failo savininką, nekeičiant vartotojo savininko.
  • chown :sales myfile tokia pati kaip ir ankstesnė komanda.

Galite naudoti komandą chgrppakeisti grupės savininką. Apsvarstykite šį pavyzdį, kur galite naudoti chgrp Nustatykite paskyros katalogo savininką į pardavimo grupę:

chgrp .sales /home/account

Kaip ir su chown, galite naudoti parinktį -R с chgrp, taip pat rekursyviai pakeisti grupės savininką.

Numatytasis savininko supratimas

Galbūt pastebėjote, kad kai vartotojas sukuria failą, taikoma numatytoji nuosavybės teisė.
Failą sukūręs vartotojas automatiškai tampa to failo savininku, o pagrindinė to vartotojo grupė automatiškai tampa to failo savininku. Paprastai tai yra grupė, kuri yra nurodyta /etc/passwd faile kaip pagrindinė vartotojo grupė. Tačiau jei vartotojas yra kelių grupių narys, jis gali pakeisti galiojančią pirminę grupę.

Norėdami parodyti esamą efektyvią pirminę grupę, vartotojas gali naudoti komandą grupės:

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

Jei dabartinis vartotojas linda nori pakeisti galiojančią pirminę grupę, jis naudos komandą newgrppo kurio nurodomas grupės, kurią jis nori nustatyti kaip naują efektyvią pirminę grupę, pavadinimas. Panaudojus komandą newgrp pagrindinė grupė bus aktyvi tol, kol vartotojas neįves komandos išeiti arba neatsijungs nuo sistemos.

Štai kaip vartotojas linda naudoja šią komandą, o pagrindinė grupė yra pardavimas:

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

Pakeitus dabartinę pirminę grupę, visuose naujuose vartotojo sukurtuose failuose ta grupė bus grupės savininkas. Norėdami grįžti į pradinį pirminės grupės nustatymą, naudokite išeiti.

Kad būtų galima naudotis komanda newgrp, vartotojas turi būti grupės, kurią jis nori naudoti kaip pagrindinę, narys. Be to, naudojant komandą, grupei galima naudoti grupės slaptažodį gpasswd. Jei vartotojas naudoja komandą newgrpbet nėra tikslinės grupės narys, apvalkalas ragina įvesti grupės slaptažodį. Įvedus teisingą grupės slaptažodį, bus nustatyta nauja veiksminga pirminė grupė.

Pagrindinių teisių valdymas

„Linux“ leidimų sistema buvo išrasta aštuntajame dešimtmetyje. Kadangi tais metais skaičiavimo poreikiai buvo riboti, pagrindinė leidimų sistema buvo gana ribota. Ši leidimų sistema naudoja tris leidimus, kurie gali būti taikomi failams ir katalogams. Šiame skyriuje sužinosite, kaip naudoti ir pakeisti šiuos leidimus.

Skaitymo, rašymo ir vykdymo leidimų supratimas

Trys pagrindiniai leidimai leidžia skaityti, rašyti ir vykdyti failus. Šių leidimų poveikis skiriasi, kai jie taikomi failams ar katalogams. Pritaikius failą, skaitymo leidimas suteikia teisę atidaryti failą skaitymui. Todėl galite perskaityti jo turinį, bet tai reiškia, kad jūsų kompiuteris gali atidaryti failą ir su juo ką nors padaryti.

Pavyzdžiui, programos failas, kuriam reikalinga prieiga prie bibliotekos, turi turėti skaitymo prieigą prie tos bibliotekos. Tai reiškia, kad skaitymo leidimas yra pats paprasčiausias leidimas, kurio reikia norint dirbti su failais.

Taikant katalogą, skaitymas leidžia rodyti to katalogo turinį. Turėtumėte žinoti, kad šis leidimas neleidžia skaityti failų kataloge. „Linux“ leidimų sistema nežino paveldėjimo ir vienintelis būdas nuskaityti failą yra naudoti to failo skaitymo teises.

Kaip tikriausiai galite atspėti, rašymo leidimas, pritaikytas failui, leidžia rašyti į failą. Kitaip tariant, tai leidžia keisti esamų failų turinį. Tačiau tai neleidžia kurti ar ištrinti naujų failų arba keisti failų leidimų. Norėdami tai padaryti, turite suteikti leidimą rašyti katalogą, kuriame norite sukurti failą. Kataloguose šis leidimas taip pat leidžia kurti ir ištrinti naujus pakatalogius.

Vykdymo leidimas yra tai, ko jums reikia norint vykdyti failą. Pagal numatytuosius nustatymus jis niekada nebus įdiegtas, todėl Linux beveik visiškai apsaugotas nuo virusų. Tik asmuo, turintis rašymo prieigą prie katalogo, gali taikyti vykdymo leidimą.

Toliau pateikiama pagrindinių leidimų naudojimo santrauka:

„Linux“ leidimai (chown, chmod, SUID, GUID, lipnus bitas, ACL, umask)

Naudojant chmod

Norėdami valdyti teises, naudokite komandą chmod. Naudojant chmod galite nustatyti vartotojo, grupės ir kitų leidimus. Šią komandą galite naudoti dviem režimais: santykiniu režimu ir absoliučiu režimu. Absoliučiu režimu pagrindiniais leidimais nustatyti naudojami trys skaitmenys.

„Linux“ leidimai (chown, chmod, SUID, GUID, lipnus bitas, ACL, umask)

Nustatydami leidimus apskaičiuokite reikiamą vertę. Jei norite nustatyti skaitymą, rašymą ir vykdymą vartotojui, skaitymą ir vykdymą grupei bei skaitymą ir vykdymą kitiems faile /somefile, naudokite šią komandą chmod:

chmod 755 /somefile

Kai naudojate chmod Tokiu būdu visi dabartiniai leidimai pakeičiami jūsų nustatytais leidimais.

Jei norite pakeisti leidimus, palyginti su dabartiniais leidimais, galite naudoti chmod santykiniu režimu. Naudojant chmod santykiniame režime dirbate su trimis indikatoriais, kurie nurodo, ką norite daryti:

  1. Pirmiausia nurodykite, kam norite pakeisti leidimus. Norėdami tai padaryti, galite pasirinkti iš vartotojo (u), grupė (g) ir kiti (o).
  2. Tada naudokite teiginį norėdami pridėti arba pašalinti leidimus iš dabartinio režimo arba nustatyti juos visiškai.
  3. Pabaigoje jūs naudojate r, w и xnorėdami nurodyti, kuriuos leidimus norite nustatyti.

Keisdami leidimus santykiniu režimu, galite praleisti dalį „į“, ​​kad pridėtumėte arba pašalintumėte leidimus visiems objektams. Pavyzdžiui, ši komanda prideda vykdymo leidimą visiems vartotojams:

chmod +x somefile

Dirbdami santykiniu režimu taip pat galite naudoti sudėtingesnes komandas. Pavyzdžiui, ši komanda prideda grupei leidimą rašyti ir pašalina skaitymo leidimą kitiems:

chmod g+w,o-r somefile

kai naudojant chmod -R o+rx /duomenys nustatote vykdymo leidimą visiems katalogams, taip pat failams kataloge /data. Norėdami nustatyti vykdymo leidimą tik katalogams, o ne failams, naudokite chmod -R o+ rX /duomenys.

Didžiosios X raidės užtikrina, kad failams nebus suteiktas vykdymo leidimas, nebent failas jau nustatė kai kurių objektų vykdymo leidimą. Dėl to X yra protingesnis būdas tvarkyti vykdymo leidimus; taip išvengsite šio leidimo nustatymo failams, kuriuose jis nereikalingas.

Išplėstinės teisės

Be pagrindinių leidimų, apie kuriuos ką tik perskaitėte, Linux taip pat turi išplėstinių leidimų rinkinį. Tai nėra leidimai, kuriuos nustatėte pagal numatytuosius nustatymus, tačiau kartais jie suteikia naudingą priedą. Šiame skyriuje sužinosite, kas jie yra ir kaip juos nustatyti.

Suprasti SUID, GUID ir priklijuotų bitų išplėstines teises

Yra trys išplėstinės rezoliucijos. Pirmasis yra leidimas nustatyti vartotojo ID (SUID). Kai kuriais ypatingais atvejais galbūt norėsite taikyti šį leidimą vykdomiesiems failams. Pagal numatytuosius nustatymus vartotojas, vykdantis vykdomąjį failą, paleidžia tą failą su savo leidimais.

Paprastiems vartotojams tai paprastai reiškia, kad programos naudojimas yra ribotas. Tačiau kai kuriais atvejais vartotojas reikalauja specialių leidimų tik tam, kad galėtų atlikti konkrečią užduotį.

Apsvarstykite, pavyzdžiui, situaciją, kai vartotojas turi pakeisti slaptažodį. Norėdami tai padaryti, vartotojas turi įrašyti savo naują slaptažodį faile /etc/shadow. Tačiau šio failo negali įrašyti ne root vartotojai:

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

SUID leidimas siūlo šios problemos sprendimą. Programoje /usr/bin/passwd šis leidimas taikomas pagal numatytuosius nustatymus. Tai reiškia, kad pakeitus slaptažodį vartotojas laikinai įgyja root teises, kurios leidžia rašyti į /etc/shadow failą. SUID leidimą galite pamatyti naudodami palik tai kaip s tokioje padėtyje, kurioje paprastai tikitės pamatyti x pasirinktiems leidimams:

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

SUID leidimas gali atrodyti naudingas (o kai kuriais atvejais taip ir yra), tačiau jis taip pat gali būti pavojingas. Jei naudojamas neteisingai, galite netyčia suteikti root teises. Todėl rekomenduoju jį naudoti tik labai atsargiai.

Daugumai administratorių niekada nereikės jo naudoti; matysite tik kai kuriuose failuose, kuriuose operacinė sistema turėtų jį nustatyti pagal numatytuosius nustatymus.

Antrasis specialus leidimas yra grupės ID (SGID). Šis leidimas turi du efektus. Pritaikius vykdomajam failui, failą vykdančiam vartotojui suteikiami to failo grupės savininko leidimai. Taigi SGID gali padaryti daugiau ar mažiau tą patį, ką ir SUID. Tačiau SGID vargu ar naudojamas šiam tikslui.

Kaip ir su SUID leidimu, kai kuriems sistemos failams SGID taikomas kaip numatytasis nustatymas.

Pritaikius katalogui, SGID gali būti naudingas, nes galite jį naudoti norėdami nustatyti numatytąjį tame kataloge sukurtų failų ir pakatalogių grupės savininką. Pagal numatytuosius nustatymus, kai vartotojas sukuria failą, jo veiksminga pagrindinė grupė nustatoma kaip to failo grupės savininkas.

Tai ne visada labai naudinga, ypač todėl, kad „Red Hat“ / „CentOS“ naudotojų pagrindinė grupė yra nustatyta į grupę, kurios pavadinimas yra toks pat kaip ir vartotojas, ir kurios vienintelis narys yra vartotojas. Taigi pagal numatytuosius nustatymus vartotojo sukurti failai bus bendrinami grupėmis.

Įsivaizduokite situaciją, kai vartotojai linda ir lori dirba buhalterijoje ir yra grupės nariai sąskaita. Pagal numatytuosius nustatymus šie vartotojai yra privačios grupės, kurios vieninteliai nariai yra, nariai. Tačiau abu vartotojai yra paskyrų grupės nariai, bet taip pat yra antrinis grupės parametras.

Numatytoji situacija yra ta, kad kai kuris nors iš šių vartotojų sukuria failą, pagrindinė grupė tampa savininku. Todėl pagal nutylėjimą linda negali pasiekti lori sukurtų failų ir atvirkščiai. Tačiau jei sukuriate bendrinamą grupės katalogą (tarkim /groups/account) ir užtikrinate, kad tam katalogui būtų taikomas SGID leidimas ir kad grupės paskyra tam katalogui nustatyta kaip grupės savininkas, visi tame kataloge sukurti failai ir visi jo pakatalogius, taip pat gaukite grupės paskyrą kaip numatytąjį grupės savininką.

Dėl šios priežasties SGID leidimas yra labai naudingas leidimas diegti viešuose grupių kataloguose.

SGID leidimas rodomas išvestyje palik tai kaip s toje vietoje, kur paprastai rastumėte grupės vykdymo leidimą:

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

Trečiasis iš specialiųjų leidimų yra lipnus bitas. Šis leidimas naudingas norint apsaugoti failus nuo atsitiktinio ištrynimo aplinkoje, kurioje keli vartotojai turi rašymo prieigą prie to paties katalogo. Jei naudojamas lipnus bitas, vartotojas gali ištrinti failą tik tuo atveju, jei yra failo arba katalogo, kuriame yra failas, savininkas. Dėl šios priežasties tai yra numatytasis leidimas /tmp katalogui ir gali būti naudingas ir viešiesiems grupių katalogams.

Be lipniojo bito, jei vartotojas gali sukurti failus kataloge, jis taip pat gali ištrinti failus iš to katalogo. Viešoje grupėje tai gali erzinti. Įsivaizduokite vartotojus linda ir lori, kurie abu turi rašymo leidimus /data/account kataloge ir įgyja šiuos leidimus būdami paskyrų grupėje. Todėl linda gali ištrinti lori sukurtus failus ir atvirkščiai.

Kai taikote lipnų bitą, vartotojas gali ištrinti failus tik tada, kai yra viena iš šių sąlygų:

  • Vartotojas yra failo savininkas;
  • Vartotojas yra katalogo, kuriame yra failas, savininkas.

kai naudojant palik tai, galite pamatyti lipnų bitą t tokioje padėtyje, kurioje paprastai matote leidimą vykdyti kitiems:

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

Taikant išplėstines teises

Taip pat galite naudoti SUID, SGID ir lipnų antgalį chmod. SUID skaitinė reikšmė yra 4, SGID – 2, o lipniojo bito – 1.

Jei norite taikyti šiuos leidimus, turite pridėti keturių simbolių argumentą chmod, kurio pirmasis skaitmuo nurodo specialius leidimus. Pavyzdžiui, ši eilutė pridės SGID leidimą į katalogą ir nustatys rwx vartotojui ir rx grupei ir kitiems:

chmod 2755 /somedir

Tai gana nepraktiška, jei reikia pamatyti dabartinius leidimus, kurie nustatyti prieš pradedant dirbti chmod absoliučiu režimu. (Jei to nepadarysite, rizikuojate perrašyti leidimus.) Taigi rekomenduoju dirbti santykiniu režimu, jei reikia taikyti bet kurį iš specialių leidimų:

  1. SUID naudojimui chmod u+s.
  2. SGID naudojimui chmod g+s.
  3. Skirtas naudoti lipniam antgaliui chmod +tpo kurio nurodomas failo arba katalogo, kurio teises norite nustatyti, pavadinimas.

Lentelėje apibendrinama viskas, ką reikia žinoti apie specialiųjų leidimų valdymą.

„Linux“ leidimai (chown, chmod, SUID, GUID, lipnus bitas, ACL, umask)

Darbo su specialiomis teisėmis pavyzdys

Šiame pavyzdyje naudojate specialius leidimus, kad grupės nariams būtų lengviau bendrinti failus bendrai naudojamo grupės kataloge. Priskiriate nustatytos grupės ID ID bitą, taip pat lipnųjį bitą ir matote, kad juos nustačius, pridedamos funkcijos, kad grupės nariams būtų lengviau dirbti kartu.

  1. Atidarykite terminalą, kuriame esate Linda vartotojas. Galite sukurti vartotoją naudodami komandą Linda, pridėkite slaptažodį paswd Linda.
  2. Sukurkite /data katalogą šaknyje ir /data/sales pakatalogį naudodami komandą mkdir -p /duomenys/pardavimai. Vykdyti cd /duomenys/pardavimaieiti į pardavimo katalogą. Vykdyti palieskite linda1 и palieskite linda2sukurti du tuščius failus, priklausančius Lindai.
  3. Vykdyti su-lisa pakeisti dabartinį vartotoją į vartotoją Lisa, kuris taip pat yra pardavimo grupės narys.
  4. Vykdyti cd /duomenys/pardavimai ir paleisti iš šio katalogo palik tai. Pamatysite du failus, kuriuos sukūrė vartotojas linda ir kurie priklauso linda grupei. Vykdyti rm -f Linda*. Tai ištrins abu failus.
  5. Vykdyti palieskite lisa1 и palieskite lisa2sukurti du failus, kurie priklauso vartotojui lisa.
  6. Vykdyti su - kad padidintumėte savo teises į root.
  7. Vykdyti chmod g+s,o+t /duomenys/pardavimainustatyti grupės identifikatoriaus (GUID) bitą ir lipnųjį bitą bendrinamo grupės kataloge.
  8. Vykdyti su-linda. Tada daryk palieskite linda3 и palieskite linda4. Dabar turėtumėte pamatyti, kad du jūsų sukurti failai priklauso pardavimo grupei, kuri yra /data/sales katalogo grupės savininkė.
  9. Vykdyti rm -rf lisa*. Lipnus bitas neleidžia ištrinti šių failų kaip vartotojo Linda, nes jūs nesate šių failų savininkas. Atminkite, kad jei vartotojas Linda yra /data/sales katalogo savininkas, jis vis tiek gali ištrinti šiuos failus!

ACL valdymas (setfacl, getfacl) Linux

Nors aukščiau aptartos išplėstinės teisės prideda naudingų funkcijų Linux tvarkai su leidimais, tai neleidžia suteikti leidimų daugiau nei vienam vartotojui ar vienai grupei viename faile.

Prieigos valdymo sąrašai siūlo šią funkciją. Jie taip pat leidžia administratoriams sudėtingu būdu nustatyti numatytuosius leidimus, kai leidimai gali skirtis įvairiuose kataloguose.

ACL supratimas

Nors ACL posistemis prideda puikų jūsų serverio funkcionalumą, jis turi vieną trūkumą: ne visos komunalinės paslaugos jį palaiko. Todėl kopijuodami ar perkeldami failus galite prarasti ACL nustatymus, o atsarginės kopijos programinė įranga gali nekurti atsarginės ACL nustatymų kopijos.

Tar paslaugų programa nepalaiko ACL. Norėdami užtikrinti, kad ACL nustatymai nebūtų prarasti kuriant atsarginę kopiją, naudokite žvaigždė vietoj dervos. žvaigždė veikia su tais pačiais parametrais kaip ir tar; tai tiesiog prideda ACL nustatymų palaikymą.

Taip pat galite sukurti atsarginę ACL kopiją naudodami getfacl, kurią galima atkurti naudojant komandą setfacl. Norėdami sukurti atsarginę kopiją, naudokite getfacl -R /katalogas > failas.acls. Norėdami atkurti nustatymus iš atsarginės kopijos failo, naudokite setfacl --restore=file.acl.

Kai kurių įrankių palaikymo trūkumas neturėtų būti problema. ACL dažnai taikomos katalogams kaip struktūrinė priemonė, o ne atskiriems failams.
Todėl jų nebus daug, o tik keli, taikomi išmaniosiose failų sistemos vietose. Todėl gana lengva atkurti pradinius ACL, su kuriais dirbote, net jei atsarginė programinė įranga jų nepalaiko.

Failų sistemos paruošimas ACL

Prieš pradėdami dirbti su ACL, gali tekti paruošti failų sistemą, kad ji palaikytų ACL. Kadangi failų sistemos metaduomenis reikia išplėsti, failų sistemoje ne visada yra numatytasis ACL palaikymas. Jei konfigūruodami failų sistemos ACL gaunate pranešimą „operacija nepalaikoma“, jūsų failų sistema gali nepalaikyti ACL.

Norėdami tai išspręsti, turite pridėti parinktį acl laikiklis faile /etc/fstab, kad failų sistema būtų prijungta su ACL palaikymu pagal numatytuosius nustatymus.

ACL nustatymų keitimas ir peržiūra naudojant setfacl ir getfacl

Norėdami nustatyti ACL, jums reikia komandos setfacl. Norėdami pamatyti reikiamus dabartinius ACL nustatymus getfacl. Komanda palik tai nerodo jokių esamų ACL; jis tiesiog rodo + po leidimų sąrašo, kuris rodo, kad ACL taip pat galioja failui.

Prieš konfigūruojant ACL, visada naudinga parodyti esamus ACL nustatymus naudojant getfacl. Toliau pateiktame pavyzdyje galite pamatyti dabartinius leidimus, kaip parodyta palik tai, taip pat kaip parodyta su getfacl. Jei pažvelgsite pakankamai atidžiai, pamatysite, kad rodoma informacija yra lygiai tokia pati.

[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

Dėl komandos vykdymo getfacl Žemiau matote, kad leidimai rodomi trims skirtingiems objektams: naudotojui, grupei ir kitiems. Dabar pridėkime ACL, kad pardavimo grupei suteiktų skaitymo ir vykdymo leidimus. Tam skirta komanda setfacl -mg:pardavimas:rx /vad. Šioje komandoje -m rodo, kad reikia pakeisti esamus ACL nustatymus. Po to g:pardavimai:rx nurodo komandai nustatyti skaitymą ir vykdyti ACL (rx) grupei (g) pardavimai. Žemiau galite pamatyti, kaip atrodo komanda, taip pat komandos getfacl išvestį pakeitus esamus ACL nustatymus.

[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

Dabar, kai suprantate, kaip nustatyti grupės ACL, lengva suprasti ACL vartotojams ir kitiems vartotojams. Pavyzdžiui, komanda setfacl -mu:linda:rwx /data Suteikia leidimus vartotojui linda kataloge /data, nepadarydamas jo savininku ir nekeisdamas dabartinio savininko priskyrimo.

Komanda setfacl turi daug funkcijų ir parinkčių. Vienas iš variantų yra ypač svarbus – parametras -R. Jei naudojama, ši parinktis nustato ACL parametrą visiems failams ir pakatalogiams, kurie šiuo metu yra kataloge, kuriame nustatėte ACL. Rekomenduojama visada naudoti šią parinktį keičiant esamų katalogų ACL.

Darbas su numatytaisiais ACL

Vienas iš ACL naudojimo pranašumų yra tas, kad galite suteikti leidimus keliems vartotojams ar grupėms kataloge. Kitas privalumas yra tai, kad galite įjungti paveldėjimą dirbdami su numatytuoju ACL.

Nustatydami numatytąjį ACL, nustatysite leidimus, kurie bus nustatyti visiems naujiems kataloge sukurtiems elementams. Atminkite, kad numatytasis ACL nekeičia esamų failų ir pakatalogių teisių. Norėdami juos pakeisti, taip pat turite pridėti įprastą ACL!

Tai svarbu žinoti. Jei norite naudoti ACL, norėdami sukonfigūruoti kelis vartotojus ar grupes, kad pasiektų tą patį katalogą, turite nustatyti ACL du kartus. Pirmas naudojimas setfacl -R -mNorėdami pakeisti esamų failų ACL. Tada naudoti setfacl -md:pasirūpinti visais naujais elementais, kurie taip pat bus sukurti.

Norėdami nustatyti numatytąjį ACL, tereikia pridėti parinktį d po varianto -m (svarbu tvarka!). Taigi naudokite setfacl -md:g:pardavimas:rx /duomenysjei norite, kad grupiniai pardavimai skaitytų ir vykdytų viską, kas kada nors bus sukurta /data kataloge.

Naudojant numatytuosius ACL, taip pat gali būti naudinga nustatyti ACL kitiems. Paprastai tai nėra prasminga, nes taip pat galite pakeisti kitų naudotojų leidimus chmod. Tačiau ko tu negali padaryti chmod, yra nurodyti teises, kurios turėtų būti suteiktos kitiems vartotojams kiekvienam naujam kuriamam failui. Pavyzdžiui, jei norite neleisti kitiems gauti bet kokių leidimų, sukurtų aplanke /data, naudokite setfacl -md:o::- /data.

ACL ir įprasti leidimai ne visada yra gerai integruoti. Gali kilti problemų, jei katalogui pritaikysite numatytąjį ACL, pridėję elementų į tą katalogą ir bandysite pakeisti įprastus leidimus. Įprastiems leidimams taikomi pakeitimai nebus tinkamai atspindėti ACL apžvalgoje. Norėdami išvengti problemų, pirmiausia nustatykite įprastus leidimus, tada nustatykite numatytuosius ACL (o po to stenkitės jų nebekeisti).

Išplėstinių teisių valdymo naudojant ACL pavyzdys

Šiame pavyzdyje toliau dirbsite su anksčiau sukurtais /data/account ir /data/sales katalogais. Ankstesniuose pavyzdžiuose užtikrinote, kad pardavimo grupė turėjo leidimus /data/sales, o paskyrų grupė - /data/account.

Pirmiausia įsitikinkite, kad paskyrų grupė turi skaitymo leidimus /data/sales kataloge ir pardavimų grupė turi skaitymo leidimus /data/account kataloge.

Tada nustatote numatytuosius ACL, kad užtikrintumėte, jog visų naujų failų leidimai būtų tinkamai nustatyti visiems naujiems elementams.

  1. Atidarykite terminalą.
  2. Vykdyti setfacl -mg:account:rx /data/sales и setfacl -mg:pardavimai:rx /duomenys/sąskaita.
  3. Vykdyti getfaclkad įsitikintumėte, jog leidimai nustatyti taip, kaip norėjote.
  4. Vykdyti setfacl -md:g:sąskaita:rwx,g:pardavimai:rx /duomenys/pardavimasnorėdami nustatyti numatytąjį pardavimo katalogo ACL.
  5. Pridėkite numatytąjį ACL katalogui /data/account naudodami setfacl -md:g:pardavimas:rwx,g:sąskaita:rx /duomenys/sąskaita.
  6. Patikrinkite, ar jūsų ACL nustatymai galioja, įtraukdami naują failą į /data/sales. Vykdyti palieskite /data/sales/newfile ir vykdyti getfacl /data/sales/newfile norėdami patikrinti esamus leidimus.

Numatytųjų leidimų nustatymas naudojant umask

Aukščiau sužinojote, kaip dirbti su numatytaisiais ACL. Jei nenaudojate ACL, yra apvalkalo parinktis, kuri nustato numatytuosius leidimus, kuriuos gausite: umaskas (atvirkštinė kaukė). Šiame skyriuje sužinosite, kaip pakeisti numatytuosius leidimus naudojant umaskas.

Galbūt pastebėjote, kad kai kuriate naują failą, nustatomi kai kurie numatytieji leidimai. Šie leidimai nustatomi pagal nustatymą umaskas. Šis apvalkalo nustatymas taikomas visiems prisijungusiems vartotojams. Parametre umaskas naudojama skaitinė reikšmė, kuri atimama iš maksimalių leidimų, kuriuos galima automatiškai nustatyti failui; Didžiausias failų nustatymas yra 666, o katalogų - 777.

Tačiau šiai taisyklei taikomos kai kurios išimtys. Galite rasti visą nustatymų apžvalgą umaskas žemiau esančioje lentelėje.

Iš naudojamų skaičių umaskas, kaip ir su skaitiniais komandos argumentais chmod, pirmasis skaitmuo nurodo vartotojo teises, antrasis skaitmuo nurodo grupės leidimus, o paskutinis nurodo numatytuosius leidimus, nustatytus kitiems. Reikšmė umaskas numatytasis 022 suteikia 644 visiems naujiems failams ir 755 visiems naujiems jūsų serveryje sukurtiems katalogams.

Išsami visų skaitinių reikšmių apžvalga umaskas ir jų rezultatus žemiau esančioje lentelėje.

„Linux“ leidimai (chown, chmod, SUID, GUID, lipnus bitas, ACL, umask)

Paprastas būdas sužinoti, kaip veikia umask nustatymas, yra toks: pradėkite nuo numatytųjų failo teisių, nustatytų į 666, ir atimkite umask, kad gautumėte galiojančius leidimus. Atlikite tą patį su katalogu ir jo numatytosiomis 777 leidimais.

Yra du būdai pakeisti umask nustatymą: visiems vartotojams ir atskiriems vartotojams. Jei norite nustatyti umask visiems vartotojams, turite užtikrinti, kad umask parametras būtų laikomasi paleisdami apvalkalo aplinkos failus, kaip nurodyta /etc/profile. Teisingas būdas yra sukurti apvalkalo scenarijų pavadinimu umask.sh kataloge /etc/profile.d ir nurodyti umask, kurį norite naudoti tame apvalkalo scenarijuje. Jei šiame faile pakeičiamas umask, jis taikomas visiems vartotojams prisijungus prie serverio.

Alternatyva umask nustatymui per /etc/profile ir susijusius failus, kur jis taikomas visiems prisijungusiems vartotojams, yra pakeisti umask nustatymus faile, vadinamame .profile, kuris sukuriamas kiekvieno vartotojo namų kataloge.

Šiame faile taikomi nustatymai taikomi tik atskiram vartotojui; todėl tai yra geras metodas, jei reikia daugiau informacijos. Man asmeniškai patinka ši funkcija pakeisti pagrindinio vartotojo numatytąjį umask į 027, o įprasti vartotojai dirba su numatytuoju umask 022.

Darbas su išplėstiniais vartotojo atributais

Tai paskutinis „Linux“ leidimų skyrius.

Kai dirbate su leidimais, visada yra ryšys tarp vartotojo ar grupės objekto ir teisių, kurias tie vartotojo ar grupės objektai turi faile arba kataloge. Alternatyvus būdas apsaugoti failus Linux serveryje yra dirbti su atributais.
Atributai atlieka savo darbą nepriklausomai nuo vartotojo, kuris pasiekia failą.

Kaip ir naudojant ACL, gali reikėti įjungti failų atributus. stovas.

Tai yra galimybė user_xattr. Jei dirbdami su išplėstiniais vartotojo atributais gaunate pranešimą „operacija nepalaikoma“, būtinai nustatykite stovas faile /etc/fstab.

Daugelis atributų yra dokumentuoti. Kai kurie atributai galimi, bet dar neįdiegti. Nenaudokite jų; jie tau nieko neatneš.

Toliau pateikiami naudingiausi atributai, kuriuos galite pritaikyti:

A Šis atributas užtikrina, kad failo prieigos laikas nepasikeistų.
Paprastai kiekvieną kartą, kai failas atidaromas, failo metaduomenyse turi būti įrašomas failo prieigos laikas. Tai neigiamai veikia našumą; todėl reguliariai pasiekiamiems failams atributas A gali būti naudojamas šiai funkcijai išjungti.

a Šis atributas leidžia pridėti, bet ne ištrinti failą.

c Jei naudojate failų sistemą, kuri palaiko glaudinimą garsumo lygiu, šis failo atributas užtikrina, kad failas būtų suglaudintas, kai pirmą kartą įjungiamas glaudinimo variklis.

D Šis atributas užtikrina, kad failų pakeitimai iš karto įrašomi į diską, o ne pirmiausia į talpyklą. Tai naudingas svarbių duomenų bazės failų atributas, užtikrinantis, kad jie neprarastų tarp failų talpyklos ir standžiojo disko.

d Šis atributas užtikrina, kad failas nebūtų išsaugotas atsarginėse kopijose, kuriose naudojama iškelties programa.

I Šis atributas leidžia indeksuoti katalogą, kuriame jis įgalintas. Tai suteikia greitesnę prieigą prie failų primityvioms failų sistemoms, tokioms kaip Ext3, kurios nenaudoja B-tree duomenų bazės, kad galėtų greitai pasiekti failus.

i Šis atributas daro failą nekintamą. Todėl negalima keisti failo, o tai naudinga failams, kuriems reikia papildomos apsaugos.

j Šis atributas užtikrina, kad ext3 failų sistemoje failas pirmiausia įrašomas į žurnalą, o tada į duomenų blokus standžiajame diske.

s Perrašyti blokus, kuriuose failas buvo išsaugotas 0 s po to, kai failas buvo ištrynęs. Taip užtikrinama, kad ištrynus failą nebus galima atkurti.

u Šis atributas saugo informaciją apie ištrynimą. Tai leidžia jums sukurti programą, kuri veikia su šia informacija, kad išgelbėtų ištrintus failus.

Jei norite taikyti atributus, galite naudoti komandą plepėti. Pavyzdžiui, naudoti chattr +s koks nors failaspritaikyti atributus kokiam nors failui. Reikia pašalinti atributą? Tada naudokite chattr -s somefile, ir jis bus ištrintas. Norėdami gauti visų šiuo metu taikomų atributų apžvalgą, naudokite komandą lsattr.

Santrauka

Šiame straipsnyje sužinojote, kaip dirbti su leidimais. Perskaitėte apie tris pagrindinius leidimus, išplėstinius leidimus ir kaip naudoti ACL failų sistemoje. Taip pat sužinojote, kaip naudoti umask parametrą numatytiesiems leidimams taikyti. Šio straipsnio pabaigoje sužinojote, kaip naudoti vartotojo išplėstinius atributus, kad pritaikytumėte papildomą failų sistemos saugos sluoksnį.

Jei jums patiko šis vertimas, parašykite apie tai komentaruose. Atsiras daugiau motyvacijos daryti naudingus vertimus.

Ištaisiau kai kurias rašybos ir gramatines klaidas straipsnyje. Kai kurios stambios pastraipos sumažintos į mažesnes, kad būtų lengviau skaityti.

Vietoj „Tik asmuo, turintis administravimo teises į katalogą, gali taikyti vykdymo leidimą“. pataisyta į „Tik asmuo, turintis rašymo prieigą prie katalogo, gali taikyti vykdymo leidimą.“, kuris būtų teisingesnis.

Ačiū už komentarus berez.

Pakeistas:
Jei nesate vartotojo savininkas, apvalkalas patikrins, ar esate grupės, dar vadinamos failo grupe, narys.

Įjungta:
Jei nesate failo savininkas, apvalkalas patikrins, ar esate grupės, turinčios failo teises, narys. Jei esate šios grupės narys, failą pasieksite su grupei nustatytais leidimais, o apvalkalas nustos tikrinti.

Ačiū už tavo komentarą KriptoPiratas

Šaltinis: www.habr.com

Добавить комментарий