Upravljanje pravima u Linuxu (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Pozdrav svima. Ovo je prijevod članka iz knjige RedHat RHCSA RHCE 7 RedHat Enterprise Linux 7 EX200 i EX300.

Od mene: Nadam se da će članak biti koristan ne samo početnicima, već i pomoći iskusnijim administratorima da urede svoje znanje.

Dakle, idemo.

Upravljanje pravima u Linuxu (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Za pristup datotekama u Linuxu koriste se dozvole. Ove dozvole dodjeljuju se tri objekta: vlasniku datoteke, članovima grupe vlasnika i drugom objektu (tj. svima ostalima). U ovom članku ćete naučiti kako primjenjivati dozvole.

Članak počinje pregledom osnovnih pojmova, nakon čega se raspravlja o posebnim dozvolama (Special permissions) i kontrolnim listama pristupa (ACL). Na kraju ovog članka razmatrati će se postavljanje zadanim pravima pristupa putem umask-a, kao i upravljanje proširenim atributima korisnika.

Upravljanje vlasništvom datoteka

Prije nego što raspravimo o dozvolama, trebate znati o ulozi vlasnika datoteke i direktorija. Vlasništvo datoteka i direktorija od suštinskog je značaja za rad s dozvolama. U ovom odjeljku prvo ćete saznati kako možete vidjeti vlasnika. Zatim ćete naučiti kako promijeniti vlasnika grupe i korisnika za datoteke i direktorije.

Prikaz vlasnika datoteke ili direktorija

U Linuxu svaka datoteka i svaki direktorij imaju dva vlasnika: korisnika i vlasnika grupe.

Ovi vlasnici postavljaju se prilikom stvaranja datoteke ili direktorija. Korisnik koji stvara datoteku postaje vlasnik te datoteke, a primarna grupa kojoj pripada taj korisnik također postaje vlasnik te datoteke. Da biste utvrdili imate li kao korisnik pristup datoteci ili direktoriju, ljuska provjerava vlasništvo nad njima.

To se događa u sljedećem redoslijedu:

  1. Ljuska provjerava jeste li vlasnik datoteke kojoj želite pristupiti. Ako ste taj vlasnik, dobivate dozvole i ljuska prestaje s provjerom.
  2. Ako niste vlasnik datoteke, ljuska će provjeriti jeste li član grupe koja ima dozvole za tu datoteku. Ako ste član te grupe, dobivate pristup datoteci s dozvolama koje su postavljene za grupu i ljuska će prestati s provjerom.
  3. Ako niste ni korisnik ni vlasnik grupe, dobivate prava drugih korisnika (Other).

Da biste vidjeli trenutne vlasničke postavke, možete koristiti naredbu ls -l. Ova naredba prikazuje korisnika i vlasnika grupe. Ispod možete vidjeti postavke vlasnika za direktorije u direktoriju /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

Pomoću naredbe ls možete prikazati vlasnika datoteka u ovom direktoriju. Ponekad može biti korisno dobiti popis svih datoteka u sustavu u kojima je navedeni korisnik ili grupa kao vlasnik. Za to možete koristiti find. Argument find -user može se koristiti u te svrhe. Na primjer, sljedeća naredba prikazuje sve datoteke čiji je vlasnik korisnik linda:

find / -user linda

Također možete koristiti find za pretraživanje datoteka čija je određena grupa njihov vlasnik.

Na primjer, sljedeća naredba traži sve datoteke koje pripadaju grupi users:

find / -group users

Promjena vlasnika

Da biste primijenili odgovarajuće dozvole, prvo što treba uzeti u obzir je vlasništvo. Za to postoji naredba chown. Sintaksa ove naredbe nije teška za razumjeti:

chown tko što

Na primjer, sljedeća naredba mijenja vlasnika direktorija /home/account na korisnika linda:

chown linda /home/account

Komanda chown ima nekoliko opcija, od kojih je jedna posebno korisna: -R. Možete pogoditi što ona radi, jer je ova opcija dostupna i za mnoge druge naredbe. Omogućuje vam rekurzivno postavljanje vlasnika, što vam omogućuje da postavite vlasnika trenutnog direktorija i svega što se nalazi ispod. Sljedeća naredba mijenja vlasnika za direktorij /home i sve što se nalazi ispod njega 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 direktorija 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

Promjena vlasnika grupe

Postoje dva načina da promijenite vlasništvo grupe. To možete učiniti korištenjem chown, ali postoji posebna naredba pod imenom chgrp, koja obavlja taj posao. Ako želite koristiti naredbu chown, koristite . ili : ispred naziva grupe.

Sljedeća naredba mijenja vlasnika bilo koje grupe /home/account u grupu account:

chown .account /home/account

Možete koristiti chown za promjenu vlasnika korisnika i/ili grupe na više načina. Evo nekoliko primjera:

  • chown lisa myfile1 postavlja korisnika lisa kao vlasnika datoteke myfile1.
  • chown lisa.sales myfile postavlja korisnika lisa kao vlasnika datoteke myfile, a također postavlja grupu sales kao vlasnika iste datoteke.
  • chown lisa:sales myfile isto kao i prethodna naredba.
  • chown .sales myfile postavlja grupu sales kao vlasnika datoteke myfile bez promjene vlasnika korisnika.
  • chown :sales myfile isto kao i prethodna naredba.

Možete koristiti naredbu chgrp, da promijenite vlasnika grupe. Pogledajmo sljedeći primjer, gdje možete s помощью chgrp postaviti grupu sales kao vlasnika direktorija account:

chgrp .sales /home/account

Kao i u slučaju chown, možete koristiti opciju -R s chgrp, a također rekurzivno mijenjati vlasnika grupe.

Razumijevanje vlasnika po defaultu

Možda ste primijetili da kada korisnik stvara datoteku, primjenjuje se vlasništvo po defaultu.
Korisnik koji stvara datoteku automatski postaje vlasnik te datoteke, a osnovna grupa tog korisnika automatski postaje vlasnik te datoteke. Obično je to grupa koja je navedena u datoteci /etc/passwd kao osnovna grupa korisnika. Međutim, ako je korisnik član više grupa, može promijeniti efektivnu osnovnu grupu.

Da bi prikazao trenutnu efektivnu primarnu grupu, korisnik može koristiti naredbu groups:

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

Ako trenutni korisnik linda želi promijeniti efektivnu primarnu grupu, koristiti će naredbu newgrp, nakon čega slijedi naziv grupe koju želi postaviti kao novu učinkovitu primarnu grupu. Nakon korištenja naredbe newgrp primarna grupa će biti aktivna dok korisnik ne unese naredbu exit ili ne izađe iz sistema.

Ispod je prikazano kako korisnik linda koristi ovu naredbu, gdje je primarna grupa postala grupa 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

Nakon izmjene aktivne osnovne grupe, sve nove datoteke koje stvori korisnik dobit će ovu grupu kao vlasnika grupe. Da biste se vratili na izvorne postavke primarne grupe, upotrijebite exit.

Da biste mogli koristiti naredbu newgrp, korisnik mora biti član grupe koju želi koristiti kao primarnu. Osim toga, grupna lozinka može se koristiti za grupu pomoću naredbe gpasswd. Ako korisnik koristi naredbu newgrp, ali nije član ciljne grupe, ljuska će zatražiti lozinku grupe. Nakon što unesete ispravnu lozinku grupe, postavit će se nova učinkovita primarna grupa.

Upravljanje osnovnim pravima

Sustav dozvola za Linux izumljen je 1970-ih. Budući da su računalne potrebe u to vrijeme bile ograničene, osnovni sustav dozvola bio je prilično ograničen. Ovaj sustav dozvola koristi tri dozvole koje se mogu primijeniti na datoteke i direktorije. U ovom odjeljku saznat ćete kako koristiti i mijenjati te dozvole.

Razumijevanje prava za čitanje, pisanje i izvršavanje

Tri osnovne dozvole omogućuju vam čitanje, pisanje i izvršavanje datoteka. Učinak tih dozvola razlikuje se kada se primjenjuju na datoteke ili direktorije. U odnosu na datoteku, dozvola za čitanje omogućuje vam otvaranje datoteke za čitanje. Stoga, možete pročitati njezin sadržaj, ali to znači da vaš računar može otvoriti datoteku kako bi s njom nešto učinio.

Programska datoteka koja treba pristup biblioteci, na primjer, mora imati pristup za čitanje toj biblioteci. Iz toga slijedi da je dozvola za čitanje najosnovnija dozvola koju trebate za rad s datotekama.

U odnosu na direktorij čitanje omogućava vam prikazivanje sadržaja tog direktorija. Trebali biste znati da vam ova dozvola ne omogućuje čitanje datoteka unutar direktorija. Sustav dozvola za Linux ne poznaje nasljedstvo, a jedini način da pročitate datoteku je korištenje dozvola za čitanje za tu datoteku.

Kao što vjerojatno možete pretpostaviti, pravo pisanja, ako se primjenjuje na datoteku, omogućuje pisanje u tu datoteku. Drugim riječima, omogućuje mijenjanje sadržaja postojećih datoteka. Međutim, ne omogućuje stvaranje ili brisanje novih datoteka ni promjenu prava pristupa datoteci. Za to vam je potrebno dati pravo pisanja direktoriju u kojem želite stvoriti datoteku. U direktorijima ovo pravo također omogućuje stvaranje i brisanje novih poddirektorija.

Pravo izvršavanja je ono što vam je potrebno za pokretanje datoteke. Nikada neće biti postavljeno prema zadanim postavkama, što čini Linux praktično potpuno otpornim na viruse. Samo netko s pravima pisanja na direktoriju može primijeniti pravo izvršavanja.

U nastavku se sažimaju osnovne uporabe prava:

Upravljanje pravima u Linuxu (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Upotreba chmod

Za upravljanje pravima koristi se naredba chmod. Kada koristite chmod možete postavljati prava za korisnika (user), grupu (group) i ostale (other). Ovu naredbu možete koristiti u dva načina: relativni način i apsolutni način. U apsolutnom načinu koriste se tri znamenke za postavljanje osnovnih prava.

Upravljanje pravima u Linuxu (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Pri postavljanju prava izračunajte potrebno vam vrijednost. Ako želite postaviti čitanje, pisanje i izvršavanje za korisnika, čitanje i izvršavanje za grupu, kao i čitanje i izvršavanje za druge u datoteci /somefile, tada koristite sljedeću naredbu chmod:

chmod 755 /somefile

Kada koristite chmod na ovaj način, sve trenutne dozvole zamjenjuju se postavljenim dozvolama.

Ako želite promijeniti dozvole u odnosu na trenutne dozvole, možete koristiti chmod u relativnom načinu. Kada koristite chmod u relativnom načinu radite s tri pokazatelja kako biste naznačili što želite učiniti:

  1. Prvo naznačite za koga želite promijeniti dozvole. Za to možete birati između korisnika (u), grupe (g) i drugih (o).
  2. Zatim koristite operator za dodavanje ili uklanjanje prava iz trenutnog režima ili ih postavljate apsolutno.
  3. Na kraju koristite r, w i x, kako biste naznačili koja prava želite postaviti.

Kada mijenjate dozvole u relativnom načinu, možete izostaviti deo «za koga» kako biste dodali ili uklonili dozvolu za sve objekte. Na primjer, ova komanda dodaje dozvolu za izvršavanje za sve korisnike:

chmod +x somefile

Kada radite u relativnom načinu, možete koristiti i složenije komande. Na primjer, ova komanda dodaje dozvolu za pisanje grupi i uklanja čitanje za druge:

chmod g+w,o-r somefile

Kada koristite chmod -R o+rx /data postavljate dozvolu za izvršavanje za sve direktorije, kao i za datoteke u direktoriju /data. Da biste postavili dozvolu za izvršavanje samo za direktorije, a ne za datoteke, koristite chmod -R o+ rX /data.

Veliko slovo X osigurava da datoteke ne dobiju dozvolu za izvršavanje ako datoteka već nije postavila dozvolu za izvršavanje za neke objekte. To čini X razumnijim načinom rada s dozvolama za izvršavanje; to će spriječiti postavljanje ove dozvole na datoteke gdje nije potrebna.

Proširene dozvole

Osim osnovnih dozvola o kojima ste upravo čitali, Linux takođe ima skup proširenih dozvola. To nisu dozvole koje postavljate prema zadatku, ali ponekad pružaju korisno proširenje. U ovom odlomku saznat ćete što su i kako ih postaviti.

Razumijevanje proširenih dozvola SUID, GUID i sticky bit

Postoje tri napredne dozvole. Prva od njih je dozvola za postavljanje identiteta korisnika (SUID). U nekim posebnim slučajevima možete primijeniti ovu dozvolu na izvršne datoteke. Po defaultu, korisnik koji pokreće izvršnu datoteku pokreće tu datoteku sa svojim vlastitim dozvolama.

Za obične korisnike to obično znači da je korištenje programa ograničeno. Međutim, u nekim slučajevima korisniku su potrebne posebne dozvole samo za obavljanje određenog zadatka.

Na primjer, razmislite o situaciji u kojoj korisniku treba promijeniti lozinku. Da bi to učinio, korisnik treba zapisati svoju novu lozinku u datoteku /etc/shadow. Međutim, ova datoteka nije dostupna za pisanje korisnicima koji nemaju pristup root-u:

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

SUID dozvola nudi rešenje za ovaj problem. U alatu /usr/bin/passwd ova dozvola se primenjuje prema zadatku. To znači da prilikom promene lozinke korisnik privremeno dobija root prava, što mu omogućava da zapisuje u datoteku /etc/shadow. Možete videti SUID dozvolu sa ls -l kao s na mestu gde obično očekujete da vidite x za korisničke dozvole:

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

SUID dozvola može izgledati korisno (i u nekim slučajevima jeste), ali istovremeno može biti potencijalno opasna. Pri pogrešnoj primeni možete slučajno podeliti root pristup. Stoga preporučujem da je koristite samo s maksimalnom opreznošću.

Većini administratora nikada neće biti potrebna; videćete je samo u nekim datotekama gde operativni sistem mora da je postavi kao zadatu.

Druga specijalna dozvola je grupni identifikator (SGID). Ova dozvola ima dva efekta. Kada se primeni na izvršnu datoteku, daje korisniku koji izvršava datoteku dozvole vlasnika grupe te datoteke. Tako, SGID može izvršiti više ili manje isto što i SUID. Ipak, za ovu svrhu SGID se praktično ne koristi.

Kao i kod SUID dozvole, SGID se primenjuje na neke sistemske datoteke kao podrazumevana postavka.

Kada se primeni na direktorijum, SGID može biti koristan jer ga možete koristiti za postavljanje vlasnika grupe prema zadatku za datoteke i poddirektorijume kreirane u tom direktorijumu. Podrazumevano, kada korisnik kreira datoteku, njegova efektivna primarna grupa postavlja se kao vlasnik grupe za tu datoteku.

To nije uvek vrlo korisno, posebno zato što korisnici Red Hat/CentOS kao svoju osnovnu grupu imaju grupu istog imena kao i korisnik, i u kojoj je korisnik jedini član. Tako, podrazumevano, datoteke koje korisnik stvara će biti grupne za zajednički pristup.

Zamislite situaciju kada korisnici linda i lori rade u računovodstvu i članovi su grupe accountPrema zadanim postavkama, ovi korisnici su članovi privatne grupe čiji su jedini članovi. Međutim, oba korisnika su članovi grupe account, ali i kao sekundarna grupa.

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

Iz tog razloga, dozvola SGID je vrlo korisna dozvola za postavljanje u direktorijima zajedničkih grupa.

Dozvola SGID se prikazuje u izlazu ls -l kao s na mjestu gdje obično nalazite dozvolu za izvršenje grupe:

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

Treća od posebnih dozvola je sticky bit. Ova dozvola je korisna za zaštitu datoteka od slučajnog brisanja u okruženju gdje više korisnika ima prava za pisanje u isti direktorij. Ako je sticky bit primijenjen, korisnik može izbrisati datoteku samo ako je vlasnik datoteke ili direktorija u kojem se datoteka nalazi. Zbog toga se primjenjuje kao zadana dozvola za direktorij /tmp i može biti korisna i za direktorije zajedničkih grupa.

Bez sticky bita, ako korisnik može kreirati datoteke u direktoriju, također može brisati datoteke iz tog direktorija. U javnom okruženju grupe to može biti iritirajuće. Zamislite korisnike lindu i lori koji oboje imaju prava za pisanje 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 ispunjeno jedno od sljedećih uvjeta:

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

Kada koristite ls -l, možete vidjeti sticky bit kao t na mjestu gdje obično vidite dozvolu za izvršavanje za druge:

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

Primjena naprednih prava

Da biste primijenili SUID, SGID i sticky bit, također možete koristiti chmod. SUID ima brojčanu vrijednost 4, SGID ima brojčanu vrijednost 2, a sticky bit ima brojčanu vrijednost 1.

Ako želite primijeniti ova dopuštenja, trebate dodati četveroznamenkasti argument u chmod, prva cifra odnosi se na posebna dopuštenja. Sljedeća linija, na primjer, dodaje SGID dozvolu direktoriju i postavlja rwx za korisnika i rx za grupu i ostale:

chmod 2755 /somedir

To je prilično nepraktično ako trebate provjeriti trenutna dopuštenja koja su postavljena prije nego što radite s chmod u apsolutnom načinu. (Risikirate prepisati dopuštenja ako to ne učinite.) Stoga preporučujem rad u relativnom načinu ako trebate primijeniti bilo koja od posebnih dopuštenja:

  1. Za SUID koristite chmod u+s.
  2. Za SGID koristite chmod g+s.
  3. Za sticky bit koristite chmod +t, a zatim naziv datoteke ili direktorija za koji želite postaviti dozvole.

U tablici je sažeto sve što je važno znati o upravljanju posebnim dozvolama.

Upravljanje pravima u Linuxu (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Primjer rada s posebnim pravima

U ovom primjeru koristite posebna dopuštenja kako bi članovima grupe olakšali razmjenu datoteka u direktoriju zajedničke grupe. Dodijelite ID-bit postavljenog identifikatora grupe, kao i sticky bit, i vidite da nakon njihova postavljanja dolaze funkcije koje olakšavaju suradnju članova grupe.

  1. Otvorite terminal u kojem ste korisnik linda. Možete kreirati korisnika naredbom useradd linda, dodajte lozinku passwd linda.
  2. Kreirajte u korijenu direktorij /data i poddirektorij /data/sales naredbom mkdir -p /data/sales. Izvršite cd /data/sales, kako biste prešli u direktorij sales. Izvršite touch linda1 i touch linda2, kako biste stvorili dvije prazne datoteke čiji je vlasnik linda.
  3. Izvršite su — lisa za prebacivanje trenutnog korisnika na korisnika lisa, koji je također član grupe sales.
  4. Izvršite cd /data/sales i iz ovog direktorija izvršite ls -l. Vidjet ćete dvije datoteke koje je napravila korisnica linda i koje pripadaju grupi linda. Izvršite rm -f linda*. To će izbrisati obje datoteke.
  5. Izvršite touch lisa1 i touch lisa2, kako biste stvorili dvije datoteke koje pripadaju korisniku lisa.
  6. Izvršite su — za povećanje vaših privilegija na razinu root.
  7. Izvršite chmod g+s,o+t /data/sales, za postavljanje bita identifikatora grupe (GUID) i sticky bita u zajedničkom direktoriju grupe.
  8. Izvršite su — linda. Zatim izvršite touch linda3 i touch linda4. Sada biste trebali vidjeti da dva datoteke koja ste kreirali pripadaju grupi sales koja je vlasnik grupe direktorija /data/sales.
  9. Izvršite rm -rf lisa*. Sticky bit sprječava brisanje tih datoteka u ime korisnika linda, jer niste vlasnik tih datoteka. Imajte na umu da ako je korisnik linda vlasnik direktorija /data/sales, on može izbrisati te datoteke bez obzira na sve!

Upravljanje ACL-om (setfacl, getfacl) u Linuxu

Čak i ako proširena prava koja su obrađena iznad dodaju korisnu funkcionalnost kako Linux radi s dozvolama, to ne omogućava dodjelu dozvola više od jednom korisniku ili jednoj grupi u jednom datoteci.

Popisi kontrola pristupa nude tu funkciju. Osim toga, omogućuju administratorima da postavljaju zadane dozvole složenim načinom u kojem postavljene dozvole mogu varirati u različitim direktorijima.

Razumijevanje ACL-a

Iako ACL pod sustav dodaje odlične funkcionalnosti vašem serveru, ima jedan nedostatak: ne podržavaju ga svi alati. Stoga, možete izgubiti postavke ACL-a prilikom kopiranja ili premještanja datoteka, a softver za izradu sigurnosnih kopija možda neće napraviti sigurnosnu kopiju postavki ACL-a.

Alat tar ne podržava ACL. Da biste bili sigurni da postavke ACL-a neće biti izgubljene prilikom izrade sigurnosne kopije, koristite star umjesto tar. star radi s istim parametrima kao i tar; samo dodaje podršku za postavke ACL-a.

Možete također napraviti sigurnosnu kopiju ACL koristeći getfacl, koje se može obnoviti pomoću naredbe setfacl. Da biste napravili sigurnosnu kopiju, upotrijebite getfacl -R /directory > file.acls. Da biste obnovili postavke iz datoteke sigurnosne kopije, koristite setfacl —restore=file.acl.

Nedostatak podrške od strane nekih alata ne bi trebao biti problem. ACL popisi se često primjenjuju na direktorije kao strukturna mjera, a ne na pojedinačne datoteke.
Stoga će ih biti malo, samo nekoliko, primijenjenih na pametnim mjestima datotečnog sustava. Stoga, obnavljanje izvornih ACL popisa s kojima ste radili relativno je lako, čak i ako vaš softver za rezervno kopiranje ne podržava to.

Priprema datotečnog sustava za ACL

Prije nego što počnete raditi s ACL-ima, možda će biti potrebno pripremiti datotečni sustav za podršku ACL-ima. Budući da je potrebno proširiti metapodatke datotečnog sustava, podrška za ACL-ove možda nije dostupna prema zadanim postavkama. Ako prilikom postavljanja ACL popisa za datotečni sustav dobijete poruku 'operation not supported', moguće je da vaš datotečni sustav ne podržava ACL.

Da biste to ispravili, trebate dodati opciju acl mount u datoteci /etc/fstab kako bi se datotečni sustav montirao s podrškom za ACL prema zadanim postavkama.

Mijenjanje i pregled postavki ACL pomoću setfacl i getfacl

Za postavljanje ACL-a potrebno vam je naredba setfacl. Da biste vidjeli trenutne postavke ACL-a, potrebna vam je getfacl. Komanda ls -l ne prikazuje postojeće ACL-ove; samo prikazuje + nakon popisa dozvola, što ukazuje na to da su ACL-ovi primijenjeni na datoteku.

Prije postavljanja ACL popisa, uvijek je korisno prikazati trenutne postavke ACL-a pomoću getfacl. U nastavku možete vidjeti trenutna prava pristupa, kao što je prikazano pomoću ls -l, kao i kako je prikazano s getfacl. Ako pogledate dovoljno pažljivo, vidjet ćete da je prikazana informacija doista ista.

[root@server1 \/]# ls -ld \/dir\ndrwxr-xr-x. 2 root root 6 Feb 6 11:28 \/dir
[root@server1 \/]# getfacl \/dir
getfacl: Removing leading '\/ from absolute path names\n# file: dir\n# owner: root\n# group: root\nuser::rwx\ngroup::r-x\nother::r-x

Kao rezultat izvođenja naredbe getfacl vidi se da su dozvole prikazane za tri različita objekte: korisnika, grupu i ostale. Sada dodajmo ACL kako bismo dodali prava čitanja i izvršavanja grupi sales. Naredba za to je setfacl -m g:sales:rx \/dir. U ovoj naredbi -m ukazuje da trenutne postavke ACL-a treba promijeniti. Nakon toga g:sales:rx govori naredbi da postavi ACL za čitanje i izvršavanje (rx) za grupu (g) sales. U nastavku možete vidjeti kako izgleda naredba, kao i ispis naredbe getfacl nakon promjene trenutnih postavki ACL-a.

[root@server1 \/]# setfacl -m g:sales:rx \/dir
[root@server1 \/]# getfacl \/dir
getfacl: Removing leading '\/ from absolute path names\n# file: dir\n# owner: root\n# group: root\nuser::rwx\ngroup::r-x\ngroup:sales:r-x\nmask::r-x\nother::r-x

Sada kada razumijete kako postaviti grupne ACL-ove, lako je shvatiti ACL-ove za korisnike i ostale korisnike. Na primjer, komanda setfacl -m u:linda:rwx /data daje dozvole korisniku linda u direktoriju /data, ne čineći ga vlasnikom i ne mijenjajući trenutnog vlasnika.

Komanda setfacl ima mnogo mogućnosti i opcija. Jedna opcija je posebno važna, parametar -R. Ako se koristi, opcija postavlja ACL-ove za sve datoteke i poddirektorije koji trenutno postoje u direktoriju gdje postavljate ACL. Preporučuje se da uvijek koristite ovu opciju prilikom promjene ACL lista za postojeće direktorije.

Rad s ACL-ovima po zadanim postavkama

Jedna od prednosti korištenja ACL lista je to što možete davati dozvole više korisnicima ili grupama u direktoriju. Još jedna prednost je to što možete omogućiti nasljeđivanje kada radite s ACL-ovima po zadanim postavkama.

Postavljanjem ACL-a po zadanim postavkama, odredite dozvole koje će biti postavljene za sve nove stavke koje se kreiraju u direktoriju. Imajte na umu da ACL po zadanim postavkama ne mijenja dozvole za postojeće datoteke i poddirektorije. Da biste ih promijenili, trebate dodati i obični ACL!

Važno je to znati. Ako želite koristiti ACL za postavljanje pristupa više korisnika ili grupa istom direktoriju, morate postaviti ACL dvaput. Prvo koristite setfacl -R -m, kako biste promijenili ACL za trenutne datoteke. Zatim koristite setfacl -m d:, kako biste se pobrinuli za sve nove stavke koje će također biti stvorene.

Da biste postavili ACL po zadanim postavkama, jednostavno trebate dodati opciju d iza opcije -m (redoslijed je bitan!). Zato koristite setfacl -m d:g:sales:rx /data, ako želite da grupa prodaje može čitati i izvršavati sve što će ikada biti kreirano u direktoriju /data.

Kada koristite ACL liste po zadanim postavkama, također može biti korisno postaviti ACL za druge. Obično to nema poseban smisao, jer također možete promijeniti dozvole za druge koristeći chmod. Međutim, ono što ne možete učiniti pomoću chmod, morate navesti prava koja će biti dodijeljena drugim korisnicima za svaki novi datoteku koja ikada bude stvorena. Ako ne želite da drugi imaju ikakva dopuštenja za bilo šta što je stvoreno u /data, na primjer, koristite setfacl -m d:o::- /data.

ACL i uobičajena dopuštenja nisu uvijek dobro integrirana. Problemi mogu nastati ako ste primijenili ACL prema zadanim postavkama na direktorij, a zatim su elementi dodani u taj direktorij, i nakon toga pokušate promijeniti uobičajena dopuštenja. Promjene koje se primjenjuju na uobičajena dopuštenja neće se dobro odraziti u ACL pregledu. Da biste izbjegli probleme, prvo postavite uobičajena dopuštenja, a zatim postavite ACL prema zadanim postavkama (i nakon toga pokušajte ih ne mijenjati ponovo).

Primjer upravljanja proširenim pravima pomoću ACL-a

U ovom primjeru nastavljate rad s direktorijima /data/account i /data/sales, koje ste ranije stvorili. U prethodnim primjerima osigurali ste da grupa sales ima dopuštenja za /data/sales, a grupa account ima dopuštenja za /data/account.

Prvo se pobrinite da grupa account dobije prava čitanja u direktoriju /data/sales, a grupa sales dobije prava čitanja u direktoriju /data/account.

Zatim postavljate ACL popise prema zadanim postavkama kako biste osigurali da su prava ispravno postavljena za sve nove datoteke.

  1. Otvorite terminal.
  2. Izvršite setfacl -m g:account:rx /data/sales i setfacl -m g:sales:rx /data/account.
  3. Izvršite getfacl, kako biste osigurali da su prava pristupa postavljena onako kako ste željeli.
  4. Izvršite setfacl -m d:g:account:rwx,g:sales:rx /data/sales, kako biste postavili ACL prema zadanim postavkama za direktorij sales.
  5. Dodajte ACL prema zadanim postavkama za direktorij /data/account, koristeći setfacl -m d:g:sales:rwx,g:account:rx /data/account.
  6. Osigurajte da ACL postavke djeluju, dodajući novu datoteku u /data/sales. Izvršite touch /data/sales/newfile i izvršite getfacl /data/sales/newfile kako biste provjerili trenutna dopuštenja.

Postavljanje zadatih prava pomoću umask

Gore ste naučili kako raditi s ACL-om prema zadanim postavkama. Ako ne koristite ACL, postoji opcija ljuske koja određuje zadana dopuštenja koja ćete dobiti: umask (obrambena maske). U ovom odjeljku naučit ćete kako promijeniti zadana dopuštenja pomoću umask.

Vjerojatno ste primijetili da se pri stvaranju nove datoteke postavljaju neka dopuštenja prema zadanim postavkama. Ta dopuštenja određena su postavkama. umask. Ova postavka maske primjenjuje se svim korisnicima prilikom prijave u sustav. U postavci umask koristi se numerička vrijednost koja se oduzima od maksimalnih dozvola koje se mogu automatski postaviti za datoteku; maksimalna postavka za datoteke je 666, a za direktorije 777.

Međutim, postoje neka izuzeća od ovog pravila. Možete pronaći potpuni pregled postavki umask u tablici ispod.

Od znamenki korištenih u umask, kao i u slučaju numeričkih argumenata za naredbu chmod, prva znamenka odnosi se na dozvole korisnika, druga znamenka odnosi se na dozvole grupe, a posljednja se odnosi na zadane dozvole postavljene za ostale. Vrijednost umask po zadanim postavkama 022 daje 644 za sve nove datoteke i 755 za sve nove direktorije stvorene na vašem poslužitelju.

Potpun pregled svih numeričkih vrijednosti umask i njihovih rezultata u tablici ispod.

Upravljanje pravima u Linuxu (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Jednostavan način da vidite kako radi postavka umask izgleda ovako: započnite s zadanim dozvolama za datoteku postavljenim na 666 i oduzmite umask kako biste dobili važeće dozvole. Učinite isto za direktorij i njegove zadane dozvole 777.

Postoje dva načina za promjenu postavke umask: za sve korisnike i za pojedinačne korisnike. Ako želite postaviti umask za sve korisnike, morate osigurati da se postavka umask uzima u obzir prilikom pokretanja datoteka okruženja ljuske, kao što je navedeno u /etc/profile. Ispravan pristup je stvoriti skriptu ljuske pod imenom umask.sh u direktoriju /etc/profile.d i navesti umask koji želite koristiti u toj skripti ljuske. Ako se umask mijenja u ovoj datoteci, primjenjuje se na sve korisnike nakon prijave na poslužitelj.

Alternativa postavljanju umask putem /etc/profile i povezanih datoteka, gdje se primjenjuje na sve korisnike koji se prijavljuju, je promjena postavki umask u datoteci pod imenom .profile, koja se stvara u početnom direktoriju svakog korisnika.

Postavke koje se primjenjuju u ovoj datoteci odnose se samo na pojedinačnog korisnika; stoga je to dobar metod ako vam je potrebna veća detaljnost. Osobno mi se sviđa ova funkcija da promijenim zadanu vrijednost umask za korisnika root na 027, dok obični korisnici rade s zadanim umask 022.

Rad s proširenim korisničkim atributima

Ovo je završni odjeljak o pravima u Linuxu.

Prilikom rada s dozvolama uvijek postoji veza između objekta korisnika ili grupe i dozvola koje ti objekti korisnika ili grupe imaju za datoteku ili direktorij. Alternativna metoda zaštite datoteka na Linux poslužitelju je rad s atributima.
Atributi obavljaju svoju funkciju neovisno o korisniku koji pristupa datoteci.

Kao i u slučaju s ACL-om, za datotečne atribute možda će biti potrebno uključiti opciju mount.

user_xattr . Ako dobijete poruku "operacija nije podržana" prilikom rada s proširenim korisničkim atributima, obavezno postavite opcijuu datoteci /etc/fstab. mount Mnogi atributi su dokumentirani. Neki atributi su dostupni, ali još nisu implementirani. Ne koristite ih; neće vam donijeti ništa.

Ispod su najkorisniji atributi koje možete primijeniti:

Ovaj atribut osigurava da se vrijeme pristupa datoteci ne mijenja.

A Obično, svaki put kada se datoteka otvara, vrijeme pristupa datoteci treba biti zabilježeno u metapodacima datoteke. To negativno utječe na performanse; stoga se za datoteke kojima se često pristupa, atribut
može koristiti za isključivanje te funkcije. A Ovaj atribut omogućuje dodavanje, ali ne brisanje datoteke.

a Ako koristite datotečni sustav koji podržava kompresiju na razini volumena, ovaj atribut datoteke osigurava da će datoteka biti komprimirana prilikom prvog uključivanja mehanizma kompresije.

c Ovaj atribut osigurava da se promjene u datotekama odmah bilježe na disk, a ne u predmemoriju prvo. To je korisni atribut za važne datoteke baze podataka, koji osigurava da se ne izgube između predmemorije datoteka i tvrdog diska.

D Ovaj atribut osigurava da datoteka neće biti spremljena u sigurnosne kopije gdje se koristi alat za dump.

d Ovaj atribut uključuje indeksiranje za direktorij u kojem je uključen. To omogućuje brži pristup datotekama za primitivne datotečne sustave, poput Ext3, koji ne koriste B-stablo za brzi pristup datotekama.

I Ovaj atribut osigurava da se promjene u datotekama odmah bilježe na disk, a ne u predmemoriju prvo. To je korisni atribut za važne datoteke baze podataka, koji osigurava da se ne izgube između predmemorije datoteka i tvrdog diska.

i Ova atribut čini datoteku nepromjenjivom. Stoga se promjene ne mogu unijeti u datoteku, što je korisno za datoteke koje trebaju dodatnu zaštitu.

j Ovaj atribut jamči da se u datotečnom sustavu ext3 datoteka prvo zapisuje u dnevnik, a zatim u podatkovne blokove na tvrdom disku.

s Prepisati blokove u kojima je datoteka bila pohranjena s 0 nakon brisanja datoteke. To jamči da je oporavak datoteke nemoguć nakon što je izbrisana.

u Ovaj atribut čuva informacije o brisanju. To omogućava razvoj alata koji radi s tim informacijama za spašavanje izbrisanih datoteka.

Ako želite primijeniti atribute, možete koristiti naredbu chattr. Na primjer, upotrijebite chattr +s somefile, kako biste primijenili atribute na somefile. Trebate ukloniti atribut? Tada koristite chattr -s somefile, i on će biti uklonjen. Da biste dobili pregled svih atributa koji su trenutno primijenjeni, upotrijebite naredbu lsattr.

Sažetak

U ovom ste članku naučili kako raditi s dozvolama. Pročitali ste o tri osnovne dozvole, proširenim dozvolama i o tome kako primijeniti ACL-liste u datotečnom sustavu. Također ste saznali kako koristiti parametr umask za primjenu zadatih dozvola. Na kraju ovog članka naučili ste kako koristiti proširene korisničke atribute za primjenu dodatne razine sigurnosti datotečnog sustava.

Ako vam se svidio ovaj prijevod, molim vas da to napišete u komentarima. Bit će više motivacije za korisne prijevode.

U članku sam ispravio nekoliko pravopisnih i gramatičkih grešaka. Smanjio sam neke opsežne odlomke na manje radi lakšeg čitanja.

Umjesto "Samo netko s administratorskim pravima na mapi može primijeniti dozvolu za izvršavanje." ispravio sam na "Samo netko s pravima pisanja na mapi može primijeniti dozvolu za izvršavanje.", što će biti točnije.

Hvala na primjedbama berez.

Zamijenjeno:
Ako niste vlasnik korisnika, ljuska će provjeriti jeste li član grupe koja se također naziva grupom datoteke.

Na:
Ako niste vlasnik datoteke, ljuska će provjeriti jeste li član grupe koja ima dozvole za tu datoteku. Ako ste član te grupe, dobivate pristup datoteci s dozvolama koje su postavljene za grupu i ljuska će prestati s provjerom.

Hvala na primjedbi CryptoPirate

Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster