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

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

Guranje: Nadam se da će članak biti koristan ne samo za početnike, već će pomoći i iskusnijim administratorima da poboljšaju svoje znanje.

Pa idemo.

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

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

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

Upravljanje vlasništvom nad datotekama

Prije rasprave o dozvolama, trebali biste biti svjesni uloge vlasnika datoteke i direktorija. Vlasništvo nad datotekama i direktorijumima je od vitalnog značaja za rad s dozvolama. U ovom dijelu ćete prvo naučiti 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 se postavljaju kada se kreira datoteka ili direktorij. Korisnik koji kreira datoteku postaje vlasnik te datoteke, a primarna grupa kojoj pripada isti korisnik također postaje vlasnik te datoteke. Da utvrdi da li vi, kao korisnik, imate dozvolu za pristup datoteci ili direktoriju, ljuska provjerava vlasništvo.

To se dešava sljedećim redoslijedom:

  1. Shell provjerava da li ste vlasnik datoteke kojoj želite pristupiti. Ako ste vlasnik, dobijate dozvole i shell prestaje provjeravati.
  2. Ako niste vlasnik datoteke, ljuska će provjeriti jeste li član grupe koja ima dozvole za datoteku. Ako ste član ove grupe, pristupit ćete datoteci s dozvolama koje je grupa postavila, a ljuska će prestati provjeravati.
  3. Ako niste ni korisnik ni vlasnik grupe, daju vam se prava drugih korisnika (Ostalo).

Da biste vidjeli trenutne dodjele vlasnika, možete koristiti naredbu ls-l. Ova komanda 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

Pomoću naredbe ls možete prikazati vlasnika datoteka u datom direktoriju. Ponekad može biti korisno dobiti listu svih fajlova na sistemu koji imaju datog korisnika ili grupu kao vlasnika. Za ovo možete koristiti pronaći. Argument find-user može se koristiti u tu svrhu. Na primjer, sljedeća naredba navodi sve datoteke koje su u vlasništvu korisnika linda:

find / -user linda

Takođe možete koristiti pronaći za traženje datoteka koje imaju određenu grupu kao vlasnika.

Na primjer, sljedeća komanda traži sve datoteke koje pripadaju grupi korisnici:

find / -group users

Promena vlasništva

Da biste primijenili odgovarajuće dozvole, prva stvar koju treba uzeti u obzir je vlasništvo. Za ovo postoji komanda chown. Sintaksu ove naredbe je lako razumjeti:

chown кто что

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

chown linda /home/account

tim chown ima nekoliko opcija, od kojih je jedna posebno korisna: -R. Možete pogoditi šta radi jer je ova opcija dostupna i za mnoge druge komande. Ovo vam omogućava da rekurzivno postavite vlasnika, što vam omogućava da postavite vlasnika trenutnog direktorija i svega ispod. Sljedeća naredba mijenja vlasništvo nad /home direktorijumom i svime ispod njega linda korisniku:

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

hajde da uradimo:

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

Sada je korisnik lisa postao vlasnik direktorija 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

Promijenite vlasnika grupe

Postoje dva načina da promijenite vlasništvo nad grupom. To možete učiniti koristeći chown, ali postoji posebna komanda pod nazivom chgrpto radi posao. Ako želite da koristite naredbu chown, koristiti . ili : ispred naziva grupe.

Sljedeća naredba mijenja bilo kojeg vlasnika /home/account grupe 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 myfile1 postavlja korisnika lisa kao vlasnika myfile1.
  • chown lisa.sales myfile postavlja korisnika lisa kao vlasnika datoteke myfile, a također postavlja prodajnu grupu kao vlasnika iste datoteke.
  • chown lisa:sales myfile isto kao i prethodna komanda.
  • chown .sales myfile postavlja prodajnu grupu kao vlasnika myfile-a bez promjene vlasnika korisnika.
  • chown :sales myfile isto kao i prethodna komanda.

Možete koristiti naredbu chgrpda promijenite 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. Ovo 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, korisnik može promijeniti efektivnu primarnu grupu.

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

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

Ako trenutni korisnik linda želi promijeniti efektivnu primarnu grupu, on će koristiti naredbu newgrpnakon čega slijedi ime grupe koju želi postaviti kao novu efektivnu primarnu grupu. Nakon upotrebe naredbe newgrp primarna grupa će biti aktivna sve dok korisnik ne unese naredbu izlaz ili se ne odjaviti.

Sljedeće pokazuje kako korisnik linda koristi ovu naredbu, sa 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, svi novi fajlovi koje kreira korisnik imat će tu grupu kao vlasnika grupe. Da biste se vratili na izvornu postavku primarne grupe, koristite izlaz.

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

Upravljanje osnovnim pravima

Linux sistem dozvola izmišljen je 1970-ih. Pošto su računarske potrebe tih godina bile ograničene, osnovni sistem dozvola je bio prilično ograničen. Ovaj sistem dozvola koristi tri dozvole koje se mogu primijeniti na datoteke i direktorije. U ovom odjeljku ćete naučiti kako koristiti i mijenjati ove dozvole.

Razumijevanje dozvola za čitanje, pisanje i izvršavanje

Tri osnovne dozvole vam omogućavaju čitanje, pisanje i izvršavanje datoteka. Učinak ovih dozvola se razlikuje kada se primjenjuju na datoteke ili direktorije. Za datoteku, dozvola za čitanje daje vam pravo da otvorite datoteku za čitanje. Dakle, možete čitati njegov sadržaj, ali to znači da vaš računar može otvoriti datoteku da bi nešto uradio s njom.

Programska datoteka kojoj je potreban pristup biblioteci mora, na primjer, imati pristup za čitanje te biblioteke. Iz toga slijedi da je dozvola za čitanje najosnovnija dozvola koja vam je potrebna za rad s datotekama.

Kada se primeni na direktorijum, čitanje vam omogućava da prikažete sadržaj tog direktorijuma. Trebali biste biti svjesni da vam ova dozvola ne dozvoljava čitanje datoteka u direktoriju. Linux sistem dozvola ne poznaje nasljeđivanje, a jedini način za čitanje datoteke je korištenje dozvola za čitanje te datoteke.

Kao što verovatno možete pretpostaviti, dozvola za pisanje, ako se primeni na datoteku, dozvoljava pisanje u datoteku. Drugim riječima, omogućava vam promjenu sadržaja postojećih datoteka. Međutim, ne dozvoljava vam da kreirate ili izbrišete nove datoteke ili da promenite dozvole za fajlove. Da biste to učinili, morate dati dozvolu za pisanje u direktorij u kojem želite kreirati datoteku. U direktorijima, ova dozvola vam također omogućava da kreirate i brišete nove poddirektorije.

Dozvola za izvršavanje je ono što vam je potrebno za izvršavanje datoteke. Nikada se neće instalirati prema zadanim postavkama, što Linux čini gotovo potpuno imunim na viruse. Samo neko s dozvolama za pisanje u direktorij može primijeniti dozvolu za izvršavanje.

Sljedeće sumira korištenje osnovnih dozvola:

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

Koristeći chmod

Komanda se koristi za upravljanje dozvolama. chmod... Koristeći chmod možete postaviti dozvole za korisnika (korisnika), grupe (grupu) i druge (ostalo). Ovu naredbu možete koristiti u dva načina: relativnom i apsolutnom načinu. U apsolutnom načinu rada, tri cifre se koriste za postavljanje osnovnih dozvola.

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

Kada postavljate dozvole, izračunajte vrijednost koja vam je potrebna. Ako želite podesiti čitanje/pisanje/izvršavanje za korisnika, čitanje/izvršavanje za grupu i čitanje/izvršavanje za druge u /somefile onda koristite sljedeću naredbu chmod:

chmod 755 /somefile

Kada koristite chmod na ovaj način se sve trenutne dozvole zamjenjuju dozvolama koje ste postavili.

Ako želite promijeniti dozvole u odnosu na trenutne dozvole, možete koristiti chmod u relativnom režimu. Koristeći chmod u relativnom režimu radite sa tri indikatora da biste naznačili šta želite da uradite:

  1. Prvo odredite kome želite promijeniti dozvole. Da biste to učinili, možete birati između korisnika (u), grupa (g) i drugi (o).
  2. Zatim koristite naredbu da dodate ili uklonite dozvole iz trenutnog načina rada ili ih postavite apsolutno.
  3. Na kraju koristite r, w и xda odredite koje dozvole želite postaviti.

Kada mijenjate dozvole u relativnom načinu rada, možete preskočiti dio "do" da biste dodali ili uklonili dozvolu za sve objekte. Na primjer, ova naredba dodaje dozvolu izvršavanja za sve korisnike:

chmod +x somefile

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

chmod g+w,o-r somefile

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

Velika slova X osiguravaju da datoteke ne dobiju dozvolu za izvršavanje osim ako datoteka već nije postavila dozvolu za izvršavanje za neke objekte. Ovo čini X pametnijim načinom za rješavanje dozvola za izvršavanje; ovo će izbjeći postavljanje ove dozvole za datoteke gdje to nije potrebno.

Proširena prava

Osim osnovnih dozvola o kojima ste upravo pročitali, Linux također ima skup naprednih dozvola. Ovo nisu dozvole koje postavljate prema zadanim postavkama, ali ponekad pružaju koristan dodatak. U ovom odeljku ćete naučiti šta su i kako da ih podesite.

Razumijevanje proširenih dozvola SUID, GUID i Sticky Bit

Postoje tri napredne dozvole. Prva od njih je dozvola za postavljanje identifikatora korisnika (SUID). U nekim posebnim slučajevima, ovu dozvolu možete primijeniti na izvršne datoteke. Podrazumevano, 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.

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

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

SUID dozvola nudi rješenje za ovaj problem. /usr/bin/passwd uslužni program koristi ovu dozvolu prema zadanim postavkama. To znači da prilikom promjene lozinke korisnik privremeno postaje root, što mu omogućava da piše u /etc/shadow datoteku. Možete vidjeti SUID dozvolu sa ls-l kako s u poziciji na kojoj biste inače očekivali da vidite 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 dozvola može izgledati korisno (a u nekim slučajevima i jeste), ali je u isto vrijeme potencijalno opasna. Ako se ne primjenjuje ispravno, možete slučajno dati root dozvole. Stoga preporučujem da ga koristite samo s najvećom pažnjom.

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

Druga posebna dozvola je identifikator grupe (SGID). Ova dozvola ima dva efekta. Kada se primeni na izvršnu datoteku, daje korisniku koji izvršava datoteku dozvole vlasnika grupe datoteke. Dakle, SGID može učiniti manje-više istu stvar kao SUID. Međutim, SGID se praktički ne koristi u tu svrhu.

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

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

Ovo nije uvijek od velike koristi, 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. Prema tome, prema zadanim postavkama, fajlovi koje korisnik kreira bit će podijeljeni masovno.

Zamislite situaciju u kojoj korisnici linda i lori rade u računovodstvu i članovi su grupe račun. Ovi korisnici su po defaultu članovi privatne grupe čiji su jedini članovi. Međutim, oba korisnika su članovi grupe naloga, ali i kao sekundarni parametar grupe.

Zadana situacija je da kada bilo koji od ovih korisnika kreira datoteku, primarna grupa postaje vlasnik. Stoga, prema zadanim postavkama, linda ne može pristupiti datotekama koje je kreirao lori, i obrnuto. Međutim, ako kreirate dijeljeni grupni direktorij (recimo /groups/account) i osigurate da je SGID dozvola primijenjena na taj direktorij i da je račun grupe postavljen kao vlasnik grupe za taj direktorij, sve datoteke kreirane u tom direktoriju i sve njegovih poddirektorijuma, također dobiti grupni račun kao vlasnika grupe prema zadanim postavkama.

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

SGID dozvola prikazana u izlazu ls-l kako s na poziciji na kojoj biste inače dobili 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 posebnih dozvola je sticky bit. Ova dozvola je korisna za zaštitu datoteka od slučajnog brisanja u okruženju u kojem više korisnika ima pristup pisanju istom direktoriju. Ako se koristi ljepljivi bit, korisnik može izbrisati datoteku samo ako je vlasnik datoteke ili direktorija koji sadrži datoteku. Iz tog razloga se koristi kao zadana dozvola za /tmp direktorij i može biti korisna i za direktorije javnih grupa.

Bez ljepljivog bita, ako korisnik može kreirati datoteke u direktoriju, također može izbrisati datoteke iz tog direktorija. U okruženju javne grupe, ovo može biti neugodno. Zamislite korisnike linda i lori, koji oboje imaju dozvole za pisanje u /data/account direktorij i dobijaju te dozvole tako što su članovi grupe naloga. Stoga linda može izbrisati datoteke koje je kreirao lori i obrnuto.

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

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

Kada koristite ls-l, možete vidjeti ljepljivi dio kao t na poziciji na kojoj biste inače vidjeli dozvolu 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

Možete koristiti i SUID, SGID i sticky bit 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 četverocifreni argument chmod, čija prva cifra se odnosi na posebne dozvole. Sljedeći red će, na primjer, dodati SGID dozvolu u direktorij i postaviti rwx za korisnika i rx za grupu i druge:

chmod 2755 /somedir

Ovo je prilično nepraktično ako trebate vidjeti trenutne dozvole koje su postavljene prije rada s njima chmod u apsolutnom modu. (Izlazite u rizik da prepišete dozvole ako to ne učinite.) Stoga preporučujem pokretanje u relativnom načinu rada ako trebate primijeniti bilo koju od posebnih dozvola:

  1. Za SUID upotrebu chmod u+s.
  2. Za SGID upotrebu chmod g+s.
  3. Za upotrebu ljepljivih bitova chmod +t, nakon čega slijedi naziv datoteke ili direktorija za koji želite postaviti dozvole.

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

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

Primjer rada sa posebnim pravima

U ovom primjeru koristite posebne dozvole kako biste članovima grupe olakšali dijeljenje datoteka u dijeljenom grupnom direktoriju. Dodjeljujete ID bit postavljenom ID-u grupe, kao i sticky bit, i vidite da kada se postave, dodaju se funkcije koje članovima grupe olakšavaju zajednički rad.

  1. Otvorite terminal na kojem ste korisnik linda. Možete kreirati korisnika pomoću naredbe Linda, dodajte lozinku passwd Linda.
  2. Kreirajte /data direktorij u korijenskom i /data/sales poddirektorij pomoću naredbe mkdir -p /podaci/prodaja... Izvrši cd /data/salesda odete u prodajni imenik. Završeno touch linda1 и touch linda2da kreirate dva prazna fajla u vlasništvu linda.
  3. Izvršiti su-lisa da prebacite trenutnog korisnika na korisnika lisa, koji je također član prodajne grupe.
  4. Izvršiti cd /data/sales i iz tog direktorija izvršite ls-l. Vidjet ćete dvije datoteke koje je kreirao korisnik linda i pripadaju grupi linda. Završeno rm -f linda*. Ovo će ukloniti oba fajla.
  5. Izvršiti touch lisa1 и touch lisa2da kreirate 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 /data/salesda postavite bit identifikatora grupe (GUID) kao i ljepljivi bit u direktoriju dijeljene grupe.
  8. Izvršiti su-linda. Onda uradi touch linda3 и touch linda4. Sada biste trebali vidjeti da su dvije datoteke koje ste kreirali u vlasništvu prodajne grupe, koja je vlasnik grupe direktorija /data/sales.
  9. Izvršiti rm -rf lisa*. Sticky bit sprječava brisanje ovih datoteka u ime linda korisnika, jer vi niste vlasnik ovih datoteka. Imajte na umu da ako je korisnik linda vlasnik /data/sales direktorija, oni svejedno mogu izbrisati ove datoteke!

ACL upravljanje (setfacl, getfacl) u Linuxu

Iako proširene dozvole o kojima se govorilo dodaju korisnu funkcionalnost načinu na koji Linux rukuje dozvolama, ne dozvoljava vam da dodijelite dozvole više od jednog korisnika ili grupe u istoj datoteci.

Liste kontrole pristupa nude ovu funkciju. Osim toga, dozvoljavaju administratorima da postavljaju zadane dozvole na složen način, gdje se postavljene dozvole mogu razlikovati od direktorija do direktorija.

Razumijevanje ACL-ova

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

Uslužni program tar ne podržava ACL-ove. Da biste bili sigurni da se postavke ACL-a ne izgube kada kreirate rezervnu kopiju, koristite zvijezda umjesto katrana. zvijezda radi sa istim opcijama kao tar; samo dodaje podršku za ACL postavke.

Također možete napraviti sigurnosnu kopiju ACL-ova sa getfacl, koji se može vratiti pomoću naredbe setfacl. Za kreiranje sigurnosne kopije koristite getfacl -R /direktorij > datoteka.acls. Za vraćanje postavki iz datoteke 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 sistemu datoteka. Stoga je vraćanje originalnih ACL-ova s ​​kojima ste radili relativno lako, čak i ako ih vaš softver za sigurnosnu kopiju ne podržava.

Priprema sistema datoteka za ACL-ove

Pre nego što počnete da radite sa ACL-ovima, možda ćete morati da pripremite svoj sistem datoteka za podršku ACL-ovima. Budući da metapodaci sistema datoteka moraju biti prošireni, ne postoji uvijek zadana podrška za ACL-ove u sistemu datoteka. Ako dobijete poruku "operacija nije podržana" kada postavljate ACL-ove za sistem datoteka, vaš sistem datoteka možda ne podržava ACL-ove.

Da biste ovo popravili, morate dodati opciju acl mount u /etc/fstab tako da je sistem datoteka montiran sa ACL podrškom po defaultu.

Promjena i pregled ACL postavki sa setfacl i getfacl

Za postavljanje ACL potrebna vam je naredba setfacl. Da biste vidjeli trenutne postavke ACL-a, trebate getfacl. Tim ls-l ne prikazuje postojeće ACL-ove; samo pokazuje + nakon liste dozvola, što ukazuje da se ACL-ovi primjenjuju i na datoteku.

Prije postavljanja ACL-ova, uvijek je dobra ideja prikazati trenutne postavke ACL-a getfacl. U primjeru ispod, možete vidjeti trenutne dozvole, kao što je prikazano sa ls-l, kao i kao što je prikazano sa getfacl. Ako pogledate dovoljno pažljivo, 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 getfacl ispod možete vidjeti da su dozvole prikazane za tri različita objekta: korisnika, grupe i druge. Sada dodajmo ACL da damo dozvole za čitanje i izvršavanje prodajnoj grupi. komanda za ovo setfacl -mg:sales:rx /dir. U ovom timu -m označava da je potrebno promijeniti trenutne postavke ACL-a. Nakon toga g:sales:rx govori komandi da postavi čitanje-izvršavanje ACL (rx) za grupu (g) prodaja. U nastavku možete vidjeti kako komanda izgleda, kao i izlaz getfacl komande 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
# 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 /data daje dozvole korisniku linda u direktoriju /data bez da ga učini vlasnikom ili promijeni dodjela trenutnog vlasnika.

tim setfacl ima mnogo funkcija 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 gdje ste postavili ACL. Preporučuje 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 dozvole višestrukim korisnicima ili grupama u direktoriju. Još jedna prednost je da možete omogućiti nasljeđivanje radeći sa zadanim ACL-ovima.

Postavljanjem zadanog ACL-a, određujete dozvole koje će biti postavljene za sve nove stavke kreirane u direktoriju. Imajte na umu da zadani ACL ne mijenja dozvole za postojeće datoteke i poddirektorije. Da biste ih promijenili, morate dodati i normalan ACL!

Ovo je važno znati. Ako želite koristiti ACL za konfiguriranje više korisnika ili grupa za pristup istom direktoriju, morate postaviti ACL dvaput. Prva upotreba setfacl -R -mda promijenite ACL za trenutne datoteke. Zatim koristite setfacl-md:da vodi računa o svim novim elementima koji će takođe biti kreirani.

Da biste postavili zadani ACL, samo trebate dodati opciju d opcija nakon -m (red je bitan!). Zato koristite setfacl -md:g:sales:rx /dataako ž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. Ovo obično nema mnogo smisla jer možete promijeniti i dozvole koje drugi koriste chmod. Međutim, ono sa čime ne možete chmod, označava prava koja se moraju dodijeliti drugim korisnicima za svaki novi fajl koji je ikada kreiran. Ako želite spriječiti druge da dobiju bilo kakve dozvole za bilo šta kreirano u /data, na primjer, koristite setfacl -md:o::- /data.

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

Primjer upravljanja povišenim pravima korištenjem ACL-ova

U ovom primjeru, nastavit ćete s direktorijima /data/account i /data/sales koje ste kreirali ranije. U prethodnim primjerima osigurali ste da prodajna grupa ima dozvole za /data/sales, a grupa računa ima dozvole za /data/account.

Prvo, provjerite da li grupa računa dobije dozvole za čitanje u /data/sales direktoriju, a prodajna grupa dobije dozvole za čitanje u /data/account direktoriju.

Zatim postavljate zadane ACL-ove kako biste bili sigurni da sve nove datoteke imaju ispravne dozvole postavljene za sve nove stavke.

  1. Otvorite terminal.
  2. Izvršiti setfacl -mg:account:rx /data/sales и setfacl -mg:sales:rx /podaci/račun.
  3. Izvršiti getfaclkako biste bili sigurni da su dozvole postavljene onako kako želite.
  4. Izvršiti setfacl -md:g:account:rwx,g:sales:rx /data/salesda postavite zadani ACL za prodajni imenik.
  5. Dodajte zadani ACL za /data/account direktorij koristeći setfacl -md:g:sales:rwx,g:account:rx /data/account.
  6. Provjerite da li su ACL postavke na snazi ​​dodavanjem nove datoteke u /data/sales. Završeno dodirnite /data/sales/newfile i izvršiti getfacl /data/sales/newfile da provjerite trenutne dozvole.

Postavljanje zadanih dozvola sa umaskom

Iznad ste naučili kako raditi sa zadanim ACL-ovima. Ako ne koristite ACL, postoji opcija ljuske koja određuje zadane dozvole koje ćete dobiti: umask (obrnuta maska). U ovom odeljku ćete naučiti kako da promenite podrazumevane dozvole pomoću umask.

Možda ste primijetili da kada kreirate novu datoteku, postavljaju se neke zadane dozvole. Ove dozvole su određene postavkom umask. Ova postavka ljuske primjenjuje se na sve korisnike prilikom prijave. U parametru 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, neki izuzeci se odnose na ovo pravilo. Možete pronaći kompletan pregled postavki umask u tabeli ispod.

Od brojeva koji se koriste u umask, kao u slučaju numeričkih argumenata za naredbu chmod, prva cifra se odnosi na dozvole korisnika, druga cifra se odnosi na dozvole grupe, a posljednja se odnosi na zadane dozvole postavljene za druge. Značenje umask podrazumevano 022 daje 644 za sve nove fajlove i 755 za sve nove direktorijume kreirane na vašem serveru.

Potpuni pregled svih brojčanih vrijednosti umask i njihovi rezultati u tabeli ispod.

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

Jednostavan način da vidite kako postavka umask funkcionira je sljedeći: počnite sa zadanim dozvolama datoteke postavljenim na 666 i oduzmite umask da biste dobili efektivne dozvole. Uradite isto za direktorij i njegove zadane dozvole od 777.

Postoje dva načina za promjenu postavke umaska: za sve korisnike i za pojedinačne korisnike. Ako želite postaviti umask za sve korisnike, morate osigurati da se umask postavka uzme u obzir prilikom pokretanja datoteka okruženja ljuske, kao što je navedeno u /etc/profile. Ispravan pristup je kreiranje shell skripte koja se zove umask.sh u direktoriju /etc/profile.d i specificirati umask koji želite koristiti u toj shell skripti. Ako se umask promijeni u ovoj datoteci, primjenjuje se na sve korisnike nakon prijave na server.

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

Postavke primijenjene u ovoj datoteci primjenjuju se samo na pojedinačnog korisnika; stoga je ovo dobra metoda ako trebate više detalja. Lično mi se sviđa ova funkcija da promijenim zadanu umasku za root korisnika u 027 dok obični 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 dozvolama, uvijek postoji odnos između objekta korisnika ili grupe i dozvola koje objekti korisnika ili grupe imaju na datoteci ili direktoriju. Alternativni način zaštite datoteka na Linux serveru je rad s atributima.
Atributi rade svoj posao bez obzira na korisnika koji pristupa datoteci.

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

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

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

Ispod su najkorisniji atributi koje možete primijeniti:

A Ovaj atribut osigurava da se vrijeme pristupa fajlu ne mijenja.
Obično, svaki put kada se datoteka otvori, vrijeme pristupa datoteci mora biti zabilježeno u metapodacima datoteke. Ovo negativno utiče na performanse; pa za datoteke kojima se redovno pristupa, atribut A može se koristiti za onemogućavanje ove funkcije.

a Ovaj atribut vam omogućava da dodate, ali ne i uklonite datoteku.

c Ako koristite sistem datoteka 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 keširaju. Ovo je koristan atribut na važnim datotekama baze podataka kako biste bili sigurni da se ne izgube između keša datoteka i tvrdog diska.

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

I Ovaj atribut omogućava indeksiranje za direktorij u kojem je omogućen. Ovo omogućava brži pristup datotekama za primitivne sisteme datoteka kao što je Ext3 koji ne koriste bazu podataka B-stabla za brzi pristup datotekama.

i Ovaj atribut čini datoteku nepromjenjivom. Stoga se ne mogu napraviti nikakve promjene u datoteci, što je korisno za datoteke kojima je potrebna dodatna zaštita.

j Ovaj atribut osigurava da se na ext3 sistemu datoteka datoteka prvo upiše u dnevnik, a zatim u blokove podataka na tvrdom disku.

s Prebrišite blokove u kojima je datoteka sačuvana na 0s nakon brisanja datoteke. Ovo osigurava da se datoteka ne može vratiti nakon što je obrisana.

u Ovaj atribut pohranjuje informacije o brisanju. Ovo vam omogućava da razvijete usluž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 datotekaza primjenu atributa na neki fajl. Trebate ukloniti atribut? Zatim koristite chattr -s neka datotekai to će biti uklonjeno. Da biste dobili pregled svih atributa koji su trenutno primijenjeni, koristite naredbu lsattr.

Rezime

U ovom članku naučili ste kako raditi s dozvolama. Pročitali ste o tri osnovne dozvole, naprednim dozvolama i kako primijeniti ACL-ove na sistem datoteka. Također ste naučili kako koristiti opciju umask za primjenu zadanih dozvola. Na kraju ovog članka naučili ste kako koristiti proširene atribute korisnika za primjenu dodatnog sloja sigurnosti sistema datoteka.

Ako vam se svidio ovaj prijevod, napišite o njemu u komentarima. Biće više motivacije za korisne prevode.

Ispravljene neke greške u kucanju i gramatičke greške u članku. Neki glomazni paragrafi su smanjeni na manje radi bolje čitljivosti.

Umjesto "Samo neko s administrativnim pravima na direktorij može primijeniti dozvolu za izvršavanje." popravljeno na "Samo neko s dozvolom za pisanje u direktoriju može primijeniti dozvolu za izvršavanje.", š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 dozvole za datoteku. Ako ste član ove grupe, pristupit ćete datoteci s dozvolama koje je grupa postavila, a ljuska će prestati provjeravati.

Hvala vam na komentaru CryptoPirate

izvor: www.habr.com

Dodajte komentar