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

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

Gurnuti: Nadam se da će članak biti koristan ne samo za početnike, već će također pomoći iskusnijim administratorima da usmjere svoje znanje.

Pa, idemo.

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

Za pristup datotekama u Linuxu koriste se dopuštenja. Ove su dozvole dodijeljene trima objektima: vlasniku datoteke, vlasniku grupe i drugom objektu (tj. svima ostalima). U ovom ćete članku naučiti kako primijeniti dopuštenja.

Ovaj članak počinje pregledom osnovnih pojmova, nakon čega slijedi rasprava o posebnim dozvolama i popisima kontrole pristupa (ACL). Na kraju ovog članka pokrivamo postavljanje zadanih dopuštenja putem umaska, kao i upravljanje proširenim korisničkim atributima.

Upravljanje vlasništvom datoteka

Prije rasprave o dozvolama, trebali biste biti svjesni uloge vlasnika datoteke i direktorija. Vlasništvo nad datotekama i direktorijima ključno je za rješavanje dopuštenja. U ovom odjeljku prvo ćete naučiti kako možete vidjeti vlasnika. Zatim ćete naučiti kako promijeniti vlasnika i korisnika grupe za datoteke i direktorije.

Prikaz vlasnika datoteke ili direktorija

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

Ti se vlasnici postavljaju kada se kreira datoteka ili direktorij. Korisnik koji kreira datoteku postaje vlasnik te datoteke, a primarna grupa kojoj taj isti korisnik pripada također postaje vlasnik te datoteke. Kako bi se utvrdilo imate li vi, kao korisnik, dopuštenje za pristup datoteci ili imeniku, ljuska provjerava vlasništvo.

To se događa sljedećim redoslijedom:

  1. Ljuska provjerava jeste li vi vlasnik datoteke kojoj želite pristupiti. Ako ste vlasnik, dobivate dopuštenja i ljuska prestaje provjeravati.
  2. Ako niste vlasnik datoteke, ljuska će provjeriti jeste li član grupe koja ima dopuštenja za datoteku. Ako ste član ove grupe, pristupit ćete datoteci s dozvolama koje je grupa postavila, a ljuska će prestati provjeravati.
  3. Ako niste niti korisnik niti vlasnik grupe, dobivate prava drugih korisnika (Ostalo).

Da biste vidjeli trenutne dodjele vlasnika, možete koristiti naredbu je -l. Ova naredba prikazuje korisnika i vlasnika grupe. Ispod možete vidjeti postavke vlasnika za direktorije u /home direktoriju.

[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

Uz zapovijed ls možete prikazati vlasnika datoteka u određenom direktoriju. Ponekad može biti korisno dobiti popis svih datoteka na sustavu čiji je vlasnik određeni korisnik ili grupa. Za ovo možete koristiti naći. Argument pronaći-korisnika mogu se koristiti za ovu svrhu. Na primjer, sljedeća naredba ispisuje sve datoteke koje su u vlasništvu korisnika linda:

find / -user linda

Također možete koristiti naći za traženje datoteka čiji je vlasnik određena grupa.

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

find / -group users

Promjena vlasnika

Da biste primijenili odgovarajuća dopuštenja, prvo što treba uzeti u obzir je vlasništvo. Za to postoji naredba chown. Sintaksu ove naredbe lako je razumjeti:

chown кто что

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

chown linda /home/account

Momčad chown ima nekoliko opcija, od kojih je jedna posebno korisna: -R. Možete pogoditi što radi jer je ova opcija dostupna i za mnoge druge naredbe. To vam omogućuje rekurzivno postavljanje vlasnika, što vam omogućuje da postavite vlasnika trenutnog imenika i svega ispod. Sljedeća naredba mijenja vlasništvo nad /home imenikom i svime ispod njega korisniku 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

Učinimo:

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

Sada je korisnica lisa postala vlasnica imenika računa:

[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 za promjenu vlasništva nad grupom. To možete učiniti pomoću chown, ali postoji posebna naredba pod nazivom chgrpto radi posao. Ako želite koristiti naredbu chown, koristiti . ili : ispred naziva grupe.

Sljedeća naredba mijenja bilo kojeg vlasnika grupe /home/account u grupu računa:

chown .account /home/account

možeš koristiti chown promijeniti vlasnika korisnika i/ili grupe na nekoliko načina. Evo nekoliko primjera:

  • chown lisa moja datoteka1 postavlja korisnika lisa kao vlasnika myfile1.
  • chown lisa.prodaja moja datoteka postavlja korisnika lisa kao vlasnika datoteke myfile, a također postavlja prodajnu grupu kao vlasnika iste datoteke.
  • chown lisa:moja datoteka prodaje isto kao i prethodna naredba.
  • chown .prodaja moja datoteka postavlja prodajnu grupu kao vlasnika moje datoteke bez promjene vlasnika korisnika.
  • chown :prodaja moja datoteka isto kao i prethodna naredba.

Možete koristiti naredbu chgrpza promjenu vlasnika grupe. Razmotrite sljedeći primjer, gdje možete koristiti chgrp postavite vlasnika imenika računa na prodajnu grupu:

chgrp .sales /home/account

Kao i sa chown, možete koristiti opciju -R с chgrp, kao i rekurzivno promijeniti vlasnika grupe.

Razumijevanje zadanog vlasnika

Možda ste primijetili da kada korisnik kreira datoteku, primjenjuje se zadano vlasništvo.
Korisnik koji kreira datoteku automatski postaje vlasnik te datoteke, a primarna grupa tog korisnika automatski postaje vlasnik te datoteke. To je obično grupa koja je navedena u datoteci /etc/passwd kao primarna grupa korisnika. Međutim, ako je korisnik član više od jedne grupe, može promijeniti efektivnu primarnu grupu.

Za prikaz trenutne efektivne primarne grupe, korisnik može koristiti naredbu skupine:

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

Ako trenutni linda korisnik želi promijeniti efektivnu primarnu grupu, koristit će naredbu novi grpnakon čega slijedi naziv grupe koju želi postaviti kao novu efektivnu primarnu grupu. Nakon korištenja naredbe novi grp primarna grupa će biti aktivna dok korisnik ne unese naredbu izlaz ili se ne odjaviti.

Sljedeće pokazuje kako korisnica linda koristi ovu naredbu, s prodajom kao primarnom grupom:

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 promjene efektivne primarne grupe, sve nove datoteke koje stvori korisnik imat će tu grupu kao vlasnika grupe. Da biste se vratili na izvornu postavku primarne grupe, upotrijebite izlaz.

Da biste mogli koristiti naredbu novi grp, korisnik mora biti član grupe koju želi koristiti kao primarnu grupu. Osim toga, grupna lozinka može se koristiti za grupu pomoću naredbe gpasswd. Ako korisnik koristi naredbu novi grpali nije član ciljne skupine, ljuska traži lozinku grupe. Nakon što unesete ispravnu lozinku grupe, uspostavit će se nova učinkovita primarna grupa.

Upravljanje temeljnim pravima

Sustav dozvola za Linux izumljen je 1970-ih. Budući da su računalne potrebe tih godina bile ograničene, osnovni sustav dopuštenja bio je prilično ograničen. Ovaj sustav dopuštenja koristi tri dopuštenja koja se mogu primijeniti na datoteke i direktorije. U ovom odjeljku naučit ćete kako koristiti i promijeniti ta dopuštenja.

Razumijevanje dopuštenja za čitanje, pisanje i izvršavanje

Tri osnovna dopuštenja omogućuju vam čitanje, pisanje i izvršavanje datoteka. Učinak ovih dozvola razlikuje se kada se primjenjuju na datoteke ili direktorije. Za datoteku, dopuštenje za čitanje daje vam pravo da otvorite datoteku za čitanje. Stoga možete pročitati njezin sadržaj, ali to znači da vaše računalo može otvoriti datoteku i učiniti nešto s njom.

Programska datoteka koja treba pristup biblioteci mora, na primjer, imati pristup čitanju te biblioteke. Iz toga slijedi da je dopuštenje za čitanje najosnovnije dopuštenje koje vam je potrebno za rad s datotekama.

Kada se primijeni na imenik, čitanje vam omogućuje prikaz sadržaja tog imenika. Trebali biste znati da vam ova dozvola ne dopušta čitanje datoteka u direktoriju. Sustav dopuštenja Linuxa ne poznaje nasljeđivanje i jedini način za čitanje datoteke jest korištenje dopuštenja za čitanje te datoteke.

Kao što vjerojatno možete pogoditi, dozvola za pisanje, ako se primijeni na datoteku, dopušta pisanje u datoteku. Drugim riječima, omogućuje vam promjenu sadržaja postojećih datoteka. Međutim, ne dopušta vam stvaranje ili brisanje novih datoteka ili promjenu dopuštenja za datoteke. Da biste to učinili, trebate dati dopuštenje za pisanje u direktorij u kojem želite stvoriti datoteku. U direktorijima, ovo vam dopuštenje također omogućuje stvaranje i brisanje novih poddirektorija.

Dozvola za izvršenje je ono što vam je potrebno za izvršenje datoteke. Nikada se neće instalirati prema zadanim postavkama, što Linux čini gotovo potpuno imunim na viruse. Samo netko s dopuštenjem za pisanje u direktoriju može primijeniti dopuštenje za izvršenje.

Sljedeće sažima korištenje osnovnih dozvola:

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

Koristeći chmod

Naredba se koristi za upravljanje dopuštenjima. chmod... Korištenje chmod možete postaviti dopuštenja za korisnika (user), grupe (group) i ostale (ostalo). Ovu naredbu možete koristiti u dva načina: relativnom i apsolutnom. U apsolutnom načinu, tri znamenke koriste se za postavljanje osnovnih dopuštenja.

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

Prilikom postavljanja dopuštenja izračunajte vrijednost koja vam je potrebna. Ako želite postaviti čitanje/pisanje/izvršavanje za korisnika, čitanje/izvršavanje za grupu i čitanje/izvršavanje za druge u /somefile tada koristite sljedeću naredbu chmod:

chmod 755 /somefile

Kada koristite chmod na taj se način sva trenutna dopuštenja zamjenjuju dopuštenjima koja ste postavili.

Ako želite promijeniti dopuštenja u odnosu na trenutna dopuštenja, možete koristiti chmod u relativnom načinu rada. Korištenje chmod u relativnom načinu rada radite s tri indikatora koji pokazuju što želite učiniti:

  1. Najprije odredite za koga želite promijeniti dopuštenja. Da biste to učinili, možete birati između korisnika (u), grupa (g) i drugi (o).
  2. Zatim koristite naredbu za dodavanje ili uklanjanje dopuštenja iz trenutnog načina rada ili ih postavite apsolutno.
  3. Na kraju koristite r, w и xda odredite koja dopuštenja želite postaviti.

Kada mijenjate dopuštenja u relativnom načinu rada, možete preskočiti dio "do" kako biste dodali ili uklonili dopuštenje za sve objekte. Na primjer, ova naredba dodaje dopuštenje za izvršenje za sve korisnike:

chmod +x somefile

Kada radite u relativnom načinu rada, također možete koristiti složenije naredbe. Na primjer, ova naredba dodaje dopuštenje za pisanje grupi i uklanja dopuštenje za čitanje za druge:

chmod g+w,o-r somefile

Kada koristite chmod -R o+rx /podaci postavite dopuštenje za izvršenje za sve direktorije kao i datoteke u /data direktoriju. Za postavljanje dopuštenja izvršenja samo za direktorije, a ne za datoteke, koristite chmod -R o+ rX /podaci.

Velika slova X osiguravaju da datoteke ne dobiju dopuštenje za izvođenje osim ako datoteka već ima postavljeno dopuštenje za izvođenje za neke objekte. Ovo X čini pametnijim načinom za rješavanje dopuštenja za izvršenje; ovo će izbjeći postavljanje ove dozvole na datoteke gdje nije potrebna.

Proširena prava

Uz osnovna dopuštenja o kojima ste upravo čitali, Linux ima i skup naprednih dopuštenja. To nisu dopuštenja koja postavljate prema zadanim postavkama, ali ponekad pružaju koristan dodatak. U ovom odjeljku saznat ćete što su i kako ih postaviti.

Razumijevanje proširenih dopuštenja SUID, GUID i Sticky Bit

Postoje tri napredne dozvole. Prva od njih je dopuštenje za postavljanje identifikatora korisnika (SUID). U nekim posebnim slučajevima možete primijeniti ovu dozvolu na izvršne datoteke. Prema zadanim postavkama, korisnik koji pokreće izvršnu datoteku pokreće tu datoteku sa svojim dopuštenjima.

Za obične korisnike to obično znači da je korištenje programa ograničeno. Međutim, u nekim slučajevima korisnik treba posebna dopuštenja samo za obavljanje određenog zadatka.

Razmotrimo, na primjer, situaciju u kojoj korisnik treba promijeniti svoju lozinku. Da bi to učinio, korisnik mora napisati svoju novu lozinku u datoteku /etc/shadow. Međutim, ovu datoteku ne mogu pisati nekorijenski korisnici:

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

SUID dozvola nudi rješenje za ovaj problem. Pomoćni program /usr/bin/passwd koristi ovo dopuštenje prema zadanim postavkama. To znači da prilikom promjene lozinke korisnik privremeno postaje root, što mu omogućuje pisanje u datoteku /etc/shadow. Možete vidjeti SUID dozvolu sa je -l kao s u položaju u kojem biste inače očekivali da ćete vidjeti x za prilagođene dozvole:

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

SUID dopuštenje može izgledati korisno (au nekim slučajevima i jest), ali je u isto vrijeme potencijalno opasno. Ako se ne primijeni ispravno, možete slučajno dati root dopuštenja. Stoga preporučujem da ga koristite samo s najvećom pažnjom.

Većina administratora nikada ga neće morati koristiti; vidjet ćete ga samo u nekim datotekama gdje bi ga operativni sustav trebao postaviti prema zadanim postavkama.

Druga posebna dozvola je identifikator grupe (SGID). Ovo dopuštenje ima dva učinka. Kada se primijeni na izvršnu datoteku, korisniku koji izvršava datoteku daje dopuštenja vlasnika grupe datoteke. Dakle, SGID može raditi više-manje isto što i SUID. Međutim, SGID se praktički ne koristi u tu svrhu.

Kao i kod SUID dopuštenja, SGID se primjenjuje na neke sistemske datoteke kao zadana postavka.

Kada se primijeni na direktorij, SGID može biti koristan jer ga možete koristiti za postavljanje zadanog vlasnika grupe za datoteke i poddirektorije stvorene u tom direktoriju. Prema zadanim postavkama, kada korisnik kreira datoteku, njegova efektivna primarna grupa postavlja se kao vlasnik grupe za tu datoteku.

Ovo nije uvijek vrlo korisno, pogotovo jer korisnici Red Hat/CentOS-a imaju svoju primarnu grupu postavljenu na grupu s istim imenom kao i korisnik, a čiji je korisnik jedini član. Stoga će se prema zadanim postavkama datoteke koje korisnik stvori skupno dijeliti.

Zamislite situaciju u kojoj korisnici linda i lori rade u računovodstvu i članovi su grupe račun. Prema zadanim postavkama, ti su korisnici članovi privatne grupe čiji su oni jedini članovi. Međutim, oba korisnika su članovi grupe računa, ali i kao sekundarni parametar grupe.

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 stvorio lori, i obrnuto. Međutim, ako stvorite dijeljeni grupni direktorij (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 sve svojih poddirektorija, prema zadanim postavkama dobivaju i račun grupe kao vlasnika grupe.

Iz tog razloga, SGID dozvola je vrlo korisna dozvola za postavljanje na direktorije javnih grupa.

SGID dopuštenje prikazano u izlazu je -l kao s na mjestu gdje biste inače imali dopuštenje za izvršenje grupe:

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

Treće od posebnih dopuštenja je ljepljivi dio. Ova je dozvola korisna za zaštitu datoteka od slučajnog brisanja u okruženju u kojem više korisnika ima pristup za pisanje u isti direktorij. Ako se koristi ljepljivi bit, korisnik može izbrisati datoteku samo ako je korisnik vlasnik datoteke ili direktorija koji sadrži datoteku. Iz tog razloga, koristi se kao zadana dozvola za /tmp direktorij i može biti korisna i za direktorije javnih grupa.

Bez ljepljivog bita, ako korisnik može stvarati datoteke u direktoriju, može i brisati datoteke iz tog direktorija. U okruženju javne grupe to može biti neugodno. Zamislite korisnice linda i lori, koje obje imaju dopuštenja za pisanje u direktorij /data/account i dobivaju ta dopuštenja tako što su članovi grupe računa. Stoga linda može brisati datoteke koje je stvorio lori i obrnuto.

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

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

Kada koristite je -l, možete vidjeti ljepljivi dio kao t na poziciji gdje biste inače vidjeli dopuštenje za izvršenje za druge:

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

Primjena proširenih prava

Za primjenu SUID, SGID i sticky bit također možete koristiti chmod. SUID ima numeričku vrijednost 4, SGID ima numeričku vrijednost 2, a sticky bit ima numeričku vrijednost 1.

Ako želite primijeniti ove dozvole, morate dodati četveroznamenkasti argument chmod, čija se prva znamenka odnosi na posebne dozvole. Sljedeći redak će, na primjer, dodati SGID dozvolu direktoriju i postaviti rwx za korisnika i rx za grupu i ostale:

chmod 2755 /somedir

Ovo je prilično nepraktično ako trebate vidjeti trenutna dopuštenja koja su postavljena prije rada s chmod u apsolutnom načinu rada. (Izlažete se riziku prepisivanja dopuštenja ako to ne učinite.) Stoga preporučujem izvođenje u relativnom načinu rada ako trebate primijeniti bilo koje od posebnih dopuštenja:

  1. Za SUID upotrebu chmod u+s.
  2. Za korištenje SGID-a chmod g+s.
  3. Za upotrebu s ljepljivim komadićima chmod +t, nakon čega slijedi naziv datoteke ili direktorija za koji želite postaviti dopuštenja.

Tablica sažima sve što trebate znati o upravljanju posebnim dozvolama.

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

Primjer rada s posebnim pravima

U ovom primjeru koristite posebna dopuštenja kako biste članovima grupe olakšali dijeljenje datoteka u zajedničkom direktoriju grupe. ID bit dodijelite postavljenom ID-u grupe, kao i ljepljivi bit, i vidite da se nakon postavljanja dodaju značajke koje članovima grupe olakšavaju zajednički rad.

  1. Otvorite terminal na kojem ste linda korisnik. Možete stvoriti korisnika pomoću naredbe Linda, dodajte lozinku passwd Linda.
  2. Naredbom stvorite direktorij /data u korijenu i poddirektorij /data/sales mkdir -p /podaci/prodaja. Kompletan cd /podaci/prodajaotići u prodajni imenik. Kompletan dodirni linda1 и dodirni linda2za stvaranje dvije prazne datoteke u vlasništvu Linde.
  3. Izvršiti su-lisa prebaciti trenutnog korisnika na korisnicu lisa koja je ujedno i član prodajne grupe.
  4. Izvršiti cd /podaci/prodaja i iz tog imenika izvršiti je -l. Vidjet ćete dvije datoteke koje je stvorio korisnik linda i pripadaju grupi linda. Kompletan rm -f linda*. Ovo će ukloniti obje datoteke.
  5. Izvršiti dodirni lisa1 и dodirni lisa2za stvaranje dvije datoteke koje su u vlasništvu korisnika lisa.
  6. Izvršiti su- da podignete svoje privilegije na root.
  7. Izvršiti chmod g+s,o+t /podaci/prodajaza postavljanje bita identifikatora grupe (GUID) kao i ljepljivog bita u dijeljenom grupnom direktoriju.
  8. Izvršiti su-linda. Onda učini dodirni linda3 и dodirni linda4. Sada biste trebali vidjeti da su dvije datoteke koje ste stvorili u vlasništvu prodajne grupe, koja je grupni vlasnik direktorija /data/sales.
  9. Izvršiti rm -rf lisa*. Ljepljivi bit sprječava brisanje ovih datoteka u ime korisnika linda, jer vi niste vlasnik tih datoteka. Imajte na umu da ako je linda korisnik vlasnik direktorija /data/sales, on svejedno može izbrisati ove datoteke!

ACL upravljanje (setfacl, getfacl) u Linuxu

Iako gore spomenuta proširena dopuštenja dodaju korisnu funkcionalnost načinu na koji Linux rukuje dopuštenjima, to vam ne dopušta davanje dopuštenja za više od jednog korisnika ili grupe u istoj datoteci.

Popisi kontrole pristupa nude ovu značajku. Osim toga, dopuštaju administratorima postavljanje zadanih dopuštenja na složen način, pri čemu se postavljena dopuštenja mogu razlikovati od direktorija do direktorija.

Razumijevanje ACL-ova

Iako ACL podsustav dodaje veliku funkcionalnost vašem poslužitelju, ima jedan nedostatak: ne podržavaju ga svi uslužni programi. Stoga možete izgubiti svoje ACL postavke kada kopirate ili premještate datoteke, a vaš softver za sigurnosno kopiranje možda neće uspjeti napraviti sigurnosnu kopiju vaših ACL postavki.

Uslužni program tar ne podržava ACL-ove. Kako biste bili sigurni da ACL postavke nisu izgubljene kada izradite sigurnosnu kopiju, koristite hvězda umjesto katrana. hvězda radi s istim opcijama kao tar; samo dodaje podršku za ACL postavke.

Također možete sigurnosno kopirati ACL-ove pomoću dobitifacl, koji se može vratiti pomoću naredbe setfacl. Za izradu sigurnosne kopije koristite getfacl -R /direktorij > datoteka.acls. Za vraćanje postavki iz sigurnosne kopije koristite setfacl --restore=file.acl.

Nedostatak podrške nekih alata ne bi trebao biti problem. ACL-ovi se često primjenjuju na direktorije kao strukturna mjera, a ne na pojedinačne datoteke.
Stoga ih neće biti mnogo, već samo nekoliko, primijenjenih na pametnim mjestima u datotečnom sustavu. Stoga je vraćanje izvornih ACL-ova s ​​kojima ste radili relativno jednostavno, čak i ako ih vaš softver za sigurnosno kopiranje ne podržava.

Priprema datotečnog sustava za ACL-ove

Prije nego što počnete raditi s ACL-ovima, možda ćete morati pripremiti svoj datotečni sustav da podržava ACL-ove. Budući da se metapodaci datotečnog sustava moraju proširiti, ne postoji uvijek zadana podrška za ACL-ove u datotečnom sustavu. Ako dobijete poruku "operacija nije podržana" prilikom postavljanja ACL-ova za datotečni sustav, vaš datotečni sustav možda ne podržava ACL-ove.

Da biste to popravili, morate dodati opciju acl mount u /etc/fstab tako da je datotečni sustav prema zadanim postavkama montiran s ACL podrškom.

Promjena i pregled ACL postavki pomoću setfacl i getfacl

Za postavljanje ACL-a potrebna vam je naredba setfacl. Da biste vidjeli trenutne ACL postavke, trebate dobitifacl. Tim je -l ne prikazuje nijedan postojeći ACL; samo pokazuje + nakon popisa dopuštenja, što označava da se ACL-ovi primjenjuju i na datoteku.

Prije postavljanja ACL-ova, uvijek je dobra ideja prikazati trenutne ACL postavke dobitifacl. U donjem primjeru možete vidjeti trenutna dopuštenja, kao što je prikazano s je -l, kao i kao što je prikazano s dobitifacl. Ako dovoljno pažljivo pogledate, vidjet ćete da su prikazane informacije potpuno iste.

[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

Kao rezultat izvršenja naredbe dobitifacl ispod možete vidjeti da su dopuštenja prikazana za tri različita objekta: korisnik, grupa i ostali. Dodajmo sada ACL da damo dopuštenja za čitanje i izvršavanje i prodajnoj grupi. naredba za ovo setfacl -mg:prodaja:rx /dir. U ovoj ekipi -m označava da je potrebno promijeniti trenutne ACL postavke. Nakon toga g:prodaja:rx govori naredbi da postavi ACL za čitanje-izvršavanje (rx) za grupu (g) prodaja. Ispod možete vidjeti kako naredba izgleda, kao i izlaz getfacl naredbe nakon promjene trenutnih ACL postavki.

[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

Sada kada razumijete kako postaviti grupni ACL, lako je razumjeti ACL-ove za korisnike i druge korisnike. Na primjer, naredba setfacl -mu:linda:rwx /podaci daje dopuštenja linda korisniku u direktoriju /data bez da ga čini vlasnikom ili mijenja dodjelu trenutnog vlasnika.

Momčad setfacl ima mnogo značajki i opcija. Jedna opcija je posebno važna, parametar -R. Ako se koristi, opcija postavlja ACL za sve datoteke i poddirektorije koji trenutno postoje u direktoriju u kojem ste postavili ACL. Preporuča se da uvijek koristite ovu opciju kada mijenjate ACL-ove za postojeće direktorije.

Rad sa zadanim ACL-ovima

Jedna od prednosti korištenja ACL-ova je da možete dodijeliti dopuštenja većem broju korisnika ili grupa u direktoriju. Još jedna prednost je da možete omogućiti nasljeđivanje radom sa zadanim ACL-ovima.

Postavljanjem zadanog ACL-a određujete dopuštenja koja će biti postavljena za sve nove stavke stvorene u imeniku. Imajte na umu da zadani ACL ne mijenja dopuštenja za postojeće datoteke i poddirektorije. Da biste ih promijenili, trebate dodati i normalni ACL!

Ovo je važno znati. Ako želite koristiti ACL za konfiguriranje više korisnika ili grupa za pristup istom direktoriju, morate dvaput postaviti ACL. Prvo korištenje setfacl -R -mza promjenu ACL-ova za trenutne datoteke. Zatim koristite setfacl-md:voditi računa o svim novim elementima koji će također nastati.

Za postavljanje zadanog ACL-a samo trebate dodati opciju d nakon opcije -m (redoslijed je bitan!). Dakle, koristite setfacl -md:g:sales:rx /podaciako želite da grupna prodaja čita i izvršava sve što je ikada stvoreno u /data direktoriju.

Kada koristite zadane ACL-ove, također može biti korisno postaviti ACL-ove za druge. To obično nema puno smisla jer također možete promijeniti dopuštenja za druge korisnike chmod. Međutim, ono što ne možete učiniti sa chmod, je određivanje prava koja se moraju dodijeliti drugim korisnicima za svaku novu datoteku koja je ikada stvorena. Ako želite spriječiti druge da dobiju dopuštenja za bilo što stvoreno u /data, na primjer, koristite setfacl -md:o::- /podaci.

ACL-ovi i normalne dozvole nisu uvijek dobro integrirani. Problemi mogu nastati ako primijenite zadani ACL na direktorij, zatim se dodaju stavke u taj direktorij, a zatim pokušate promijeniti uobičajene dozvole. Promjene koje se odnose na uobičajene dozvole neće se dobro odraziti u pregledu ACL-a. Da biste izbjegli probleme, prvo postavite normalna dopuštenja, a zatim postavite zadane ACL-ove (i pokušajte ih nakon toga više ne mijenjati).

Primjer upravljanja povišenim pravima pomoću ACL-ova

U ovom primjeru, nastavit ćete s direktorijima /data/account i /data/sales koje ste prethodno stvorili. U prethodnim primjerima osigurali ste da prodajna grupa ima dopuštenja za /data/sales, a grupa računa ima dopuštenja za /data/account.

Najprije provjerite dobiva li grupa računa dopuštenja za čitanje u /data/sales direktoriju, a prodajna grupa dobiva dopuštenja za čitanje u /data/account direktoriju.

Zatim postavljate zadane ACL-ove kako biste bili sigurni da sve nove datoteke imaju ispravna postavljena dopuštenja za sve nove stavke.

  1. Otvorite terminal.
  2. Izvršiti setfacl -mg:račun:rx /podaci/prodaja и setfacl -mg:prodaja:rx /podaci/račun.
  3. Izvršiti dobitifaclkako biste bili sigurni da su dopuštenja postavljena onako kako ste željeli.
  4. Izvršiti setfacl -md:g:account:rwx,g:sales:rx /data/salesza postavljanje zadanog ACL-a za prodajni imenik.
  5. Dodajte zadani ACL za direktorij /data/account pomoću setfacl -md:g:sales:rwx,g:account:rx /podaci/račun.
  6. Provjerite jesu li ACL postavke na snazi ​​dodavanjem nove datoteke u /data/sales. Kompletan dodirnite /data/sales/newfile i izvršiti getfacl /data/sales/newfile za provjeru trenutnih dopuštenja.

Postavljanje zadanih dopuštenja s umaskom

Gore ste naučili kako raditi sa zadanim ACL-ovima. Ako ne koristite ACL, postoji opcija ljuske koja određuje zadana dopuštenja koja ćete dobiti: umaska (obrnuta maska). U ovom odjeljku naučit ćete kako promijeniti zadane dozvole pomoću umaska.

Možda ste primijetili da se prilikom stvaranja nove datoteke postavljaju neka zadana dopuštenja. Ova su dopuštenja određena postavkom umaska. Ova postavka ljuske primjenjuje se na sve korisnike pri prijavi. U parametru umaska koristi se brojčana vrijednost koja se oduzima od maksimalnih dopuštenja koja se mogu automatski postaviti za datoteku; maksimalna postavka za datoteke je 666, a za direktorije 777.

Međutim, postoje neke iznimke od ovog pravila. Možete pronaći potpuni pregled postavki umaska u tablici ispod.

Od brojeva koji se koriste u umaska, kao u slučaju numeričkih argumenata za naredbu chmod, prva znamenka odnosi se na dopuštenja korisnika, druga znamenka se odnosi na dopuštenja grupe, a posljednja se odnosi na zadana dopuštenja postavljena za druge. Značenje umaska zadana vrijednost 022 daje 644 za sve nove datoteke i 755 za sve nove direktorije stvorene na vašem poslužitelju.

Kompletan pregled svih numeričkih vrijednosti umaska a njihove rezultate u tablici ispod.

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

Jednostavan način da vidite kako postavka umask radi je sljedeći: počnite sa zadanim dopuštenjima datoteke postavljenim na 666 i oduzmite umask da biste dobili efektivna dopuštenja. 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 uzme u obzir prilikom pokretanja datoteka okruženja ljuske, kao što je navedeno u /etc/profile. Ispravan pristup je stvoriti skriptu ljuske pod nazivom umask.sh u direktoriju /etc/profile.d i navesti umask koji želite koristiti u toj skripti ljuske. Ako se umask promijeni u ovoj datoteci, primjenjuje se na sve korisnike nakon prijave na poslužitelj.

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

Postavke primijenjene u ovoj datoteci odnose se samo na pojedinačnog korisnika; stoga je ovo dobra metoda ako trebate više detalja. Meni se osobno sviđa ova značajka za promjenu zadane umaske za root korisnika na 027 dok normalni korisnici rade sa zadanom umaskom od 022.

Rad s proširenim korisničkim atributima

Ovo je posljednji odjeljak o dozvolama za Linux.

Kada radite s dopuštenjima, uvijek postoji odnos između objekta korisnika ili grupe i dopuštenja koja objekti korisnika ili grupe imaju na datoteci ili direktoriju. Alternativna metoda za zaštitu datoteka na Linux poslužitelju je rad s atributima.
Atributi rade svoj posao bez obzira na to tko korisnik pristupa datoteci.

Kao i kod ACL-ova, atributi datoteke će možda trebati uključiti opciju montirati.

Ovo je opcija korisnik_xattr. Ako dobijete poruku "operacija nije podržana" kada radite s proširenim korisničkim atributima, svakako postavite parametar montirati u /etc/fstab.

Mnogi atributi su dokumentirani. Neki su atributi dostupni, ali još nisu implementirani. Nemojte ih koristiti; neće ti ništa donijeti.

Ispod su najkorisniji atributi koje možete primijeniti:

A Ovaj atribut osigurava da se vrijeme pristupa datoteci ne mijenja.
Tipično, svaki put kada se datoteka otvori, vrijeme pristupa datoteci mora biti zabilježeno u metapodacima datoteke. To negativno utječe na performanse; pa za datoteke kojima se redovito pristupa, atribut A može se koristiti za onemogućavanje ove značajke.

a Ovaj atribut omogućuje vam dodavanje, ali ne i uklanjanje datoteke.

c Ako koristite datotečni sustav koji podržava kompresiju na razini volumena, ovaj atribut datoteke osigurava da je datoteka komprimirana prvi put kada je mehanizam kompresije omogućen.

D Ovaj atribut osigurava da se promjene datoteka odmah zapisuju na disk umjesto da se prvo spremaju u predmemoriju. Ovo je koristan atribut na važnim datotekama baze podataka kako bi se osiguralo da se ne izgube između predmemorije datoteka i tvrdog diska.

d Ovaj atribut osigurava da datoteka neće biti spremljena u sigurnosnim kopijama gdje se koristi uslužni program za dump.

I Ovaj atribut omogućuje indeksiranje za direktorij u kojem je omogućen. To omogućuje brži pristup datoteci za primitivne datotečne sustave poput Ext3 koji ne koriste bazu podataka B-stabla za brzi pristup datoteci.

i Ovaj atribut čini datoteku nepromjenjivom. Stoga se ne mogu mijenjati datoteke, što je korisno za datoteke koje trebaju dodatnu zaštitu.

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

s Prebrišite blokove u kojima je datoteka spremljena u 0s nakon brisanja datoteke. To osigurava da se datoteka ne može vratiti nakon što je izbrisana.

u Ovaj atribut pohranjuje informacije o brisanju. To vam omogućuje da razvijete pomoćni program koji radi s ovim informacijama za spašavanje izbrisanih datoteka.

Ako želite primijeniti atribute, možete koristiti naredbu brbljanje. Na primjer, koristite chattr +s neka datotekaprimijeniti atribute na neku datoteku. Trebate ukloniti atribut? Zatim koristite chattr -s neke datotekei to će biti uklonjeno. Da biste dobili pregled svih atributa koji su trenutno primijenjeni, koristite naredbu lsattr.

Rezime

U ovom ste članku naučili kako raditi s dopuštenjima. Pročitali ste o tri osnovna dopuštenja, naprednim dopuštenjima i kako primijeniti ACL-ove na sustav datoteka. Također ste naučili kako koristiti opciju umask za primjenu zadanih dopuštenja. Na kraju ovog članka naučili ste kako koristiti proširene atribute korisnika za primjenu dodatnog sloja sigurnosti datotečnog sustava.

Ako vam se svidio ovaj prijevod, napišite o tome u komentarima. Bit će više motivacije za korisne prijevode.

Ispravljene su neke pravopisne i gramatičke pogreške u članku. Neki glomazni odlomci smanjeni su u manje radi bolje čitljivosti.

Umjesto "Samo netko s administratorskim pravima na imenik može primijeniti dopuštenje za izvršenje." popravljeno na "Samo netko s dopuštenjem za pisanje u direktoriju može primijeniti dopuštenje za izvršenje.", što bi bilo ispravnije.

Hvala na komentarima berez.

Zamijenjeno:
Ako niste vlasnik korisnika, ljuska će provjeriti jeste li član grupe, također poznate kao grupa datoteke.

na:
Ako niste vlasnik datoteke, ljuska će provjeriti jeste li član grupe koja ima dopuštenja za datoteku. Ako ste član ove grupe, pristupit ćete datoteci s dozvolama koje je grupa postavila, a ljuska će prestati provjeravati.

Hvala na komentaru KriptoPirat

Izvor: www.habr.com

Dodajte komentar