Toestemmings in Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Hi almal. Hierdie is 'n vertaling van 'n artikel uit die boek RedHat RHCSA RHCE 7 RedHat Enterprise Linux 7 EX200 en EX300.

Druk: Ek hoop dat die artikel nie net vir beginners nuttig sal wees nie, maar ook meer ervare administrateurs sal help om hul kennis te stroomlyn.

Dus, kom ons gaan.

Toestemmings in Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Om toegang tot lêers in Linux te verkry, word toestemmings gebruik. Hierdie toestemmings word aan drie voorwerpe toegeken: die lêereienaar, die groepeienaar en 'n ander voorwerp (dit wil sê almal anders). In hierdie artikel sal jy leer hoe om toestemmings toe te pas.

Hierdie artikel begin met 'n oorsig van die basiese konsepte, gevolg deur 'n bespreking van Spesiale toestemmings en Toegangsbeheerlyste (ACL's). Aan die einde van hierdie artikel dek ons ​​die instelling van verstektoestemmings via umask, sowel as die bestuur van uitgebreide gebruikerkenmerke.

Bestuur van lêereienaarskap

Voordat u toestemmings bespreek, moet u bewus wees van die rol van lêer- en gidseienaar. Eienaarskap van lêers en gidse is noodsaaklik vir die hantering van toestemmings. In hierdie afdeling sal jy eers leer hoe jy die eienaar kan sien. Jy sal dan leer hoe om die groepeienaar en gebruiker vir lêers en gidse te verander.

Vertoon die eienaar van 'n lêer of gids

In Linux het elke lêer en elke gids twee eienaars: 'n gebruiker en 'n groepeienaar.

Hierdie eienaars word gestel wanneer 'n lêer of gids geskep word. Die gebruiker wat die lêer skep, word die eienaar van daardie lêer, en die primêre groep waaraan dieselfde gebruiker behoort, word ook die eienaar van daardie lêer. Om te bepaal of jy as gebruiker toestemming het om toegang tot 'n lêer of gids te kry, kyk die dop vir eienaarskap.

Dit gebeur in die volgende volgorde:

  1. Die dop kyk of jy die eienaar is van die lêer waartoe jy toegang wil hê. As jy die eienaar is, kry jy toestemmings en die dop hou op om na te gaan.
  2. As jy nie die eienaar van die lêer is nie, sal die dop kyk om te sien of jy 'n lid is van 'n groep wat toestemmings op die lêer het. As jy 'n lid van hierdie groep is, sal jy toegang tot die lêer kry met die toestemmings wat die groep gestel het, en die dop sal ophou kontroleer.
  3. As jy nie 'n gebruiker of die eienaar van 'n groep is nie, kry jy die regte van ander gebruikers (Ander).

Om die huidige eienaaropdragte te sien, kan jy die opdrag gebruik ls-l. Hierdie opdrag wys die gebruiker en eienaar van die groep. Hieronder kan jy die eienaarinstellings vir gidse in die /home-gids sien.

[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

Gebruik die opdrag ls jy kan die eienaar van lêers in 'n gegewe gids vertoon. Soms kan dit nuttig wees om 'n lys te kry van alle lêers op die stelsel wat 'n gegewe gebruiker of groep as die eienaar het. Hiervoor kan jy gebruik vind. Argument vind-gebruiker kan vir hierdie doel gebruik word. Byvoorbeeld, die volgende opdrag lys alle lêers wat deur die gebruiker linda besit word:

find / -user linda

U kan ook gebruik vind om te soek vir lêers wat 'n sekere groep as hul eienaar het.

Byvoorbeeld, die volgende opdrag soek na alle lêers wat aan die groep behoort gebruikers:

find / -group users

Verandering van eienaarskap

Om die toepaslike toestemmings toe te pas, is die eerste ding om te oorweeg eienaarskap. Daar is 'n opdrag hiervoor chown. Die sintaksis van hierdie opdrag is maklik om te verstaan:

chown кто что

Byvoorbeeld, die volgende opdrag verander die eienaar van die /home/account-gids na die gebruiker linda:

chown linda /home/account

Span chown het verskeie opsies, waarvan een veral nuttig is: -R. Jy kan raai wat dit doen, want hierdie opsie is ook beskikbaar vir baie ander opdragte. Dit laat jou toe om die eienaar rekursief te stel, wat jou toelaat om die eienaar van die huidige gids en alles hieronder te stel. Die volgende opdrag verander eienaarskap van die /home-gids en alles daaronder na die linda-gebruiker:

Nou lyk die eienaars so:

[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

Kom ons doen:

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

Nou het die gebruiker lisa die eienaar van die rekeninggids geword:

[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

Verander die eienaar van 'n groep

Daar is twee maniere om die eienaarskap van 'n groep te verander. Jy kan dit doen deur chown, maar daar is 'n spesiale opdrag genaamd chgrpwat die werk doen. As jy die opdrag wil gebruik chown, gebruik . of : voor die groepnaam.

Die volgende opdrag verander enige eienaar van die /huis/rekeninggroep na die rekeninggroep:

chown .account /home/account

jy kan gebruik chown om die eienaar van 'n gebruiker en/of groep op verskeie maniere te verander. Hier is 'n paar voorbeelde:

  • chown lisa myfile1 stel die gebruiker lisa as die eienaar van myfile1.
  • chown lisa.sales myfile stel die gebruiker lisa as die eienaar van die myfile-lêer, en stel ook die verkoopsgroep as die eienaar van dieselfde lêer.
  • chown lisa:verkope myfile dieselfde as die vorige opdrag.
  • chown .sales myfile stel die verkoopsgroep as die eienaar van myfile sonder om die eienaar van die gebruiker te verander.
  • chown :verkope myfile dieselfde as die vorige opdrag.

Jy kan die opdrag gebruik chgrpom die eienaar van die groep te verander. Oorweeg die volgende voorbeeld, waar jy kan gebruik chgrp stel die eienaar van die rekeninggids na die verkoopsgroep:

chgrp .sales /home/account

Soos met chown, kan jy die opsie gebruik -R с chgrp, asook die eienaar van die groep rekursief te verander.

Verstaan ​​​​die verstek eienaar

Jy het dalk opgemerk dat wanneer 'n gebruiker 'n lêer skep, die verstek eienaarskap toegepas word.
Die gebruiker wat die lêer skep, word outomaties die eienaar van daardie lêer, en daardie gebruiker se primêre groep word outomaties die eienaar van daardie lêer. Dit is gewoonlik die groep wat in die /etc/passwd-lêer gelys word as die gebruiker se primêre groep. As die gebruiker egter 'n lid van meer as een groep is, kan die gebruiker die effektiewe primêre groep verander.

Om die huidige effektiewe primêre groep te wys, kan die gebruiker die opdrag gebruik groepe:

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

As die huidige linda-gebruiker die effektiewe primêre groep wil verander, sal hy die opdrag gebruik nuwe grpgevolg deur die naam van die groep wat hy as die nuwe effektiewe primêre groep wil stel. Nadat u die opdrag gebruik het nuwe grp die primêre groep sal aktief wees totdat die gebruiker 'n opdrag invoer verlaat of nie afmeld nie.

Die volgende wys hoe die gebruiker linda hierdie opdrag gebruik, met verkope as die primêre groep:

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

Nadat die effektiewe primêre groep verander is, sal alle nuwe lêers wat deur die gebruiker geskep is daardie groep as die groepeienaar hê. Om terug te keer na die oorspronklike primêre groepinstelling, gebruik verlaat.

Om die opdrag te kan gebruik nuwe grp, moet die gebruiker 'n lid wees van die groep wat hulle as die primêre groep wil gebruik. Daarbenewens kan 'n groepwagwoord gebruik word vir 'n groep wat die opdrag gebruik gpasswd. As die gebruiker die opdrag gebruik nuwe grpmaar nie 'n lid van die teikengroep is nie, vra die dop vir die groep se wagwoord. Nadat jy die korrekte groepwagwoord ingevoer het, sal 'n nuwe effektiewe primêre groep gestig word.

Fundamentele regtebestuur

Die Linux-toestemmingstelsel is in die 1970's uitgevind. Aangesien die rekenaarbehoeftes in daardie jare beperk was, was die basiese toestemmingstelsel redelik beperk. Hierdie toestemmingstelsel gebruik drie toestemmings wat op lêers en gidse toegepas kan word. In hierdie afdeling sal jy leer hoe om hierdie toestemmings te gebruik en te verander.

Verstaan ​​lees-, skryf- en uitvoertoestemmings

Drie basiese toestemmings laat jou toe om lêers te lees, skryf en uit te voer. Die effek van hierdie toestemmings verskil wanneer dit op lêers of gidse toegepas word. Vir 'n lêer gee die leestoestemming jou die reg om die lêer oop te maak vir lees. Daarom kan jy die inhoud daarvan lees, maar dit beteken dat jou rekenaar die lêer kan oopmaak om iets daarmee te doen.

'n Programlêer wat toegang tot 'n biblioteek benodig, moet byvoorbeeld leestoegang tot daardie biblioteek hê. Dit volg dat die leestoestemming die mees basiese toestemming is wat jy nodig het om met lêers te werk.

Wanneer dit op 'n gids toegepas word, laat lees jou die inhoud van daardie gids vertoon. Jy moet bewus wees dat hierdie toestemming jou nie toelaat om die lêers in die gids te lees nie. Die Linux-toestemmingstelsel ken nie oorerwing nie, en die enigste manier om 'n lêer te lees is om leestoestemmings op daardie lêer te gebruik.

Soos u waarskynlik kan raai, kan skryftoestemming, indien dit op 'n lêer toegepas word, dit moontlik maak om na die lêer te skryf. Met ander woorde, dit laat jou toe om die inhoud van bestaande lêers te verander. Dit laat jou egter nie toe om nuwe lêers te skep of uit te vee of lêertoestemmings te verander nie. Om dit te doen, moet jy skryftoestemming gee aan die gids waar jy die lêer wil skep. In dopgehou laat hierdie toestemming jou ook toe om nuwe subgidse te skep en uit te vee.

Voer toestemming is wat jy nodig het om die lêer uit te voer. Dit sal nooit by verstek geïnstalleer word nie, wat Linux amper heeltemal immuun maak teen virusse. Slegs iemand met skryftoestemmings op die gids kan uitvoertoestemming toepas.

Die volgende som die gebruik van basiese toestemmings op:

Toestemmings in Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Met behulp van chmod

Die opdrag word gebruik om toestemmings te bestuur. chmod. Met behulp van chmod jy kan toestemmings vir die gebruiker (gebruiker), groepe (groep) en ander (ander) stel. Jy kan hierdie opdrag in twee modusse gebruik: relatiewe modus en absolute modus. In absolute modus word drie syfers gebruik om basiese toestemmings in te stel.

Toestemmings in Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Wanneer u toestemmings instel, bereken die waarde wat u benodig. As jy lees/skryf/uitvoer vir gebruiker, lees/uitvoer vir groep en lees/uitvoer vir ander in /somefile wil stel, gebruik jy die volgende opdrag chmod:

chmod 755 /somefile

Wanneer jy gebruik chmod op hierdie manier word alle huidige toestemmings vervang deur die toestemmings wat jy stel.

As jy die toestemmings relatief tot die huidige toestemmings wil verander, kan jy gebruik chmod in relatiewe modus. Met behulp van chmod in relatiewe modus werk jy met drie aanwysers om aan te dui wat jy wil doen:

  1. Eerstens spesifiseer jy vir wie jy toestemmings wil verander. Om dit te doen, kan jy kies tussen gebruiker (u), groep (g) en ander (o).
  2. Jy gebruik dan 'n stelling om toestemmings van die huidige modus by te voeg of te verwyder, of stel dit absoluut.
  3. Aan die einde gebruik jy r, w и xom te spesifiseer watter toestemmings jy wil stel.

Wanneer u toestemmings in relatiewe modus verander, kan u die "na"-deel oorslaan om toestemming vir alle voorwerpe by te voeg of te verwyder. Byvoorbeeld, hierdie opdrag voeg uitvoertoestemming vir alle gebruikers by:

chmod +x somefile

Wanneer jy in relatiewe modus werk, kan jy ook meer komplekse opdragte gebruik. Byvoorbeeld, hierdie opdrag voeg skryftoestemming by 'n groep en verwyder leestoestemming vir ander:

chmod g+w,o-r somefile

As u gebruik chmod -R o+rx /data jy stel uitvoertoestemming vir alle gidse sowel as lêers in die /data-gids. Om uitvoeringstoestemming slegs vir gidse te stel en nie vir lêers nie, gebruik chmod -R o+ rX /data.

Die hoofletter X verseker dat lêers nie uitvoertoestemming kry nie, tensy die lêer reeds uitvoeringstoestemming vir sommige voorwerpe gestel het. Dit maak X 'n slimmer manier om uitvoeringstoestemmings te hanteer; dit sal vermy om hierdie toestemming op lêers te stel waar dit nie vereis word nie.

Uitgebreide regte

Benewens die basiese toestemmings waaroor u sopas gelees het, het Linux ook 'n stel gevorderde toestemmings. Dit is nie die toestemmings wat u by verstek stel nie, maar soms bied dit 'n nuttige toevoeging. In hierdie afdeling sal jy leer wat dit is en hoe om dit op te stel.

Verstaan ​​SUID, GUID en Sticky Bit Extended Permissions

Daar is drie gevorderde toestemmings. Die eerste hiervan is die toestemming om 'n gebruikersidentifiseerder (SUID) te stel. In sommige spesiale gevalle kan u hierdie toestemming op uitvoerbare lêers toepas. By verstek loop 'n gebruiker wat 'n uitvoerbare lêer bestuur daardie lêer met hul eie toestemmings.

Vir gewone gebruikers beteken dit gewoonlik dat die gebruik van die program beperk is. In sommige gevalle het die gebruiker egter spesiale toestemmings nodig, net om 'n spesifieke taak uit te voer.

Oorweeg byvoorbeeld 'n situasie waar 'n gebruiker hul wagwoord moet verander. Om dit te doen, moet die gebruiker hul nuwe wagwoord in die /etc/shadow-lêer skryf. Hierdie lêer is egter nie skryfbaar deur nie-wortelgebruikers nie:

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

Die SUID-toestemming bied 'n oplossing vir hierdie probleem. Die /usr/bin/passwd-nutsding gebruik hierdie toestemming by verstek. Dit beteken dat wanneer die wagwoord verander word, die gebruiker tydelik root word, wat hom toelaat om na die /etc/shadow-lêer te skryf. Jy kan die SUID-toestemming sien met ls-l hoe s in 'n posisie waar jy normaalweg sou verwag om te sien x vir persoonlike toestemmings:

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

Die SUID-toestemming kan nuttig lyk (en in sommige gevalle is dit), maar dit is terselfdertyd potensieel gevaarlik. As dit nie korrek toegepas word nie, kan jy per ongeluk worteltoestemmings weggee. Daarom beveel ek aan om dit slegs met die grootste sorg te gebruik.

Die meeste administrateurs sal dit nooit hoef te gebruik nie; jy sal dit net in sommige lêers sien waar die bedryfstelsel dit by verstek moet stel.

Die tweede spesiale toestemming is die groepidentifiseerder (SGID). Hierdie toestemming het twee effekte. Wanneer dit op 'n uitvoerbare lêer toegepas word, gee dit die gebruiker wat die lêer uitvoer die toestemmings van die lêer se groepeienaar. SGID kan dus min of meer dieselfde ding as SUID doen. SGID word egter feitlik nie vir hierdie doel gebruik nie.

Soos met SUID-toestemming, word SGID as 'n verstekinstelling op sommige stelsellêers toegepas.

Wanneer dit op 'n gids toegepas word, kan die SGID nuttig wees omdat jy dit kan gebruik om die verstekgroepeienaar te stel vir lêers en subgidse wat in daardie gids geskep is. By verstek, wanneer 'n gebruiker 'n lêer skep, word hul effektiewe primêre groep gestel as die groepeienaar vir daardie lêer.

Dit is nie altyd baie nuttig nie, veral aangesien Red Hat/CentOS-gebruikers hul primêre groep ingestel het op 'n groep met dieselfde naam as die gebruiker, en waarvan die gebruiker die enigste lid is. Dus, by verstek, sal die lêers wat die gebruiker skep in grootmaat gedeel word.

Stel jou 'n situasie voor waar gebruikers Linda en Lori in rekeningkunde werk en lede van 'n groep is rekening. By verstek is hierdie gebruikers lede van 'n private groep waarvan hulle die enigste lid is. Beide gebruikers is egter lede van die rekeninggroep, maar ook as 'n sekondêre groepparameter.

Die verstek situasie is dat wanneer enige van hierdie gebruikers 'n lêer skep, die primêre groep die eienaar word. Daarom, by verstek, kan linda nie toegang verkry tot lêers wat deur lori geskep is nie, en omgekeerd. As jy egter 'n gedeelde groepgids skep (sê /groups/account) en verseker dat die SGID-toestemming op daardie gids toegepas word en dat die groeprekening as die groepeienaar vir daardie gids gestel is, sal alle lêers wat in daardie gids geskep is en al van sy subgidse, kry ook die groeprekening as die groepeienaar by verstek.

Om hierdie rede is die SGID-toestemming 'n baie nuttige toestemming om op openbare groepgidse in te stel.

SGID-toestemming gewys in afvoer ls-l hoe s op die posisie waar jy normaalweg toestemming sou kry om 'n groep te voer:

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

Die derde van die spesiale toestemmings is die taai bietjie. Hierdie toestemming is nuttig om lêers te beskerm teen toevallige uitvee in 'n omgewing waar verskeie gebruikers skryftoegang tot dieselfde gids het. As 'n taai bietjie gebruik word, kan 'n gebruiker slegs 'n lêer uitvee as hulle die gebruikereienaar is van die lêer of gids wat die lêer bevat. Om hierdie rede word dit gebruik as die verstektoestemming vir die /tmp-gids en kan dit ook nuttig wees vir publieke groepgidse.

Sonder die taai bietjie, as die gebruiker lêers in 'n gids kan skep, kan hulle ook lêers uit daardie gids verwyder. In 'n openbare groepomgewing kan dit irriterend wees. Stel jou voor die gebruikers linda en lori, wat albei skryftoestemmings het na die /data/rekeninggids en kry daardie toestemmings deur lede van die rekeninggroep te wees. Daarom kan linda lêers wat deur lori geskep is, uitvee en omgekeerd.

Wanneer jy die taai bietjie toepas, kan die gebruiker slegs lêers uitvee as een van die volgende voorwaardes waar is:

  • Die gebruiker is die eienaar van die lêer;
  • Die gebruiker is die eienaar van die gids waar die lêer geleë is.

As u gebruik ls-l, jy kan die taai bietjie sien as t in die posisie waar jy normaalweg uitvoeringstoestemming vir ander sou sien:

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

Toepassing van uitgebreide regte

Om SUID, SGID en sticky bit toe te pas kan jy ook gebruik chmod. SUID het 'n numeriese waarde van 4, SGID het 'n numeriese waarde van 2, en taai bis het 'n numeriese waarde van 1.

As jy hierdie toestemmings wil toepas, moet jy 'n viersyfer-argument byvoeg chmod, waarvan die eerste syfer na spesiale toestemmings verwys. Die volgende reël sal byvoorbeeld SGID-toestemming by die gids voeg en rwx vir gebruiker en rx vir groep en ander stel:

chmod 2755 /somedir

Dit is nogal onprakties as u die huidige toestemmings moet sien wat gestel is voordat u daarmee werk chmod in absolute modus. (Jy loop die risiko om toestemmings te oorskryf as jy dit nie doen nie.) Ek beveel dus aan om in relatiewe modus te hardloop as jy enige van die spesiale toestemmings moet toepas:

  1. Vir SUID gebruik chmod u+s.
  2. Vir SGID gebruik chmod g+s.
  3. Vir taai bietjie gebruik chmod +t, gevolg deur die naam van die lêer of gids waarvoor jy toestemmings wil stel.

Die tabel som alles op wat jy moet weet oor die bestuur van spesiale toestemmings.

Toestemmings in Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Voorbeeld van werk met spesiale regte

In hierdie voorbeeld gebruik jy spesiale toestemmings om dit vir groeplede makliker te maak om lêers in die gedeelde groepgids te deel. Jy ken die ID-bietjie toe aan die stel groep-ID sowel as die taai bietjie, en jy sien dat sodra hulle gestel is, kenmerke bygevoeg word om dit makliker te maak vir groeplede om saam te werk.

  1. Maak 'n terminaal oop waar jy die linda-gebruiker is. Jy kan 'n gebruiker skep met die opdrag gebruikerbyvoeg linda, voeg wagwoord by paswd linda.
  2. Skep die /data-gids in die wortel en die /data/sales-subgids met die opdrag mkdir -p /data/verkope. Voltooi cd /data/verkopeom na die verkoopsgids te gaan. Voltooi raak linda1 и raak linda2om twee leë lêers te skep wat deur linda besit word.
  3. volg su-lisa om die huidige gebruiker oor te skakel na die gebruiker lisa, wat ook 'n lid van die verkoopsgroep is.
  4. volg cd /data/verkope en voer uit daardie gids uit ls-l. Jy sal twee lêers sien wat deur die linda-gebruiker geskep is en aan die linda-groep behoort. Voltooi rm -f linda*. Dit sal beide lêers verwyder.
  5. volg raak lisa1 и raak lisa2om twee lêers te skep wat deur die gebruiker lisa besit word.
  6. volg su- om jou voorregte tot wortel te verhef.
  7. volg chmod g+s,o+t /data/verkopeom die groep identifiseerder (GUID) bietjie sowel as die taai bietjie in die gedeelde groep gids te stel.
  8. volg su-linda. Doen dan raak linda3 и raak linda4. Jy behoort nou te sien dat die twee lêers wat jy geskep het, besit word deur die verkoopsgroep, wat die groepeienaar van die /data/sales-gids is.
  9. volg rm -rf lisa*. Die taai bietjie verhoed dat hierdie lêers namens die linda-gebruiker uitgevee word, aangesien jy nie die eienaar van hierdie lêers is nie. Let daarop dat as die linda-gebruiker die eienaar van die /data/sales-gids is, hulle hierdie lêers in elk geval kan uitvee!

ACL-bestuur (setfacl, getfacl) in Linux

Alhoewel die uitgebreide toestemmings wat hierbo bespreek is, nuttige funksionaliteit byvoeg tot die manier waarop Linux toestemmings hanteer, laat dit jou nie toe om toestemmings aan meer as een gebruiker of groep in 'n enkele lêer te gee nie.

Toegangsbeheerlyste bied hierdie kenmerk. Boonop laat hulle administrateurs toe om verstektoestemmings op 'n komplekse manier in te stel, waar die vasgestelde toestemmings van gids tot gids kan verskil.

Verstaan ​​ACL's

Alhoewel die ACL-substelsel groot funksionaliteit by jou bediener voeg, het dit een nadeel: nie alle nutsprogramme ondersteun dit nie. Daarom kan jy jou ACL-instellings verloor wanneer jy lêers kopieer of skuif, en jou rugsteunsagteware kan dalk nie jou ACL-instellings rugsteun nie.

Die teer-hulpprogram ondersteun nie ACL's nie. Om seker te maak dat ACL-instellings nie verlore gaan wanneer jy 'n rugsteun skep nie, gebruik ster in plaas van teer. ster werk met dieselfde opsies as teer; dit voeg net ondersteuning vir ACL-instellings by.

U kan ook ACL's rugsteun met getfacl, wat met die setfacl-opdrag herstel kan word. Om 'n rugsteun te skep, gebruik getfacl -R /gids > file.acls. Om instellings vanaf 'n rugsteunlêer terug te stel, gebruik setfacl --restore=lêer.acl.

Gebrek aan ondersteuning deur sommige gereedskap behoort nie 'n probleem te wees nie. ACL's word dikwels op gidse toegepas as 'n strukturele maatreël eerder as op individuele lêers.
Daarom sal daar nie baie van hulle nie, maar slegs 'n paar, op slim plekke in die lêerstelsel toegepas word. Daarom is die herstel van die oorspronklike ACL's waarmee u gewerk het relatief maklik, selfs al ondersteun u rugsteunsagteware dit nie.

Berei die lêerstelsel voor vir ACL's

Voordat jy met ACL'e begin werk, moet jy dalk jou lêerstelsel voorberei om ACL's te ondersteun. Omdat lêerstelsel-metadata uitgebrei moet word, is daar nie altyd verstekondersteuning vir ACL's in die lêerstelsel nie. As jy 'n "bewerking nie ondersteun nie"-boodskap kry wanneer jy ACL's vir 'n lêerstelsel opstel, sal jou lêerstelsel dalk nie ACL's ondersteun nie.

Om dit reg te stel, moet jy die opsie byvoeg acl berg in /etc/fstab sodat die lêerstelsel by verstek met ACL-ondersteuning gemonteer is.

Verander en bekyk ACL-instellings met setfacl en getfacl

Om 'n ACL te stel, benodig jy die opdrag setfacl. Om die huidige ACL-instellings te sien, benodig jy getfacl. Span ls-l toon geen bestaande ACL's nie; dit wys net 'n + na die toestemmingslys, wat aandui dat die ACL's ook op die lêer van toepassing is.

Voordat u ACL's opstel, is dit altyd 'n goeie idee om die huidige ACL-instellings mee te wys getfacl. In die voorbeeld hieronder, kan jy die huidige toestemmings sien, soos getoon met ls-l, en ook soos getoon met getfacl. As jy mooi genoeg kyk, sal jy sien dat die inligting wat gewys word presies dieselfde is.

[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

As gevolg van die uitvoering van die opdrag getfacl hieronder kan jy sien dat die toestemmings vir drie verskillende voorwerpe gewys word: gebruiker, groep en ander. Kom ons voeg nou 'n ACL by om lees- en uitvoertoestemmings ook aan die verkoopsgroep te gee. opdrag hiervoor setfacl -mg:verkope:rx /dir. In hierdie span -m dui aan dat die huidige ACL-instellings verander moet word. Na dit g:verkope:rx vertel die opdrag om die lees-uitvoer ACL (rx) vir die groep (g) verkope. Hieronder kan u sien hoe die opdrag lyk, sowel as die uitvoer van die getfacl-opdrag nadat u die huidige ACL-instellings verander het.

[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

Noudat jy verstaan ​​hoe om 'n groep ACL op te stel, is dit maklik om ACL's vir gebruikers en ander gebruikers te verstaan. Byvoorbeeld, die opdrag setfacl -mu:linda:rwx /data gee toestemmings aan die gebruiker linda in die /data-gids sonder om hom die eienaar te maak of die opdrag van die huidige eienaar te verander.

Span setfacl het baie funksies en opsies. Een opsie is veral belangrik, die parameter -R. As dit gebruik word, maak die opsie die ACL ingestel vir alle lêers en subgidse wat tans bestaan ​​in die gids waar jy die ACL stel. Dit word aanbeveel dat u altyd hierdie opsie gebruik wanneer u ACL's vir bestaande gidse verander.

Werk met verstek ACL's

Een van die voordele van die gebruik van ACL's is dat jy toestemmings aan verskeie gebruikers of groepe in 'n gids kan gee. Nog 'n voordeel is dat jy oorerwing kan aktiveer deur met die verstek ACL'e te werk.

Deur die verstek ACL te stel, bepaal jy die toestemmings wat gestel sal word vir alle nuwe items wat in die gids geskep word. Wees bewus daarvan dat die verstek ACL nie toestemmings op bestaande lêers en subgidse verander nie. Om dit te verander, moet jy ook 'n normale ACL byvoeg!

Dit is belangrik om te weet. As jy 'n ACL wil gebruik om verskeie gebruikers of groepe te konfigureer om toegang tot dieselfde gids te verkry, moet jy die ACL twee keer stel. Eerste gebruik setfacl -R -mom ACL's vir huidige lêers te verander. Gebruik dan setfacl-md:om te sorg vir alle nuwe elemente wat ook geskep sal word.

Om die verstek ACL te stel, hoef jy net die opsie by te voeg d na opsie -m (Bestelling maak saak!). Gebruik dus setfacl -md:g:verkope:rx /dataas jy wil hê dat groepverkope alles wat ooit in die /data-gids geskep is, moet lees en uitvoer.

Wanneer verstek ACL'e gebruik word, kan dit ook nuttig wees om ACL's vir ander te stel. Dit maak gewoonlik nie veel sin nie, want jy kan ook die toestemmings verander vir ander wat dit gebruik chmod. Waarmee jy egter nie kan doen nie chmod, is om die regte te spesifiseer wat aan ander gebruikers toegestaan ​​moet word vir elke nuwe lêer wat ooit geskep word. As jy wil verhoed dat ander enige toestemmings kry op enigiets wat in /data geskep is, gebruik byvoorbeeld setfacl -md:o::- /data.

ACL's en normale toestemmings is nie altyd goed geïntegreer nie. Probleme kan ontstaan ​​as jy 'n verstek ACL op 'n gids toepas, dan word items by daardie gids gevoeg, en dan probeer om die normale toestemmings te verander. Veranderinge wat op gereelde toestemmings van toepassing is, sal nie goed in die ACL-oorsig weerspieël word nie. Om probleme te vermy, stel eers normale toestemmings in, stel dan die verstek ACL's in (en probeer om dit daarna nie weer te verander nie).

Voorbeeld van verhoogde regtebestuur deur gebruik te maak van ACL's

In hierdie voorbeeld sal jy voortgaan met die /data/account en /data/sales-gidse wat jy vroeër geskep het. In die vorige voorbeelde het jy verseker dat die verkoopsgroep toestemmings het op /data/verkope en die rekeninggroep het toestemmings op /data/rekening.

Maak eers seker dat die rekeninggroep leestoestemmings op die /data/verkope-gids kry en die verkoopsgroep kry leestoestemmings op die /data/rekeninggids.

Jy stel dan verstek ACL's om seker te maak dat alle nuwe lêers die korrekte toestemmings het vir alle nuwe items.

  1. Maak 'n terminaal oop.
  2. volg setfacl -mg:rekening:rx /data/verkope и setfacl -mg:verkope:rx /data/rekening.
  3. volg getfaclom seker te maak dat die toestemmings gestel is soos jy wou.
  4. volg setfacl -md:g:rekening:rwx,g:verkope:rx /data/verkopeom die verstek ACL vir die verkoopsgids te stel.
  5. Voeg 'n verstek ACL by vir die /data/account-gids deur gebruik te maak van setfacl -md:g:verkope:rwx,g:rekening:rx /data/rekening.
  6. Verifieer dat die ACL-instellings in werking is deur 'n nuwe lêer by /data/sales by te voeg. Voltooi raak /data/verkope/nuwe lêer aan en uitvoer getfacl /data/verkope/newfile om huidige toestemmings na te gaan.

Stel verstektoestemmings met umask

Hierbo het jy geleer hoe om met verstek ACL's te werk. As jy nie 'n ACL gebruik nie, is daar 'n dopopsie wat die verstektoestemmings bepaal wat jy sal kry: umask (omgekeerde masker). In hierdie afdeling sal jy leer hoe om die verstektoestemmings te verander met umask.

Jy het dalk opgemerk dat wanneer jy 'n nuwe lêer skep, sommige verstektoestemmings gestel word. Hierdie toestemmings word deur die instelling bepaal umask. Hierdie dopinstelling is van toepassing op alle gebruikers by aanmelding. In parameter umask 'n numeriese waarde word gebruik, wat afgetrek word van die maksimum toestemmings wat outomaties vir die lêer gestel kan word; die maksimum instelling vir lêers is 666 en vir gidse is 777.

Sommige uitsonderings geld egter op hierdie reël. Jy kan 'n volledige oorsig van instellings vind umask in die tabel hieronder.

Van die getalle wat gebruik word in umask, soos in die geval van numeriese argumente vir die opdrag chmod, die eerste syfer verwys na die gebruiker se toestemmings, die tweede syfer verwys na die groep se toestemmings, en die laaste verwys na die verstektoestemmings wat vir ander gestel is. Betekenis umask die verstek 022 gee 644 vir alle nuwe lêers en 755 vir alle nuwe gidse wat op jou bediener geskep is.

Volledige oorsig van alle numeriese waardes umask en hul resultate in die tabel hieronder.

Toestemmings in Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

'n Maklike manier om te sien hoe die umask-instelling werk, is soos volg: begin met die lêer se verstektoestemmings wat op 666 gestel is en trek die umask af om die effektiewe toestemmings te kry. Doen dieselfde vir die gids en sy verstektoestemmings van 777.

Daar is twee maniere om die umask-instelling te verander: vir alle gebruikers en vir individuele gebruikers. As jy die umask vir alle gebruikers wil stel, moet jy verseker dat die umask-instelling in ag geneem word wanneer dopomgewinglêers begin word, soos gespesifiseer in /etc/profile. Die korrekte benadering is om 'n dop script genaamd umask.sh te skep in die /etc/profile.d gids en spesifiseer die umask wat jy in daardie dop script wil gebruik. As die umask in hierdie lêer verander word, word dit op alle gebruikers toegepas nadat hulle by die bediener aangemeld het.

'n Alternatief vir die opstel van die umask via /etc/profile en verwante lêers, waar dit van toepassing is op alle gebruikers wat aanmeld, is om die umask-instellings te verander in 'n lêer genaamd .profile wat in elke gebruiker se tuisgids geskep word.

Die instellings wat in hierdie lêer toegepas word, is slegs van toepassing op die individuele gebruiker; daarom is dit 'n goeie metode as jy meer besonderhede benodig. Ek hou persoonlik van hierdie kenmerk om die verstek umask vir die wortelgebruiker na 027 te verander terwyl normale gebruikers met die verstek umask van 022 loop.

Werk met uitgebreide gebruikerskenmerke

Dit is die laaste afdeling oor Linux-toestemmings.

Wanneer daar met toestemmings gewerk word, is daar altyd 'n verwantskap tussen 'n gebruiker- of groepobjek en die toestemmings wat gebruiker- of groepvoorwerpe op 'n lêer of gids het. 'n Alternatiewe metode om lêers op 'n Linux-bediener te beskerm, is om met eienskappe te werk.
Eienskappe doen hul werk ongeag die gebruiker wat toegang tot die lêer het.

Soos met ACL's, moet lêerkenmerke dalk die opsie insluit berg.

Dit is 'n opsie gebruiker_xattr. As jy 'n "bewerking nie ondersteun nie"-boodskap kry wanneer jy met uitgebreide gebruikerskenmerke werk, maak seker dat jy die parameter stel berg in /etc/fstab.

Baie eienskappe is gedokumenteer. Sommige kenmerke is beskikbaar, maar nog nie geïmplementeer nie. Moenie hulle gebruik nie; hulle sal vir jou niks bring nie.

Hieronder is die nuttigste eienskappe wat jy kan toepas:

A Hierdie kenmerk verseker dat die lêer se lêertoegangstyd nie verander nie.
Tipies, elke keer as 'n lêer oopgemaak word, moet die lêer se toegangstyd in die lêer se metadata aangeteken word. Dit beïnvloed prestasie negatief; dus vir lêers wat gereeld toegang verkry word, die kenmerk A kan gebruik word om hierdie kenmerk te deaktiveer.

a Hierdie kenmerk laat jou toe om 'n lêer by te voeg maar nie te verwyder nie.

c As jy 'n lêerstelsel gebruik wat volumevlak-kompressie ondersteun, verseker hierdie lêerkenmerk dat die lêer saamgepers word die eerste keer dat die kompressiemeganisme geaktiveer word.

D Hierdie kenmerk verseker dat veranderinge aan lêers onmiddellik na skyf geskryf word eerder as om eers in die kas te kas. Dit is 'n nuttige kenmerk op belangrike databasislêers om seker te maak dat hulle nie tussen die lêerkas en die hardeskyf verlore raak nie.

d Hierdie kenmerk verseker dat die lêer nie in rugsteun gestoor sal word waar die stortingshulpmiddel gebruik word nie.

I Hierdie kenmerk maak indeksering moontlik vir die gids waarin dit geaktiveer is. Dit bied vinniger lêertoegang vir primitiewe lêerstelsels soos Ext3 wat nie die B-boom databasis vir vinnige lêertoegang gebruik nie.

i Hierdie kenmerk maak die lêer onveranderlik. Daarom kan geen veranderinge aan die lêer gemaak word nie, wat nuttig is vir lêers wat addisionele beskerming benodig.

j Hierdie kenmerk verseker dat, op 'n ext3-lêerstelsel, die lêer eers na die joernaal geskryf word en dan na datablokke op die hardeskyf.

s Oorskryf die blokke waarin die lêer gestoor is tot 0'e nadat die lêer uitgevee is. Dit verseker dat die lêer nie herstel kan word sodra dit uitgevee is nie.

u Hierdie kenmerk stoor inligting oor die uitvee. Dit laat jou toe om 'n hulpprogram te ontwikkel wat met hierdie inligting werk om geskrap lêers te red.

As jy die eienskappe wil toepas, kan jy die opdrag gebruik gesels. Gebruik byvoorbeeld chattr +s een of ander lêerom eienskappe op een of ander lêer toe te pas. Moet 'n kenmerk verwyder? Gebruik dan chattr -s een of ander lêeren dit sal verwyder word. Om 'n oorsig te kry van alle eienskappe wat tans toegepas word, gebruik die opdrag lsattr.

Opsomming

In hierdie artikel het jy geleer hoe om met toestemmings te werk. U lees oor die drie basiese toestemmings, gevorderde toestemmings en hoe om ACL's op 'n lêerstelsel toe te pas. Jy het ook geleer hoe om die umask-opsie te gebruik om verstektoestemmings toe te pas. Aan die einde van hierdie artikel het jy geleer hoe om gebruiker-uitgebreide kenmerke te gebruik om 'n bykomende laag lêerstelselsekuriteit toe te pas.

As jy van hierdie vertaling gehou het, skryf asseblief daaroor in die kommentaar. Daar sal meer motivering wees om nuttige vertalings te maak.

Het 'n paar tik- en grammatikale foute in die artikel reggestel. Het sommige lywige paragrawe in kleineres verminder vir beter leesbaarheid.

In plaas van "Slegs iemand met administratiewe regte op die gids kan uitvoertoestemming toepas." vasgestel aan "Slegs iemand met skryftoestemmings op die gids kan uitvoertoestemming toepas.", wat meer korrek sou wees.

Dankie vir die kommentaar berez.

Vervang:
As jy nie die eienaar van die gebruiker is nie, sal die dop kyk om te sien of jy 'n lid van 'n groep is, ook bekend as die groep van die lêer.

Op die:
As jy nie die eienaar van die lêer is nie, sal die dop kyk om te sien of jy 'n lid is van 'n groep wat toestemmings op die lêer het. As jy 'n lid van hierdie groep is, sal jy toegang tot die lêer kry met die toestemmings wat die groep gestel het, en die dop sal ophou kontroleer.

Dankie vir jou kommentaar CryptoPirate

Bron: will.com

Voeg 'n opmerking