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

Živjo vsem. To je prevod članka iz knjige RedHat RHCSA RHCE 7 RedHat Enterprise Linux 7 EX200 in EX300.

Osebno: Upam, da bo članek koristen ne samo začetnikom, temveč tudi izkušenim skrbnikom pri organizaciji njihovega znanja.

Izogibajte se na kilometrsko oddaljenosti državnim in pol državnim podjetjem ter podobnim ustanovam.

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 drugim objektom (tj. vsem ostalim). V tem članku se boste naučili, kako uporabljati dovoljenja.

Članek se začne z pregledom osnovnih pojmov, nato pa se razpravlja o posebnih dovoljenjih (Special permissions) in seznamih za nadzor dostopa (ACL). Na koncu tega članka se obravnava tudi nastavitev privzetih pravic dostopa prek umask, pa tudi upravljanje razširjenih atributov uporabnika.

Upravljanje lastništva datotek

Preden se pogovorite o dovoljenjih, morate poznati vlogo lastnika datoteke in mape. Lastništvo datotek in map je življenjskega pomena za delo z dovoljenji. V tem razdelku boste najprej izvedeli, kako lahko vidite lastnika. Nato se boste naučili, kako spremeniti lastnika skupine in uporabnika za datoteke in mape.

Prikaz lastnika datoteke ali mape

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

Ti lastniki se določijo ob ustvarjanju datoteke ali mape. Uporabnik, ki ustvari datoteko, postane lastnik te datoteke, prva skupina, v katero je ta isti uporabnik, pa prav tako postane lastnik te datoteke. Da bi ugotovili, ali imate kot uporabnik pravice do dostopa do datoteke ali mape, lupina preveri lastništvo teh datotek.

To se zgodi v naslednjem vrstnem redu:

  1. Lupina preveri, ali ste lastnik datoteke, do katere želite dostopati. Če ste ta lastnik, dobite dovoljenja in lupina preneha s preverjanjem.
  2. Če niste lastnik datoteke, bo lupina preverila, ali ste član skupine, ki ima dovoljenja za to datoteko. Če ste član te skupine, boste dobili dostop do datoteke z dovoljenji, ki so dodeljena skupini, in lupina bo prenehala s preverjanjem.
  3. Če niste niti uporabnik niti lastnik skupine, boste pridobili pravice drugih uporabnikov (Other).

Da biste videli trenutne dodeljene vlasnike, možete koristiti komandu ls -l. Ova komanda prikazuje korisnika i vlasnika grupe. Ispod možete videti podešavanja vlasnika za direktorijume u direktorijumu /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 možete prikazati vlasnika datoteka u ovom direktorijumu. Ponekad može biti korisno dobiti listu svih datoteka u sistemu gde je kao vlasnik naveden ovaj korisnik ili grupa. Za to možete koristiti find. Argument find -user može se koristiti u ovu svrhu. Na primer, sledeća komanda prikazuje sve datoteke čiji je vlasnik korisnik linda:

find / -user linda

Takođe možete koristiti find da pronađete datoteke gde je određena grupa njihov vlasnik.

Na primer, sledeća komanda traži sve datoteke koje pripadaju grupi users:

find / -group users

Promena vlasnika

Da bi se primenile odgovarajuće dozvole, prvo što treba uzeti u obzir jeste vlasništvo. Za to postoji komanda chown. Sintaksa ove komande nije teška za razumevanje:

chown ko šta

Na primer, sledeća komanda menja vlasnika direktorijuma /home/account na korisnika linda:

chown linda /home/account

Komanda chown ima nekoliko opcija, od kojih je jedna posebno korisna: -R. Možete pretpostaviti šta radi, jer je ova opcija dostupna i za mnoge druge komande. Omogućava vam rekurzivno postavljanje vlasnika, što vam omogućava da postavite vlasnika trenutnog direktorijuma i svega što se nalazi ispod. Sledeća komanda menja vlasnika za direktorijum /home i sve što se nalazi ispod na korisnika linda:

Sada vlasnici izgledaju ovako:

[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

Izvršavamo:

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

Sada je korisnik lisa postao vlasnik direktorijuma account:

[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

Promena vlasnika grupe

Postoje dva načina da se promeni vlasništvo grupe. To možete učiniti koristeći chown, ali postoji posebna komanda pod imenom chgrp, ki opravlja to nalogo. Če želite uporabiti ukaz chown, uporabite . ili : pred imenom skupine.

Naslednji ukaz spremeni katerega koli lastnika skupine /home/account na skupino account:

chown .account /home/account

Lahko uporabite chown za spremembo lastnika uporabnika in/ali skupine na več načinov. Tukaj je nekaj primerov:

  • chown lisa myfile1 nastavi uporabnika lisa za lastnika datoteke myfile1.
  • chown lisa.sales myfile nastavi uporabnika lisa za lastnika datoteke myfile in prav tako nastavi skupino sales za lastnika te same datoteke.
  • chown lisa:sales myfile isto kot prejšnji ukaz.
  • chown .sales myfile nastavi skupino sales za lastnika datoteke myfile brez spreminjanja lastnika uporabnika.
  • chown :sales myfile isto kot prejšnji ukaz.

Z ukazom chgrp, da spremenite lastnika skupine. Oglejmo si naslednji primer, kjer lahko chgrp nastavite skupino sales za lastnika imenika account:

chgrp .sales /home/account

Kot pri chown, lahko uporabite opcijo -R z chgrp, prav tako pa lahko rekursivno spremenite lastnika skupine.

Razumevanje privzetega lastnika

Opazili ste lahko, da ko uporabnik ustvari datoteko, se uporabi privzeto lastništvo.
Uporabnik, ki ustvari datoteko, samodejno postane lastnik te datoteke, osnovna skupina tega uporabnika pa samodejno postane lastnik te datoteke. Običajno je to skupina, ki je navedena v datoteki /etc/passwd kot osnovna skupina uporabnika. Vendar pa, če je uporabnik član več skupin, lahko spremeni učinkovito osnovno skupino.

Da prikaže trenutne učinkovite primarne skupine, lahko uporabnik uporabi ukaz groups:

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

Če trenutni uporabnik linda želi spremeniti učinkovito primarno skupino, bo uporabil ukaz newgrp, ki mu sledi ime skupine, ki jo želi nastaviti kot novo učinkovito primarno skupino. Po uporabi ukaza newgrp bo primarna skupina aktivna, dokler uporabnik ne vnese ukaza exit ali se ne odjavi iz sistema.

Spodaj je prikazano, kako uporabnik linda uporablja ta ukaz, pri čemer je primarna skupina postala skupina sales:

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 aktivne osnovne skupine bodo vse nove datoteke, ki jih ustvari uporabnik, prejele to skupino kot lastnika skupine. Za vrnitev na izvirne nastavitve primarne skupine uporabite exit.

Da bi lahko uporabili ukaz newgrp, mora biti uporabnik član tiste skupine, ki jo želi uporabiti kot primarno. Poleg tega se lahko skupinska gesla uporabijo za skupino z ukazom gpasswd. Če uporabnik uporablja ukaz newgrp, vendar ni član ciljne skupine, bo lupina zahtevala skupinsko geslo. Ko vnesete pravilno skupinsko geslo, bo nastavljena nova učinkovita primarna skupina.

Upravljanje osnovnih pravic

Sistem dovoljenj Linux je bil izumljen v 70. letih prejšnjega stoletja. Ker so bili računalniški potrebni v tistih letih omejeni, je bil osnovni sistem dovoljenj dokaj omejen. Ta sistem dovoljenj uporablja tri dovoljenja, ki se lahko uporabljajo za datoteke in imenike. V tem razdelku boste spoznali, kako uporabljati in spreminjati ta dovoljenja.

Razumevanje pravic za branje, pisanje in izvajanje

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

Programska datoteka, ki potrebuje dostop do knjižnice, mora imeti na primer dostop za branje do te knjižnice. To pomeni, da je dovoljenje za branje najosnovnejše dovoljenje, ki ga potrebujete za delo z datotekami.

Glede na imenik branje omogoča prikazovanje vsebine tega imenika. Morate vedeti, da to dovoljenje ne omogoča branja datotek v imeniku. Sistem dovoljenj Linux ne pozna dedovanja in edini način za branje datoteke je uporaba dovoljenja za branje za to datoteko.

Kot ste verjetno uganili, dovoljenje za pisanje, če je uporabljeno na datoteki, omogoča pisanje v to datoteko. Z drugimi besedami, omogoča spreminjanje vsebine obstoječih datotek. Vendar pa ne omogoča ustvarjanja ali brisanja novih datotek ali spreminjanja pravic do datoteke. Za to morate dati dovoljenje za pisanje v imenik, kjer želite ustvariti datoteko. V imenikih to dovoljenje prav tako omogoča ustvarjanje in brisanje novih podimenikov.

Dovoljenje za izvajanje je tisto, kar potrebujete za izvajanje datoteke. Nikoli ne bo dodeljeno privzeto, kar naredi Linux praktično popolnoma odporen na viruse. Le kdo s pravicami za pisanje v imenik lahko uporabi dovoljenje za izvajanje.

Spodaj je povzeta uporaba osnovnih dovoljenj:

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

Uporaba chmod

Za upravljanje pravic se uporablja ukaz chmod. Pri uporabi chmod lahko nastavite dovoljenja za uporabnika (user), skupino (group) in druge (other). Ta ukaz lahko uporabite v dveh načinih: relativnem in absolutnem načinu. V absolutnem načinu se uporabljajo tri števke za nastavitev osnovnih dovoljenj.

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

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

chmod 755 /somefile

Ko uporabite chmod na ta način, so vse trenutne pravice nadomeščene s tistimi, ki ste jih nastavili.

Če želite spremeniti dovoljenja v povezavi s trenutnimi dovoljenji, lahko uporabite chmod v relativnem načinu. Pri uporabi chmod v relativnem načinu delate s tremi kazalniki, da navedete, kaj želite narediti:

  1. Najprej navedite, za koga želite spremeniti dovoljenja. Tukaj lahko izberete med uporabnikom (u), skupino (g) in drugimi (o).
  2. Nato uporabite operator za dodajanje ali odstranjevanje dovoljenj iz trenutnega načina ali jih nastavite absolutno.
  3. Na koncu uporabite r, w in x, da navedete, katera dovoljenja želite nastaviti.

Pri spremembi dovoljenj v relativnem načinu lahko del 'komu' izpustite, da dodate ali odstranite dovoljenje za vse objekte. 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 doda dovoljenje za pisanje skupini in odstrani branje za druge:

chmod g+w,o-r somefile

Pri uporabi chmod -R o+rx /data nastavite dovoljenje za izvajanje za vse mape in tudi za datoteke v mapi /data. Da nastavite dovoljenje za izvajanje samo za mape, ne pa za datoteke, uporabite chmod -R o+ rX /data.

Velika črka X zagotavlja, da datoteke ne bodo prejele dovoljenja za izvajanje, če zanje že ni bilo dodeljeno dovoljenje za izvajanje. To pomeni, da je X bolj smiselna metoda upravljanja z dovoljenji za izvajanje; preprečuje, da bi bilo to dovoljenje dodeljeno datotekam, kjer to ni potrebno.

Razširjena dovoljenja

Poleg osnovnih dovoljenj, o katerih ste ravno prebrali, ima Linux tudi niz razširjenih dovoljenj. To niso tista dovoljenja, ki jih dodelite privzeto, vendar včasih nudijo uporabno dopolnitev. V tem razdelku boste izvedeli, kaj so in kako jih nastaviti.

Razumevanje razširjenih dovoljenj SUID, GUID in sticky bit

Obstajajo tri napredna dovoljenja. Prvo 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, to datoteko zažene s svojimi lastnimi dovoljenji.

Za navadne uporabnike to običajno pomeni, da je uporaba programa omejena. Vendar pa v nekaterih primerih uporabniku potrebna posebna dovoljenja, samo za opravljanje določene naloge.

Razmislimo o situaciji, ko mora uporabnik spremeniti geslo. Za to mora uporabnik zapisati svoje novo geslo v datoteko /etc/shadow. Vendar ta datoteka ni dostopna za pisanje uporabnikom, ki nimajo pravic dostopa root:

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

SUID разрешение предлагает решение этой проблемы. В утилите /usr/bin/passwd это разрешение применяется по умолчанию. Это означает, что при смене пароля пользователь временно получает права root, что позволяет ему записывать в файл /etc/shadow. Вы можете видеть разрешение SUID с ls -l kako s в позиции, где обычно вы ожидаете увидеть x для пользовательских разрешений:

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

Разрешение SUID может показаться полезным (и в некоторых случаях это так), но оно также потенциально опасно. При неправильном применении вы можете случайно предоставить права root. Поэтому я рекомендую использовать его только с максимальной осторожностью.

Большинству администраторов никогда не придется его использовать; вы увидите его только в некоторых файлах, где операционная система должна устанавливать его по умолчанию.

Второе специальное разрешение — это идентификатор группы (SGID). Это разрешение имеет два эффекта. При применении к исполняемому файлу, оно дает пользователю, который исполняет файл, разрешения владельца группы этого файла. Таким образом, SGID может выполнять в основном то же самое, что и SUID. Однако для этой цели SGID практически не используется.

Как и в случае с разрешением SUID, SGID применяется к некоторым системным файлам в качестве настройки по умолчанию.

Когда применяется к каталогу, SGID может быть полезен, потому что вы можете использовать его для установки владельца группы по умолчанию для файлов и подкаталогов, созданных в этом каталоге. По умолчанию, когда пользователь создает файл, его эффективная первичная группа устанавливается как владелец группы для этого файла.

Это не всегда очень полезно, особенно потому, что у пользователей Red Hat/CentOS в качестве основной группы задана группа с тем же именем, что и у пользователя, и в которой пользователь является единственным участником. Таким образом, по умолчанию файлы, которые создает пользователь, будут групповыми для общего доступа.

Представьте ситуацию, когда пользователи linda и lori работают в бухгалтерии и являются членами группы računPrivatna skupina je prema zadanim postavkama jedina kojoj ovi korisnici pripadaju. Međutim, obojica korisnika pripadaju grupi account, ali i kao sekundarna grupa.

Zadana situacija je da kada bilo koji od ovih korisnika stvori datoteku, primarna grupa postaje vlasnik. Stoga, prema zadanim postavkama, linda ne može pristupiti datotekama koje je stvorila lori, i obrnuto. Međutim, ako stvorite zajednički direktorij grupe (recimo, /groups/account) i osigurate da se SGID dozvola primjenjuje na taj direktorij i da je grupni račun postavljen kao vlasnik grupe za taj direktorij, sve datoteke stvorene u tom direktoriju i svim njegovim poddirektorijima također dobijaju grupu account kao zadanu grupu vlasnika.

Iz tog razloga, dozvola SGID je vrlo korisna dozvola koja se postavlja u zajedničkim grupnim direktorijima.

Dozvola SGID prikazana je u ispisu ls -l kako s na mjestu gdje obično nalazite dozvolu za izvršavanje grupe:

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

Treća od specijalnih dozvola je sticky bit. Ova dozvola je korisna za zaštitu datoteka od slučajnog brisanja u okruženju gdje nekoliko korisnika ima prava pisanja u isti direktorij. Ako se primijeni sticky bit, korisnik može obrisati datoteku samo ako je vlasnik datoteke ili direktorija u kojem se datoteka nalazi. Iz tog razloga se primjenjuje kao zadana dozvola za direktorij /tmp i može biti korisna i za zajedničke grupne direktorije.

Bez sticky bita, ako korisnik može stvarati datoteke u direktoriju, također može brisati datoteke iz tog direktorija. U javnom grupnom okruženju to može biti iritantno. Zamislite korisnike lindu i lori koji oboje imaju prava pisanja u direktorij /data/account i dobivaju ta prava zahvaljujući članstvu u grupi account. Stoga, linda može brisati datoteke koje je stvorila lori, i obrnuto.

Kada primijenite sticky bit, korisnik može brisati datoteke samo ako je ispunjen jedan od sljedećih uvjeta:

  • Korisnik je vlasnik datoteke;
  • Korisnik je vlasnik direktorija u kojem se datoteka nalazi.

Pri uporabi ls -l, možete vidjeti sticky bit kao t na mestu, kjer običajno vidite 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

Za uporabo SUID, SGID in sticky bita lahko uporabite tudi chmod. SUID ima številsko vrednost 4, SGID ima številsko vrednost 2, sticky bit pa ima številsko vrednost 1.

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

chmod 2755 /somedir

To je precej nepraktično, če želite preveriti trenutna dovoljenja, ki so nastavljena, preden delate z chmod v absolutnem načinu. (Tvegali boste prepisovanje dovoljenj, če tega ne storite.) Zato priporočam, da delate v relativnem načinu, če želite uporabiti katera koli od posebnih dovoljenj:

  1. Za SUID uporabite chmod u+s.
  2. Za SGID uporabite chmod g+s.
  3. Za sticky bit uporabite chmod +t, nato pa ime datoteke ali imenika, za katerega želite nastaviti dovoljenja.

V tabeli je povzeta vse, kar je pomembno vedeti o upravljanju posebnih dovoljenj.

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

Primer dela s posebnimi pravicami

V tem primeru uporabljate posebna dovoljenja, da članom skupine olajšate izmenjavo datotek v skupnem imeniku. Dodelite ID-bit nastavljenega identifikatorja skupine ter sticky bit in vidite, da po njihovi nastavitvi dodate funkcije, ki olajšajo sodelovanje članov skupine.

  1. Odprite terminal, kjer ste uporabnik linda. Uporabnika lahko ustvarite z ukazom useradd linda, dodajte geslo passwd linda.
  2. Ustvarite imenik /data v korenu in podimenik /data/sales z ukazom mkdir -p /data/sales. Izvedite cd /data/sales, da preklopite v imenik sales. Izvedite touch linda1 in touch linda2, da ustvarite dve prazni datoteki, katerih lastnik je linda.
  3. Izvedite su — lisa za preklop trenutnega uporabnika na uporabnika lisa, ki je prav tako član skupine sales.
  4. Izvedite cd /data/sales in iz tega imenika izvedite ls -l. Videli boste dve datoteki, ki ju je ustvarila uporabnica linda in pripadata skupini linda. Izvedite rm -f linda*. To bo izbrisalo obe datoteki.
  5. Izvedite touch lisa1 in touch lisa2, da ustvarite dve datoteki, ki pripadata uporabniku lisa.
  6. Izvedite su — za dvigovanje vaših privilegijev na raven root.
  7. Izvedite chmod g+s,o+t /data/sales, za nastavitev bitov identifikatorja skupine (GUID) in sticky bit v skupnem direktoriju.
  8. Izvedite su — linda. Nato izvedite touch linda3 in touch linda4. Zdaj bi morali videti, da sta dva ustvarjena datoteka v lasti skupine sales, ki je lastnica skupine direktorija /data/sales.
  9. Izvedite rm -rf lisa*. Sticky bit preprečuje brisanje teh datotek v imenu uporabnika linda, ker niste lastnik teh datotek. Upoštevajte, da lahko uporabnik linda, če je lastnik direktorija /data/sales, vseeno izbriše te datoteke!

Upravljanje ACL (setfacl, getfacl) v Linuxu

Tudi če razširjena dovoljenja, o katerih smo govorili zgoraj, dodajajo uporabno funkcionalnost pri upravljanju dovoljenj v Linuxu, to ne omogoča dodeljevanja dovoljenj več kot enemu uporabniku ali eni skupini v eni datoteki.

Seznami nadzora dostopa ponujajo to funkcijo. Poleg tega omogočajo skrbnikom, da nastavijo privzeta dovoljenja na zapleten način, kjer se lahko nastavljena dovoljenja razlikujejo v različnih direktorijih.

Razumevanje ACL

Čeprav podnosilec ACL dodaja odlične funkcionalnosti vašemu strežniku, ima eno pomanjkljivost: ne vse aplikacije jo podpirajo. Posledično lahko izgubite nastavitve ACL pri kopiranju ali premikanju datotek, programska oprema za varnostno kopiranje pa morda ne bo izvedla varnostnega kopiranja nastavitev ACL.

Orodje tar ne podpira ACL. Da se prepričate, da nastavitve ACL ne bodo izgubljene pri ustvarjanju varnostne kopije, uporabite star namesto tar. star deluje s istimi parametri kot tar; samo doda podporo za nastavitve ACL.

Lahko tudi ustvarite varnostno kopijo ACL s pomočjo getfacl, ki jo lahko obnovite z ukazom setfacl. Da ustvarite varnostno kopijo, uporabite getfacl -R /directory > file.acls. Da obnovite nastavitve iz varnostne kopije, uporabite setfacl —restore=file.acl.

Pomanjkanje podpore nekaterih orodij ne bi smelo biti težava. Seznami ACL se pogosto uporabljajo na direktorijih kot strukturna mera, ne pa na posameznih datotekah.
Zato jih ne bo veliko, temveč le nekaj, uporabljenih na pametnih mestih datotečnega sistema. Tako je obnova izvornih seznamov ACL, s katerimi ste delali, razmeroma enostavna, tudi če vaša programska oprema za varnostno kopiranje teh ne podpira.

Priprava datotečnega sistema za ACL

Preden začnete delati z ACL, bo morda potrebno pripraviti datotečni sistem za podporo ACL. Ker je potrebno razširiti metapodatke datotečnega sistema, v datotečnem sistemu včasih ni privzete podpore za ACL. Če pri nastavljanju seznamov ACL za datotečni sistem prejmete sporočilo „operacija ni podprta“, je možno, da vašemu datotečnemu sistemu manjka podpora za ACL.

Da to popravite, morate dodati možnost acl mount v datoteko /etc/fstab, da bo bil datotečni sistem privzeto priključen s podporo za ACL.

Sprememba in ogled nastavitev ACL z uporabo setfacl in getfacl

Za nastavitev ACL potrebujete ukaz setfacl. Da vidite trenutne nastavitve ACL, potrebujete getfacl. Ukaz ls -l ne prikazuje nobenih obstoječih ACL; samo pokaže + za seznamom dovoljenj, kar pomeni, da se seznam ACL uporablja tudi za datoteko.

Pred nastavitvijo seznamov ACL je vedno koristno pokazati trenutne nastavitve ACL z uporabo getfacl. Spodaj na primeru lahko vidite trenutna pravila dostopa, kot je prikazano z uporabo ls -l, prav tako kot je prikazano s getfacl. Če pogledate dovolj natančno, boste opazili, da so prikazani podatki natančno taki.

[root@server1 /]# ls -ld /dir
drwxr-xr-x. 2 root root 6 Feb 6 11:28 /dir
[root@server1 /]# getfacl /dir
getfacl: Odstranjevanje vodilnega '/' iz absolutnih poti
# datoteka: dir
# lastnik: root
# skupina: root
user::rwx
group::r-x
other::r-x

Kot rezultat izvedbe ukaza getfacl je spodaj vidno, da so dovoljenja prikazana za tri različne objekte: uporabnika, skupino in druge. Zdaj dodajmo ACL, da podelimo pravice za branje in izvajanje skupini sales. Ukaz za to setfacl -m g:sales:rx /dir. V tem ukazu -m pokaže, da je potrebno spremeniti trenutne nastavitve ACL. Po tem g:sales:rx obvešča ukaz, naj nastavi ACL za branje in izvajanje (rx) za skupino (g) sales. Spodaj lahko vidite, kako izgleda ukaz, ter izhod ukaza getfacl po spremembi trenutnih nastavitev ACL.

[root@server1 /]# setfacl -m g:sales:rx /dir
[root@server1 /]# getfacl /dir
getfacl: Odstranjevanje vodilnega '/' iz absolutnih poti
# datoteka: dir
# lastnik: root
# skupina: root
user::rwx
group::r-x
group:sales:r-x
mask::r-x
other::r-x

Zdaj, ko razumete, kako nastaviti skupinske ACL, je enostavno razumeti ACL za uporabnike in druge uporabnike. Na primer, ukaz setfacl -m u:linda:rwx /data daje dovoljenja uporabniku linda v imeniku /data, ne da bi ga naredil za lastnika ali spremenil določitev trenutnega lastnika.

Komanda setfacl ima veliko možnosti in nastavitev. Ena možnost je še posebej pomembna, parameter -R. Če je uporabljen, ta možnost nastavi ACL za vse datoteke in podimenike, ki trenutno obstajajo v imeniku, kjer nastavljate ACL. Priporočamo, da to možnost vedno uporabite pri spreminjanju seznamov ACL za obstoječe imenike.

Delo z privzetimi ACL

Ena od prednosti uporabe seznamov ACL je ta, da lahko dodelite dovoljenja več uporabnikom ali skupinam v imeniku. Še ena prednost je, da lahko omogočite dedovanje, ko delate z privzetimi ACL.

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

To je pomembno vedeti. Če želite uporabiti ACL za nastavitev dostopa več uporabnikov ali skupin do istega imenika, morate nastaviti ACL dvakrat. Najprej uporabite setfacl -R -m, da spremenite ACL za trenutne datoteke. Nato uporabite setfacl -m d:, da poskrbite za vse nove elemente, ki bodo prav tako ustvarjeni.

Za nastavitev privzetega ACL preprosto dodajte možnost d za možnost -m !(redosled je pomemben!). Zato uporabite setfacl -m d:g:sales:rx /data, če želite, da skupina prodaje prebere in izvede vse, kar bo kadarkoli ustvarjeno v imeniku /data.

Pri uporabi privzetih seznamov ACL je prav tako lahko koristno nastaviti ACL za druge. Običajno to nima posebnega smisla, ker lahko tudi spremenite dovoljenja za druge, če uporabite chmod. Vendar pa tega ne morete storiti z uporabo chmod, to specify the permissions that should be granted to other users for each new file that will ever be created. If you want to prevent others from having any permissions for anything created in /data, for example, use setfacl -m d:o::- /data.

ACLs and regular permissions are not always well integrated. Problems can arise if you applied default ACLs to a directory, then items were added to that directory, and afterward, you try to change regular permissions. Changes made to regular permissions will not be well reflected in the ACL overview. To avoid issues, first set the standard permissions, then apply the default ACL (and after that, try not to change them again).

Example of managing extended permissions using ACL

In this example, you will continue working with the directories /data/account and /data/sales that you created earlier. In the previous examples, you ensured that the sales group had permissions for /data/sales, while the account group had permissions for /data/account.

First, ensure that the account group receives read permissions in the /data/sales directory, and the sales group receives read permissions in the /data/account directory.

Then you set the default ACLs to ensure that permissions for all new files are correctly set for all new items.

  1. Open the terminal.
  2. Izvedite setfacl -m g:account:rx /data/sales in setfacl -m g:sales:rx /data/account.
  3. Izvedite getfacl, to ensure that the access rights have been set as you desired.
  4. Izvedite setfacl -m d:g:account:rwx,g:sales:rx /data/sales, to set the default ACL for the sales directory.
  5. Add the default ACL for the /data/account directory using setfacl -m d:g:sales:rwx,g:account:rx /data/account.
  6. Make sure the ACL settings are effective by adding a new file to /data/sales. Run touch /data/sales/newfile and execute getfacl /data/sales/newfile to check the current permissions.

Setting default permissions using umask

Above, you learned how to work with default ACLs. If you do not use ACLs, there is a shell parameter that defines the default permissions you will receive: umask (mask value). In this section, you will learn how to change default permissions using umask.

You may have noticed that some default permissions are set when creating a new file. These permissions are determined by the setting umaskTa parameter se uporablja za vse uporabnike ob prijavi v sistem. V parameter umask se uporablja numerična vrednost, ki se odšteje od največjih dovoljenj, ki jih je mogoče samodejno nastaviti za datoteko; največje nastavitve za datoteke so 666, za mape pa 777.

Vendar pa obstajajo nekatere izjeme od tega pravila. Celoten pregled nastavitev umask lahko najdete v tabeli spodaj.

Števila, uporabljena v umask, kot v primeru numeričnih argumentov za ukaz chmod, prvo število se nanaša na dovoljenja uporabnika, drugo število se nanaša na dovoljenja skupine, zadnje pa se nanaša na privzeta dovoljenja, dodeljena drugim. Vrednost umask privzeto 022 daje 644 za vse nove datoteke in 755 za vse nove mape, ustvarjene na vašem strežniku.

Popoln pregled vseh numeričnih vrednosti umask in njihovih rezultatov je v tabeli spodaj.

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

Enostaven način za prikaz delovanja parametra umask je naslednji: začnite z privzetimi dovoljenji za datoteko, nastavljenimi na 666, in odštejte umask, da dobite dejanske pravice. Enako storite za mapo in njene privzete pravice 777.

Obstajata dva načina za spremembo nastavitve umask: za vse uporabnike in za posamezne uporabnike. Če želite nastaviti umask za vse uporabnike, morate zagotoviti, da parameter umask upošteva pri zagonu datotek okolja lupine, kot je navedeno v /etc/profile. Pravilen pristop je ustvariti skript lupine z imenom umask.sh v mapi /etc/profile.d in v tem skriptu navesti umask, ki ga želite uporabiti. Če se v tem datoteka umask spremeni, se uporablja za vse uporabnike po prijavi na strežnik.

Alternativa nastavitvi umask prek /etc/profile in povezanih datotek, kjer se uporablja za vse uporabnike, ki se prijavljajo v sistem, je sprememba nastavitev umask v datoteki z imenom .profile, ki se ustvari v domači mapi vsakega uporabnika.

Nastavitve, uporabljene v tej datoteki, se uporabljajo samo za posameznega uporabnika; zato je to dober način, če potrebujete več podrobnosti. Osebno mi je ta funkcija všeč, da spremenim privzeto vrednost umask za uporabnika root na 027, medtem ko običajni uporabniki delujejo s privzeto vrednostjo umask 022.

Delo z razširjenimi atributi uporabnika

To je zaključni razdelek o pravicah v Linuxu.

Pri delu z dovoljenji vedno obstaja povezava med objektom uporabnika ali skupine ter dovoljenji, ki jih ti objekti uporabnika ali skupine imajo za datoteko ali imenik. Alternativen način zaščite datotek na strežniku Linux je delo z atributi.
Atributi delujejo neodvisno od uporabnika, ki dostopa do datoteke.

Kot pri ACL, lahko za atribute datoteke potrebujete omogočiti parameter mount.

to je možnost user_xattr. Če pri delu z razširjenimi atributi uporabnika prejemate sporočilo 'operacija ni podprta', obvezno nastavite parameter mount v datoteki /etc/fstab.

Mnogi atributi so dokumentirani. Nekateri atributi so na voljo, vendar še niso implementirani. Ne uporabljajte jih; ne bodo vam prinesli ničesar.

Spodaj so najbolj koristni atributi, ki jih lahko uporabite:

A Ta atribut zagotavlja, da se čas dostopa do datoteke ne spremeni.
Običajno vsakokrat, ko se datoteka odpre, mora biti čas dostopa shranjen v metapodatkih datoteke. To negativno vpliva na zmogljivost; zato za datoteke, do katerih se redno dostopa, lahko atribut A uporabite za onemogočanje te funkcije.

a Ta atribut omogoča dodajanje, ne pa tudi brisanje datoteke.

c Če uporabljate datotečni sistem, ki podpira stiskanje na ravni volumna, ta atribut datoteke zagotavlja, da bo datoteka stisnjena ob prvem vklopu mehanizma za stiskanje.

D Ta atribut zagotavlja, da se spremembe v datotekah takoj zapišejo na disk, ne pa v predpomnilnik najprej. To je koristen atribut za pomembne datoteke baze podatkov, saj zagotavlja, da ne bodo izgubljene med predpomnilnikom datotek in trdim diskom.

d Ta atribut zagotavlja, da datoteka ne bo shranjena v varnostnih kopijah, kjer se uporablja orodje za izvoz.

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

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

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

s Prepiši bloke, v katerih je bila datoteka shranjena, na 0 po izbrisu datoteke. To zagotavlja, da po izbrisu datoteke njeno obnovitev ni mogoče.

u Ta atribut ohranja informacije o izbrisu. To omogoča razvoj orodja, ki dela s temi informacijami za reševanje izbrisanih datotek.

Če želite uporabiti atribute, lahko uporabite ukaz chattr. Na primer, uporabite chattr +s somefile, da uporabite atribute na somefile. Želite odstraniti atribut? Potem uporabite chattr -s somefile, in ta bo odstranjen. Za pregled vseh atributov, ki so trenutno uporabljeni, uporabite ukaz lsattr.

Резюме

V tem članku ste se naučili, kako delati z dovoljenji. Prebrali ste o treh osnovnih dovoljenjih, razširjenih dovoljenjih in o tem, kako uporabiti ACL-seznami v datotečnem sistemu. Prav tako ste se naučili, kako uporabiti parameter umask za uporabo privzetih dovoljenj. Na koncu tega članka ste se naučili, kako uporabiti razširjene uporabniške atribuite za dodaten nivo zaščite datotečnega sistema.

Če vam je ta prevod všeč, vas prosim, da to zapišete v komentarjih. To bo povečalo motivacijo za izdelavo koristnih prevodov.

V članku sem popravil nekatere tipkarske napake in slovnične napake. Nekatere obsežne odstavke sem zmanjšal na manjše za lažje razumevanje.

Namesto „Samo nekdo z administrativnimi pravicami do imenika lahko uporablja dovoljenje za izvajanje.“ sem popravil na „Samo nekdo s pravicami za pisanje v imenik lahko uporablja dovoljenje za izvajanje.“, kar bo bolj pravilno.

Hvala za pripombe berez.

Zamenjal sem:
Če niste lastnik uporabnika, bo lupina preverila, ali ste član skupine, ki se prav tako imenuje skupina datoteke.

Na:
Če niste lastnik datoteke, bo lupina preverila, ali ste član skupine, ki ima dovoljenja za to datoteko. Če ste član te skupine, boste dobili dostop do datoteke z dovoljenji, ki so dodeljena skupini, in lupina bo prenehala s preverjanjem.

Hvala za pripombo CryptoPirate

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster