Dovoljenja v Linuxu (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Pozdravljeni vsi skupaj. To je prevod članka iz knjige RedHat RHCSA RHCE 7 RedHat Enterprise Linux 7 EX200 in EX300.

Push: Upam, da bo članek koristen ne le za začetnike, ampak bo tudi izkušenejšim skrbnikom pomagal izboljšati svoje znanje.

Torej gremo.

Dovoljenja v Linuxu (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Za dostop do datotek v Linuxu se uporabljajo dovoljenja. Ta dovoljenja so dodeljena trem objektom: lastniku datoteke, lastniku skupine in drugemu objektu (to je vsem ostalim). V tem članku se boste naučili, kako uporabiti dovoljenja.

Ta članek se začne s pregledom osnovnih konceptov, ki mu sledi razprava o posebnih dovoljenjih in seznamih za nadzor dostopa (ACL). Na koncu tega članka obravnavamo nastavitev privzetih dovoljenj prek umask, kot tudi upravljanje razširjenih uporabniških atributov.

Upravljanje lastništva datotek

Pred razpravo o dovoljenjih se morate zavedati vloge lastnika datoteke in imenika. Lastništvo datotek in imenikov je bistveno za obravnavanje dovoljenj. V tem razdelku boste najprej izvedeli, kako lahko vidite lastnika. Nato se boste naučili, kako spremeniti lastnika in uporabnika skupine za datoteke in imenike.

Prikaz lastnika datoteke ali imenika

V Linuxu ima vsaka datoteka in vsak imenik dva lastnika: uporabnika in lastnika skupine.

Ti lastniki so nastavljeni, ko se ustvari datoteka ali imenik. Uporabnik, ki ustvari datoteko, postane lastnik te datoteke in primarna skupina, ki ji isti uporabnik pripada, prav tako postane lastnik te datoteke. Da ugotovi, ali imate kot uporabnik dovoljenje za dostop do datoteke ali imenika, lupina preveri lastništvo.

To se zgodi v naslednjem vrstnem redu:

  1. Lupina preveri, ali ste lastnik datoteke, do katere želite dostopati. Če ste lastnik, dobite dovoljenja in lupina preneha preverjati.
  2. Če niste lastnik datoteke, bo lupina preverila, ali ste član skupine, ki ima dovoljenja za datoteko. Če ste član te skupine, boste do datoteke dostopali z dovoljenji, ki jih je skupina nastavila, lupina pa bo prenehala preverjati.
  3. Če niste niti uporabnik niti lastnik skupine, imate pravice drugih uporabnikov (Other).

Če si želite ogledati trenutne dodelitve lastnika, lahko uporabite ukaz ls -l. Ta ukaz prikazuje uporabnika in lastnika skupine. Spodaj si lahko ogledate lastniške nastavitve za imenike v imeniku /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

Z ukazom ls lahko prikažete lastnika datotek v danem imeniku. Včasih je lahko koristno pridobiti seznam vseh datotek v sistemu, katerih lastnik je dani uporabnik ali skupina. Za to lahko uporabite iskanje. Prepir najdi uporabnika se lahko uporabijo v ta namen. Naslednji ukaz na primer navede vse datoteke, ki so v lasti uporabnika linda:

find / -user linda

Uporabite lahko tudi iskanje za iskanje datotek, katerih lastnik je določena skupina.

Naslednji ukaz na primer išče vse datoteke, ki pripadajo skupini Uporabniki:

find / -group users

Sprememba lastnika

Za uporabo ustreznih dovoljenj je najprej treba upoštevati lastništvo. Za to obstaja ukaz chown. Sintakso tega ukaza je enostavno razumeti:

chown кто что

Naslednji ukaz na primer spremeni lastnika imenika /home/account v uporabnika linda:

chown linda /home/account

Ekipa chown ima več možnosti, od katerih je ena posebej uporabna: -R. Lahko ugibate, kaj počne, ker je ta možnost na voljo tudi za številne druge ukaze. To vam omogoča rekurzivno nastavitev lastnika, kar vam omogoča nastavitev lastnika trenutnega imenika in vsega spodaj. Naslednji ukaz spremeni lastništvo imenika /home in vsega pod njim na uporabnika linda:

Zdaj lastniki izgledajo takole:

[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

Naredimo:

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

Zdaj je uporabnica lisa postala lastnica imenika računov:

[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

Spremenite lastnika skupine

Lastništvo skupine lahko spremenite na dva načina. To lahko storite z uporabo chown, vendar obstaja poseben ukaz z imenom chgrpto opravi delo. Če želite uporabiti ukaz chown, uporaba . ali : pred imenom skupine.

Naslednji ukaz spremeni katerega koli lastnika skupine /home/account v skupino računov:

chown .account /home/account

lahko uporabiš chown spremeniti lastnika uporabnika in/ali skupine na več načinov. Tukaj je nekaj primerov:

  • chown lisa moja datoteka1 nastavi uporabnika lisa kot lastnika myfile1.
  • chown lisa.prodaja moja datoteka nastavi uporabnika lisa kot lastnika datoteke myfile in nastavi prodajno skupino kot lastnika iste datoteke.
  • chown lisa: prodaja moja datoteka enako kot prejšnji ukaz.
  • chown .prodaja moja datoteka nastavi prodajno skupino kot lastnika moje datoteke, ne da bi spremenil lastnika uporabnika.
  • chown :prodaja moja datoteka enako kot prejšnji ukaz.

Uporabite lahko ukaz chgrpda spremenite lastnika skupine. Razmislite o naslednjem primeru, kjer lahko uporabite chgrp nastavite lastnika imenika računa na prodajno skupino:

chgrp .sales /home/account

Kot z chown, lahko uporabite možnost -R с chgrp, kot tudi rekurzivno spremenite lastnika skupine.

Razumevanje privzetega lastnika

Morda ste opazili, da ko uporabnik ustvari datoteko, se uporabi privzeto lastništvo.
Uporabnik, ki ustvari datoteko, samodejno postane lastnik te datoteke in primarna skupina tega uporabnika samodejno postane lastnik te datoteke. To je običajno skupina, ki je navedena v datoteki /etc/passwd kot primarna skupina uporabnika. Če pa je uporabnik član več kot ene skupine, lahko spremeni dejansko primarno skupino.

Za prikaz trenutne efektivne primarne skupine lahko uporabnik uporabi ukaz skupine:

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

Če trenutni uporabnik linda želi spremeniti dejansko primarno skupino, bo uporabil ukaz nova grpki mu sledi ime skupine, ki jo želi nastaviti kot novo učinkovito primarno skupino. Po uporabi ukaza nova grp primarna skupina bo aktivna, dokler uporabnik ne vnese ukaza izhod ali se ne odjavite.

Naslednje prikazuje, kako uporabnica linda uporablja ta ukaz s prodajo kot primarno skupino:

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

Po spremembi dejanske primarne skupine bodo vse nove datoteke, ki jih ustvari uporabnik, imele to skupino kot lastnika skupine. Če se želite vrniti na prvotno nastavitev primarne skupine, uporabite izhod.

Da bi lahko uporabili ukaz nova grp, mora biti uporabnik član skupine, ki jo želi uporabiti kot primarno skupino. Poleg tega lahko skupinsko geslo uporabite za skupino z ukazom gpasswd. Če uporabnik uporabi ukaz nova grpvendar ni član ciljne skupine, lupina zahteva geslo skupine. Ko vnesete pravilno geslo skupine, bo vzpostavljena nova učinkovita primarna skupina.

Upravljanje temeljnih pravic

Sistem dovoljenj za Linux je bil izumljen v sedemdesetih letih prejšnjega stoletja. Ker so bile računalniške potrebe v tistih letih omejene, je bil osnovni sistem dovoljenj precej omejen. Ta sistem dovoljenj uporablja tri dovoljenja, ki jih je mogoče uporabiti za datoteke in imenike. V tem razdelku se boste naučili uporabljati in spreminjati ta dovoljenja.

Razumevanje dovoljenj za branje, pisanje in izvajanje

Tri osnovna dovoljenja vam omogočajo branje, pisanje in izvajanje datotek. Učinek teh dovoljenj se razlikuje, če se uporabijo za datoteke ali imenike. Za datoteko vam dovoljenje za branje daje pravico, da odprete datoteko za branje. Zato lahko preberete njeno vsebino, vendar to pomeni, da lahko vaš računalnik odpre datoteko in z njo nekaj naredi.

Programska datoteka, ki potrebuje dostop do knjižnice, mora imeti na primer bralni dostop do te knjižnice. Iz tega sledi, da je dovoljenje za branje najbolj osnovno dovoljenje, ki ga potrebujete za delo z datotekami.

Ko se uporablja za imenik, vam branje omogoča prikaz vsebine tega imenika. Zavedati se morate, da vam to dovoljenje ne dovoljuje branja datotek v imeniku. Sistem dovoljenj Linux ne pozna dedovanja in edini način za branje datoteke je uporaba dovoljenj za branje te datoteke.

Kot verjetno ugibate, dovoljenje za pisanje, če je uporabljeno za datoteko, dovoljuje pisanje v datoteko. Z drugimi besedami, omogoča spreminjanje vsebine obstoječih datotek. Vendar vam ne dovoljuje ustvarjanja ali brisanja novih datotek ali spreminjanja dovoljenj za datoteke. Če želite to narediti, morate dati dovoljenje za pisanje v imenik, kjer želite ustvariti datoteko. V imenikih vam to dovoljenje omogoča tudi ustvarjanje in brisanje novih podimenikov.

Dovoljenje za izvajanje je tisto, kar potrebujete za izvedbo datoteke. Nikoli ne bo privzeto nameščen, zaradi česar je Linux skoraj popolnoma imun na viruse. Samo nekdo z dovoljenji za pisanje v imeniku lahko uporabi dovoljenje za izvajanje.

Naslednje povzema uporabo osnovnih dovoljenj:

Dovoljenja v Linuxu (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Uporaba chmod

Ukaz se uporablja za upravljanje dovoljenj. chmod... Uporaba chmod nastavite lahko dovoljenja za uporabnika (user), skupine (group) in druge (other). Ta ukaz lahko uporabljate v dveh načinih: relativnem načinu in absolutnem načinu. V absolutnem načinu se za nastavitev osnovnih dovoljenj uporabljajo tri števke.

Dovoljenja v Linuxu (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Ko nastavljate dovoljenja, izračunajte vrednost, ki jo potrebujete. Če želite nastaviti branje/pisanje/izvajanje za uporabnika, branje/izvajanje za skupino in branje/izvajanje za druge v /somefile, potem uporabite naslednji ukaz chmod:

chmod 755 /somefile

Ko uporabljate chmod na ta način se vsa trenutna dovoljenja nadomestijo z dovoljenji, ki ste jih nastavili.

Če želite spremeniti dovoljenja glede na trenutna dovoljenja, lahko uporabite chmod v relativnem načinu. Uporaba chmod v relativnem načinu delate s tremi indikatorji, ki kažejo, kaj želite narediti:

  1. Najprej določite, za koga želite spremeniti dovoljenja. Če želite to narediti, lahko izbirate med uporabnikom (u), skupina (g) in drugi (o).
  2. Nato uporabite izjavo za dodajanje ali odstranitev dovoljenj iz trenutnega načina ali pa jih absolutno nastavite.
  3. Na koncu uporabite r, w и xda določite, katera dovoljenja želite nastaviti.

Ko spreminjate dovoljenja v relativnem načinu, lahko preskočite del »do«, da dodate ali odstranite dovoljenje za vse predmete. Na primer, ta ukaz doda dovoljenje za izvajanje za vse uporabnike:

chmod +x somefile

Pri delu v relativnem načinu lahko uporabite tudi bolj zapletene ukaze. Na primer, ta ukaz skupini doda dovoljenje za pisanje in drugim odstrani dovoljenje za branje:

chmod g+w,o-r somefile

Pri uporabi chmod -R o+rx /podatki nastavite dovoljenje za izvajanje za vse imenike kot tudi za datoteke v imeniku /data. Če želite nastaviti dovoljenje za izvajanje samo za imenike in ne za datoteke, uporabite chmod -R o+ rX /podatki.

Velika črka X zagotavlja, da datoteke ne dobijo dovoljenja za izvajanje, razen če ima datoteka že nastavljeno dovoljenje za izvajanje za nekatere predmete. Zaradi tega je X pametnejši način za obravnavanje dovoljenj za izvajanje; s tem se boste izognili nastavitvi tega dovoljenja za datoteke, kjer to ni potrebno.

Razširjene pravice

Poleg osnovnih dovoljenj, o katerih ste pravkar prebrali, ima Linux tudi nabor naprednih dovoljenj. To niso dovoljenja, ki ste jih nastavili privzeto, vendar včasih nudijo uporaben dodatek. V tem razdelku boste izvedeli, kaj so in kako jih nastaviti.

Razumevanje razširjenih dovoljenj SUID, GUID in Sticky Bit

Obstajajo tri napredna dovoljenja. Prva od teh je dovoljenje za nastavitev identifikatorja uporabnika (SUID). V nekaterih posebnih primerih lahko to dovoljenje uporabite za izvršljive datoteke. Privzeto uporabnik, ki zažene izvršljivo datoteko, zažene to datoteko s svojimi dovoljenji.

Za običajne uporabnike to običajno pomeni, da je uporaba programa omejena. Vendar pa v nekaterih primerih uporabnik potrebuje posebna dovoljenja samo za izvedbo določene naloge.

Razmislite na primer o situaciji, ko mora uporabnik spremeniti svoje geslo. Za to mora uporabnik zapisati svoje novo geslo v datoteko /etc/shadow. Vendar te datoteke ne morejo zapisovati nekorenski uporabniki:

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

Dovoljenje SUID ponuja rešitev za to težavo. Pripomoček /usr/bin/passwd privzeto uporablja to dovoljenje. To pomeni, da ob spremembi gesla uporabnik začasno postane root, kar mu omogoča pisanje v datoteko /etc/shadow. Dovoljenje SUID lahko vidite z ls -l kot s v položaju, kjer bi ga običajno pričakovali x za dovoljenja po meri:

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

Dovoljenje SUID je morda videti uporabno (in v nekaterih primerih je), vendar je hkrati potencialno nevarno. Če ne uporabite pravilno, lahko pomotoma podelite korenska dovoljenja. Zato priporočam uporabo le z največjo previdnostjo.

Večini skrbnikov ga nikoli ne bo treba uporabiti; videli ga boste samo v nekaterih datotekah, kjer bi ga operacijski sistem moral nastaviti privzeto.

Drugo posebno dovoljenje je identifikator skupine (SGID). To dovoljenje ima dva učinka. Ko se uporabi za izvršljivo datoteko, daje uporabniku, ki izvaja datoteko, dovoljenja lastnika skupine datoteke. Torej lahko SGID naredi bolj ali manj isto stvar kot SUID. Vendar se SGID v ta namen praktično ne uporablja.

Kot pri dovoljenju SUID se SGID uporablja za nekatere sistemske datoteke kot privzeta nastavitev.

Ko je SGID uporabljen za imenik, je lahko koristen, saj ga lahko uporabite za nastavitev privzetega lastnika skupine za datoteke in podimenike, ustvarjene v tem imeniku. Ko uporabnik ustvari datoteko, je njegova efektivna primarna skupina privzeto nastavljena kot lastnik skupine za to datoteko.

To ni vedno zelo uporabno, zlasti ker imajo uporabniki Red Hat/CentOS svojo primarno skupino nastavljeno na skupino z enakim imenom kot uporabnik in katere uporabnik je edini član. Tako bodo privzeto datoteke, ki jih ustvari uporabnik, v skupni rabi v velikem obsegu.

Predstavljajte si situacijo, ko uporabnika linda in lori delata v računovodstvu in sta člana skupine račun. Ti uporabniki so privzeto člani zasebne skupine, katere edini član so. Vendar sta oba uporabnika člana skupine računov, vendar tudi kot parameter sekundarne skupine.

Privzeta situacija je, da ko kateri koli od teh uporabnikov ustvari datoteko, postane lastnik primarna skupina. Zato linda privzeto ne more dostopati do datotek, ki jih je ustvaril lori, in obratno. Vendar, če ustvarite imenik skupine v skupni rabi (recimo /groups/account) in zagotovite, da je dovoljenje SGID uporabljeno za ta imenik in da je račun skupine nastavljen kot lastnik skupine za ta imenik, bodo vse datoteke, ustvarjene v tem imeniku, in vse njegovih podimenikov, privzeto pridobi tudi račun skupine kot lastnika skupine.

Zaradi tega je dovoljenje SGID zelo uporabno dovoljenje za nastavitev imenikov javnih skupin.

Dovoljenje SGID je prikazano v izhodu ls -l kot s na položaju, kjer bi običajno našli dovoljenje za izvedbo skupine:

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

Tretje od posebnih dovoljenj je lepljivi bit. To dovoljenje je uporabno za zaščito datotek pred nenamernim brisanjem v okolju, kjer ima več uporabnikov dostop za pisanje v isti imenik. Če je uporabljen lepljivi bit, lahko uporabnik izbriše datoteko le, če je lastnik datoteke ali imenika, ki vsebuje datoteko. Zaradi tega se uporablja kot privzeto dovoljenje za imenik /tmp in je lahko uporabno tudi za imenike javnih skupin.

Brez lepljivega bita, če lahko uporabnik ustvari datoteke v imeniku, lahko tudi izbriše datoteke iz tega imenika. V okolju javne skupine je to lahko nadležno. Predstavljajte si uporabnici linda in lori, ki imata oba dovoljenja za pisanje v imenik /data/account in ta dovoljenja pridobita, ker sta člana skupine računov. Zato lahko linda izbriše datoteke, ki jih je ustvaril lori, in obratno.

Ko uporabite lepljivi bit, lahko uporabnik izbriše datoteke le, če je izpolnjen eden od naslednjih pogojev:

  • Uporabnik je lastnik datoteke;
  • Uporabnik je lastnik imenika, v katerem se nahaja datoteka.

Pri uporabi ls -l, lepljivi košček lahko vidite kot t na položaju, kjer bi običajno videli dovoljenje za izvajanje za druge:

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

Uporaba razširjenih pravic

Uporabite lahko tudi SUID, SGID in lepljivi bit chmod. SUID ima številsko vrednost 4, SGID ima številsko vrednost 2 in lepljivi bit ima številsko vrednost 1.

Če želite uporabiti ta dovoljenja, morate dodati štirimestni argument chmod, katerega prva številka se nanaša na posebna dovoljenja. Naslednja vrstica bo na primer dodala dovoljenje SGID v imenik in nastavila rwx za uporabnika in rx za skupino in druge:

chmod 2755 /somedir

To je precej nepraktično, če morate pred delom videti trenutna dovoljenja, ki so nastavljena chmod v absolutnem načinu. (Če tega ne storite, tvegate, da boste prepisali dovoljenja.) Zato priporočam, da zaženete v relativnem načinu, če morate uporabiti katero od posebnih dovoljenj:

  1. Za uporabo SUID chmod u+s.
  2. Za uporabo SGID chmod g+s.
  3. Za lepljivo uporabo chmod +t, ki mu sledi ime datoteke ali imenika, za katerega želite nastaviti dovoljenja.

Tabela povzema vse, kar morate vedeti o upravljanju posebnih dovoljenj.

Dovoljenja v Linuxu (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Primer dela s posebnimi pravicami

V tem primeru uporabite posebna dovoljenja, da članom skupine olajšate skupno rabo datotek v skupnem imeniku skupine. Nastavljenemu ID-ju skupine dodelite bit ID-ja in lepljivi bit ter vidite, da so, ko so nastavljeni, dodane funkcije, ki članom skupine olajšajo skupno delo.

  1. Odprite terminal, kjer ste uporabnik linda. Z ukazom lahko ustvarite uporabnika Linda, dodajte geslo passwd Linda.
  2. Ustvarite imenik /data v korenu in podimenik /data/sales z ukazom mkdir -p /podatki/prodaja. Popolna cd /podatki/prodajada greste v prodajni imenik. Popolna dotakni se linda1 и dotakni se linda2da ustvarite dve prazni datoteki v lasti linde.
  3. Izvedite su-lisa preklop trenutne uporabnice na uporabnico lisa, ki je tudi članica prodajne skupine.
  4. Izvedite cd /podatki/prodaja in iz tega imenika izvedite ls -l. Videli boste dve datoteki, ki ju je ustvaril uporabnik linda in pripadata skupini linda. Popolna rm -f linda*. S tem boste odstranili obe datoteki.
  5. Izvedite dotik lisa1 и dotik lisa2ustvariti dve datoteki, ki sta v lasti uporabnika lisa.
  6. Izvedite su- da povišate svoje privilegije na root.
  7. Izvedite chmod g+s,o+t /data/salesza nastavitev bita identifikatorja skupine (GUID) in lepljivega bita v imeniku skupine v skupni rabi.
  8. Izvedite su-linda. Potem naredi dotakni se linda3 и dotakni se linda4. Zdaj bi morali videti, da sta dve datoteki, ki ste ju ustvarili, v lasti prodajne skupine, ki je skupinski lastnik imenika /data/sales.
  9. Izvedite rm -rf lisa*. Lepljivi bit preprečuje brisanje teh datotek v imenu uporabnika linda, ker niste lastnik teh datotek. Upoštevajte, da če je uporabnik linda lastnik imenika /data/sales, lahko vseeno izbriše te datoteke!

Upravljanje ACL (setfacl, getfacl) v Linuxu

Čeprav razširjena dovoljenja, o katerih smo razpravljali zgoraj, dodajajo uporabne funkcije načinu, kako Linux obravnava dovoljenja, vam ne dovoljujejo podelitve dovoljenj več kot enemu uporabniku ali skupini v isti datoteki.

Seznami za nadzor dostopa ponujajo to funkcijo. Poleg tega skrbnikom omogočajo zapleteno nastavitev privzetih dovoljenj, pri čemer se nastavljena dovoljenja lahko razlikujejo od imenika do imenika.

Razumevanje ACL-jev

Čeprav podsistem ACL doda odlično funkcionalnost vašemu strežniku, ima eno pomanjkljivost: ne podpirajo ga vsi pripomočki. Zato lahko izgubite svoje nastavitve ACL, ko kopirate ali premikate datoteke, vaša programska oprema za varnostno kopiranje pa morda ne bo uspela varnostno kopirati vaših nastavitev ACL.

Pripomoček tar ne podpira ACL-jev. Če želite zagotoviti, da se nastavitve ACL ne izgubijo, ko ustvarite varnostno kopijo, uporabite zvezda namesto katrana. zvezda deluje z enakimi možnostmi kot tar; samo doda podporo za nastavitve ACL.

ACL-je lahko tudi varnostno kopirate z getfacl, ki ga lahko obnovite z ukazom setfacl. Če želite ustvariti varnostno kopijo, uporabite getfacl -R /imenik > datoteka.acls. Če želite obnoviti nastavitve iz varnostne kopije, uporabite setfacl --restore=file.acl.

Pomanjkanje podpore nekaterih orodij ne bi smelo biti problem. ACL-ji se pogosto uporabljajo za imenike kot strukturno merilo in ne za posamezne datoteke.
Zato jih ne bo veliko, ampak le nekaj, uporabljenih na pametnih mestih v datotečnem sistemu. Zato je obnovitev prvotnih ACL-jev, s katerimi ste delali, relativno enostavna, tudi če jih vaša programska oprema za varnostno kopiranje ne podpira.

Priprava datotečnega sistema za ACL

Preden začnete delati z ACL-ji, boste morda morali pripraviti svoj datotečni sistem za podporo ACL-jev. Ker je treba metapodatke datotečnega sistema razširiti, v datotečnem sistemu ni vedno privzete podpore za ACL. Če pri nastavitvi ACL-jev za datotečni sistem prejmete sporočilo "operacija ni podprta", vaš datotečni sistem morda ne podpira ACL-jev.

Če želite to popraviti, morate dodati možnost acl mount v /etc/fstab, tako da je datotečni sistem privzeto nameščen s podporo za ACL.

Spreminjanje in ogled nastavitev ACL s setfacl in getfacl

Če želite nastaviti ACL, potrebujete ukaz setfacl. Če želite videti trenutne nastavitve ACL, potrebujete getfacl. Ekipa ls -l ne prikazuje nobenih obstoječih ACL-jev; prikazuje samo + za seznamom dovoljenj, kar pomeni, da ACL-ji veljajo tudi za datoteko.

Preden nastavite ACL, je vedno dobro prikazati trenutne nastavitve ACL getfacl. V spodnjem primeru lahko vidite trenutna dovoljenja, kot je prikazano z ls -l, in tudi kot je prikazano z getfacl. Če pogledate dovolj natančno, boste videli, da so prikazane informacije popolnoma enake.

[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

Kot rezultat izvajanja ukaza getfacl spodaj lahko vidite, da so dovoljenja prikazana za tri različne objekte: uporabnik, skupina in drugi. Zdaj pa dodamo ACL, da tudi prodajni skupini podelimo dovoljenja za branje in izvajanje. ukaz za to setfacl -mg:prodaja:rx /dir. V tej ekipi -m označuje, da je treba trenutne nastavitve ACL spremeniti. Potem g:prodaja:rx pove ukazu, naj nastavi ACL za branje-izvajanje (rx) za skupino (g) prodaja. Spodaj si lahko ogledate, kako izgleda ukaz, kot tudi izhod ukaza getfacl po spremembi trenutnih nastavitev 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

Zdaj, ko razumete, kako nastaviti skupinski ACL, je enostavno razumeti ACL za uporabnike in druge uporabnike. Na primer ukaz setfacl -mu:linda:rwx /podatki daje dovoljenja uporabniku linda v imeniku /data, ne da bi ga postavil za lastnika ali spremenil dodelitev trenutnega lastnika.

Ekipa setfacl ima veliko funkcij in možnosti. Ena možnost je še posebej pomembna, parameter -R. Če je ta možnost uporabljena, ACL nastavi za vse datoteke in podimenike, ki trenutno obstajajo v imeniku, kjer nastavite ACL. Priporočljivo je, da to možnost vedno uporabite, ko spreminjate ACL za obstoječe imenike.

Delo s privzetimi ACL-ji

Ena od prednosti uporabe ACL-jev je, da lahko dodelite dovoljenja več uporabnikom ali skupinam v imeniku. Druga prednost je, da lahko omogočite dedovanje z delom s privzetimi ACL-ji.

Z nastavitvijo privzetega ACL določite dovoljenja, ki bodo nastavljena za vse nove elemente, ustvarjene v imeniku. Zavedajte se, da privzeti ACL ne spremeni dovoljenj za obstoječe datoteke in podimenike. Če jih želite spremeniti, morate dodati tudi običajni ACL!

To je pomembno vedeti. Če želite uporabiti ACL za konfiguracijo več uporabnikov ali skupin za dostop do istega imenika, morate ACL nastaviti dvakrat. Prva uporaba setfacl -R -mda spremenite ACL za trenutne datoteke. Nato uporabite setfacl-md:skrbeti za vse nove elemente, ki bodo prav tako nastali.

Če želite nastaviti privzeti ACL, morate samo dodati možnost d po možnosti -m (vrstni red je pomemben!). Torej uporabite setfacl -md:g:sales:rx /podatkiče želite, da skupinska prodaja bere in izvaja vse, kar je bilo ustvarjeno v imeniku /data.

Pri uporabi privzetih ACL-jev je morda koristno nastaviti ACL-je tudi za druge. To ponavadi nima velikega smisla, ker lahko spremenite tudi dovoljenja za druge, ki uporabljajo chmod. Vendar, česa ne morete storiti s chmod, je določiti pravice, ki jih je treba podeliti drugim uporabnikom za vsako novo datoteko, ki je kdaj ustvarjena. Če želite drugim preprečiti, da bi dobili kakršna koli dovoljenja za kar koli, ustvarjeno v /data, na primer uporabite setfacl -md:o::- /podatki.

ACL-ji in običajna dovoljenja niso vedno dobro integrirani. Težave lahko nastanejo, če za imenik uporabite privzeti ACL, potem se elementi dodajo v ta imenik in nato poskusite spremeniti običajna dovoljenja. Spremembe, ki veljajo za običajna dovoljenja, ne bodo dobro prikazane v pregledu ACL. Da bi se izognili težavam, najprej nastavite običajna dovoljenja, nato nastavite privzete ACL-je (in jih po tem poskusite ne spremeniti več).

Primer upravljanja s povišanimi pravicami z uporabo ACL

V tem primeru boste nadaljevali z imenikoma /data/account in /data/sales, ki ste ju ustvarili prej. V prejšnjih primerih ste zagotovili, da ima prodajna skupina dovoljenja za /data/sales in da ima skupina računov dovoljenja za /data/account.

Najprej se prepričajte, da skupina računov dobi dovoljenja za branje v imeniku /data/sales in da prodajna skupina dobi dovoljenja za branje v imeniku /data/account.

Nato nastavite privzete ACL-je, da zagotovite, da imajo vse nove datoteke nastavljena pravilna dovoljenja za vse nove elemente.

  1. Odprite terminal.
  2. Izvedite setfacl -mg:account:rx /data/sales и setfacl -mg:sales:rx /data/account.
  3. Izvedite getfaclda se prepričate, da so dovoljenja nastavljena tako, kot želite.
  4. Izvedite setfacl -md:g:account:rwx,g:sales:rx /data/salesda nastavite privzeti ACL za prodajni imenik.
  5. Dodajte privzeti ACL za imenik /data/account z uporabo setfacl -md:g:sales:rwx,g:account:rx /data/account.
  6. Preverite, ali so nastavitve ACL veljavne, tako da dodate novo datoteko v /data/sales. Popolna dotaknite se /data/sales/newfile in izvesti getfacl /data/sales/newfile da preverite trenutna dovoljenja.

Nastavitev privzetih dovoljenj z umask

Zgoraj ste se naučili delati s privzetimi ACL-ji. Če ne uporabljate ACL, obstaja možnost lupine, ki določa privzeta dovoljenja, ki jih boste prejeli: umask (obratna maska). V tem razdelku se boste naučili, kako spremeniti privzeta dovoljenja z umask.

Morda ste opazili, da so pri ustvarjanju nove datoteke nastavljena nekatera privzeta dovoljenja. Ta dovoljenja so določena z nastavitvijo umask. Ta nastavitev lupine velja za vse uporabnike ob prijavi. V parametru umask uporabljena je številska vrednost, ki se odšteje od največjih dovoljenj, ki jih je mogoče samodejno nastaviti za datoteko; največja nastavitev za datoteke je 666, za imenike pa 777.

Vendar veljajo nekatere izjeme za to pravilo. Najdete celoten pregled nastavitev umask v spodnji tabeli.

Od številk, uporabljenih v umask, kot v primeru številskih argumentov za ukaz chmod, prva številka se nanaša na dovoljenja uporabnika, druga številka se nanaša na dovoljenja skupine, zadnja pa na privzeta dovoljenja, nastavljena za druge. Pomen umask privzeta vrednost 022 daje 644 za vse nove datoteke in 755 za vse nove imenike, ustvarjene na vašem strežniku.

Popoln pregled vseh številskih vrednosti umask in njihove rezultate v spodnji tabeli.

Dovoljenja v Linuxu (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Enostaven način za prikaz delovanja nastavitve umask je naslednji: začnite s privzetimi dovoljenji datoteke, nastavljenimi na 666, in odštejte umask, da dobite efektivna dovoljenja. Enako storite za imenik in njegova privzeta dovoljenja 777.

Nastavitev umask lahko spremenite na dva načina: za vse uporabnike in za posamezne uporabnike. Če želite nastaviti umask za vse uporabnike, morate zagotoviti, da se nastavitev umask upošteva pri zagonu datotek okolja lupine, kot je določeno v /etc/profile. Pravilen pristop je ustvariti lupinski skript z imenom umask.sh v imeniku /etc/profile.d in določiti umask, ki ga želite uporabiti v tem lupinskem skriptu. Če se umask spremeni v tej datoteki, se uporabi za vse uporabnike po prijavi v strežnik.

Druga možnost za nastavitev umask prek /etc/profile in povezanih datotek, kjer velja za vse uporabnike, ki se prijavljajo, je sprememba nastavitev umask v datoteki z imenom .profile, ki je ustvarjena v domačem imeniku vsakega uporabnika.

Nastavitve, uporabljene v tej datoteki, veljajo samo za posameznega uporabnika; zato je to dobra metoda, če potrebujete več podrobnosti. Osebno mi je všeč ta funkcija za spremembo privzete umaske za korenskega uporabnika na 027, medtem ko običajni uporabniki delujejo s privzeto umasko 022.

Delo z razširjenimi uporabniškimi atributi

To je zadnji razdelek o dovoljenjih za Linux.

Pri delu z dovoljenji vedno obstaja razmerje med objektom uporabnika ali skupine in dovoljenji, ki jih imajo objekti uporabnika ali skupine za datoteko ali imenik. Druga metoda za zaščito datotek na strežniku Linux je delo z atributi.
Atributi opravljajo svoje delo ne glede na uporabnika, ki dostopa do datoteke.

Kot pri ACL-jih bodo morali atributi datoteke morda vključiti to možnost mount.

To je možnost uporabnik_xattr. Če pri delu z razširjenimi uporabniškimi atributi prejmete sporočilo »operacija ni podprta«, ne pozabite nastaviti parametra mount v /etc/fstab.

Številni atributi so dokumentirani. Nekateri atributi so na voljo, vendar še niso implementirani. Ne uporabljajte jih; nič ti ne bodo prinesli.

Spodaj so najbolj uporabni atributi, ki jih lahko uporabite:

A Ta atribut zagotavlja, da se čas dostopa do datoteke ne spremeni.
Običajno mora biti vsakič, ko se datoteka odpre, čas dostopa do datoteke zabeležen v metapodatkih datoteke. To negativno vpliva na uspešnost; torej za datoteke, do katerih redno dostopate, atribut A lahko uporabite za onemogočanje te funkcije.

a Ta atribut vam omogoča dodajanje, vendar ne odstranjevanje datoteke.

c Če uporabljate datotečni sistem, ki podpira stiskanje na ravni glasnosti, ta atribut datoteke zagotavlja, da je datoteka stisnjena, ko je mehanizem stiskanja omogočen prvič.

D Ta atribut zagotavlja, da se spremembe datotek takoj zapišejo na disk, namesto da se najprej shranijo v predpomnilnik. To je uporaben atribut pri pomembnih datotekah zbirke podatkov, ki zagotavlja, da se ne izgubijo med predpomnilnikom datotek in trdim diskom.

d Ta atribut zagotavlja, da datoteka ne bo shranjena v varnostne kopije, kjer se uporablja pripomoček za izpis.

I Ta atribut omogoča indeksiranje za imenik, v katerem je omogočen. To omogoča hitrejši dostop do datotek za primitivne datotečne sisteme, kot je Ext3, ki za hiter dostop do datotek ne uporabljajo baze podatkov drevesa B.

i Ta atribut naredi datoteko nespremenljivo. Zato datoteke ni mogoče spreminjati, kar je koristno za datoteke, ki potrebujejo dodatno zaščito.

j Ta atribut zagotavlja, da se v datotečnem sistemu ext3 datoteka najprej zapiše v dnevnik in nato v podatkovne bloke na trdem disku.

s Prepiši bloke, v katerih je bila datoteka shranjena, na 0s po brisanju datoteke. To zagotavlja, da datoteke ni več mogoče obnoviti, ko je izbrisana.

u Ta atribut shranjuje informacije o izbrisu. To vam omogoča, da razvijete pripomoček, ki deluje s temi informacijami za reševanje izbrisanih datotek.

Če želite uporabiti atribute, lahko uporabite ukaz klepetanje. Na primer, uporabite chattr +s neka datotekaza uporabo atributov v neki datoteki. Ali morate odstraniti atribut? Nato uporabite chattr -s neka datotekain bo odstranjeno. Za pregled vseh atributov, ki so trenutno uporabljeni, uporabite ukaz lsattr.

Povzetek

V tem članku ste se naučili delati z dovoljenji. Prebrali ste o treh osnovnih dovoljenjih, naprednih dovoljenjih in o tem, kako uporabiti ACL v datotečnem sistemu. Naučili ste se tudi, kako uporabiti možnost umask za uporabo privzetih dovoljenj. Na koncu tega članka ste se naučili, kako uporabiti uporabniško razširjene atribute za uporabo dodatnega sloja varnosti datotečnega sistema.

Če vam je bil ta prevod všeč, napišite o njem v komentarjih. Več bo motivacije za uporabne prevode.

Popravljenih nekaj tipkarskih in slovničnih napak v članku. Nekateri obsežni odstavki so bili zmanjšani na manjše za boljšo berljivost.

Namesto "Samo nekdo s skrbniškimi pravicami do imenika lahko uporabi dovoljenje za izvajanje." popravljeno na "Samo nekdo z dovoljenji za pisanje v imenik lahko uporabi dovoljenje za izvajanje.", kar bi bilo bolj pravilno.

Hvala za komentarje brez.

Zamenjano:
Če niste lastnik uporabnika, bo lupina preverila, ali ste član skupine, znane tudi kot skupina datoteke.

Vklopljeno:
Če niste lastnik datoteke, bo lupina preverila, ali ste član skupine, ki ima dovoljenja za datoteko. Če ste član te skupine, boste do datoteke dostopali z dovoljenji, ki jih je skupina nastavila, lupina pa bo prenehala preverjati.

Hvala za vaš komentar CryptoPirate

Vir: www.habr.com

Dodaj komentar