Tastimmingen yn Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Hoi allegearre. Dit is in oersetting fan in artikel út it boek RedHat RHCSA RHCE 7 RedHat Enterprise Linux 7 EX200 en EX300.

Triuwe: Ik hoopje dat it artikel net allinich nuttich sil wêze foar begjinners, mar sil ek mear erfarne behearders helpe om har kennis te streamlynjen.

Dat litte we gean.

Tastimmingen yn Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Om tagong te krijen ta bestannen yn Linux, wurde tagongsrjochten brûkt. Dizze tagongsrjochten wurde tawiisd oan trije objekten: de triemeigner, de groepseigner en in oar objekt (dat is elkenien oars). Yn dit artikel sille jo leare hoe't jo tagongsrjochten tapasse.

Dit artikel begjint mei in oersjoch fan 'e basisbegripen, folge troch in diskusje oer Spesjale tagongsrjochten en Access Control Lists (ACL's). Oan 'e ein fan dit artikel behannelje wy it ynstellen fan standert tagongsrjochten fia umask, lykas ek it behearen fan útwreide brûkersattributen.

Bestânseigendom behear

Foardat jo tagongsrjochten besprekke, moatte jo bewust wêze fan 'e rol fan bestân- en mapeigner. Eigendom fan bestannen en mappen is essensjeel foar it omgean mei tagongsrjochten. Yn dizze seksje sille jo earst leare hoe't jo de eigner kinne sjen. Jo sille dan leare hoe't jo de groepseigner en brûker feroarje kinne foar bestannen en mappen.

De eigner fan in bestân of map werjaan

Yn Linux hat elke triem en elke map twa eigners: in brûker en in groep eigner.

Dizze eigners wurde ynsteld as in triem of map wurdt oanmakke. De brûker dy't it bestân oanmakket wurdt de eigner fan dat bestân, en de primêre groep dêr't deselde brûker ta heart, wurdt ek de eigner fan dat bestân. Om te bepalen oft jo, as brûker, tastimming hawwe om tagong te krijen ta in bestân of map, kontrolearret de shell op eigendom.

Dit bart yn de folgjende folchoarder:

  1. De shell kontrolearret om te sjen oft jo de eigner binne fan it bestân dat jo tagong wolle. As jo ​​de eigner binne, krije jo tagongsrjochten en de shell stopt mei kontrolearjen.
  2. As jo ​​net de eigner fan it bestân binne, sil de shell kontrolearje om te sjen oft jo lid binne fan in groep dy't tagongsrjochten hat foar it bestân. As jo ​​​​lid binne fan dizze groep, sille jo tagong krije ta it bestân mei de tagongsrjochten dy't de groep hat ynsteld, en de shell sil stopje mei kontrolearjen.
  3. As jo ​​gjin brûker noch de eigner fan in groep binne, krije jo de rjochten fan oare brûkers (Oare).

Om de aktuele eigener-opdrachten te sjen, kinne jo it kommando brûke ls-l. Dit kommando lit de brûker en eigner fan de groep sjen. Hjirûnder kinne jo de eignerynstellingen foar mappen sjen yn 'e /thúsmap.

[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

Mei it kommando ls jo kinne de eigner fan bestannen yn in opjûne map werjaan. Soms kin it handich wêze om in list te krijen fan alle bestannen op it systeem dy't in opjûne brûker of groep as eigner hawwe. Hjirfoar kinne jo brûke fine. Argumint fyn-brûker kin brûkt wurde foar dit doel. Bygelyks, it folgjende kommando listet alle bestannen dy't eigendom binne fan de brûker linda:

find / -user linda

Jo kinne ek brûke fine om te sykjen nei bestannen dy't in bepaalde groep as eigner hawwe.

Bygelyks, it folgjende kommando siket nei alle bestannen dy't ta de groep hearre brûkers:

find / -group users

Eigner feroarje

Om de passende tagongsrjochten oan te passen, is it earste ding dat jo moatte beskôgje eigendom. D'r is in kommando foar dit chown. De syntaksis fan dit kommando is maklik te begripen:

chown кто что

Bygelyks feroaret it folgjende kommando de eigner fan 'e /home/account-map nei de brûker linda:

chown linda /home/account

team chown hat ferskate opsjes, wêrfan ien benammen nuttich is: -R. Jo kinne riede wat it docht, om't dizze opsje ek beskikber is foar in protte oare kommando's. Hjirmei kinne jo de eigner rekursyf ynstelle, wêrtroch jo de eigner fan 'e hjoeddeistige map en alles hjirûnder kinne ynstelle. It folgjende kommando feroaret eigendom fan 'e / home map en alles dêrûnder nei de linda brûker:

No sjogge de eigners der sa út:

[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

Litte wy dwaan:

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

No is de brûker lisa de eigner wurden fan 'e akkountmap:

[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

Feroarje de eigner fan in groep

D'r binne twa manieren om it eigendom fan in groep te feroarjen. Jo kinne dit dwaan mei help fan chown, mar der is in spesjale kommando neamd chgrpdat docht it wurk. As jo ​​​​it kommando brûke wolle chown, brûke . of : foar de groepsnamme.

It folgjende kommando feroaret elke eigner fan 'e /home/accountgroep nei de akkountgroep:

chown .account /home/account

jo kinne brûke chown om de eigner fan in brûker en/of groep op ferskate manieren te feroarjen. Hjir binne wat foarbylden:

  • chown lisa myfile1 stelt de brûker lisa yn as de eigner fan myfile1.
  • chown lisa.sales myfile stelt de brûker lisa as de eigner fan de myfile triem, en ek stelt de ferkeap groep as de eigner fan deselde triem.
  • chown lisa: ferkeap myfile itselde as it foarige kommando.
  • chown .sales myfile stelt de ferkeapgroep yn as de eigner fan myfile sûnder de eigner fan de brûker te feroarjen.
  • chown: ferkeap myfile itselde as it foarige kommando.

Jo kinne it kommando brûke chgrpom de eigner fan de groep te feroarjen. Beskôgje it folgjende foarbyld, wêr't jo kinne brûke chgrp set de eigner fan 'e akkountmap yn' e ferkeapgroep:

chgrp .sales /home/account

Lykas mei chown, kinne jo de opsje brûke -R с chgrp, en ek rekursyf feroarje de eigner fan de groep.

Begryp fan de Standert Eigner

Jo hawwe miskien opfallen dat as in brûker in bestân oanmakket, it standert eigendom wurdt tapast.
De brûker dy't it bestân oanmakket wurdt automatysk de eigner fan dat bestân, en de primêre groep fan dy brûker wurdt automatysk de eigner fan dat bestân. Dit is normaal de groep dy't yn it /etc/passwd-bestân neamd wurdt as de primêre groep fan de brûker. As de brûker lykwols lid is fan mear dan ien groep, kin de brûker de effektive primêre groep feroarje.

Om de hjoeddeistige effektive primêre groep sjen te litten, kin de brûker it kommando brûke groepen:

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

As de hjoeddeistige linda-brûker de effektive primêre groep feroarje wol, sil hy it kommando brûke nijgrpfolge troch de namme fan 'e groep dy't hy as de nije effektive primêre groep ynstelle wol. Nei it brûken fan it kommando nijgrp de primêre groep sil aktyf wêze oant de brûker in kommando ynfiert útgong of net útlogge.

It folgjende lit sjen hoe't de brûker linda dit kommando brûkt, mei ferkeap as de 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

Nei it wizigjen fan de effektive primêre groep, sille alle nije triemmen dy't troch de brûker makke binne dy groep hawwe as groepeigner. Om werom te gean nei de oarspronklike primêre groepynstelling, brûk útgong.

Om it kommando te brûken nijgrp, de brûker moat lid wêze fan 'e groep dy't se brûke wolle as de primêre groep. Derneist kin in groepwachtwurd brûkt wurde foar in groep mei it kommando gpasswd. As de brûker it kommando brûkt nijgrpmar is gjin lid fan 'e doelgroep, de shell freget om it wachtwurd fan de groep. Neidat jo it juste groepwachtwurd ynfierd hawwe, sil in nije effektive primêre groep fêststeld wurde.

Behear fan grûnrjochten

It Linux tastimmingsysteem waard útfûn yn 'e jierren '1970. Om't de kompjûterbehoeften yn dy jierren beheind wiene, wie it basisfergunningssysteem frij beheind. Dit tastimmingsysteem brûkt trije tagongsrjochten dy't tapast wurde kinne op bestannen en mappen. Yn dizze seksje sille jo leare hoe't jo dizze tagongsrjochten brûke en feroarje.

Lêzen, skriuwen en útfiere tagongsrjochten begripe

Trije basis tagongsrjochten kinne jo bestannen lêze, skriuwe en útfiere. It effekt fan dizze tagongsrjochten ferskilt as tapast op bestannen of mappen. Foar in bestân jout de lêsfergunning jo it rjocht om it bestân te iepenjen foar it lêzen. Dêrom kinne jo de ynhâld lêze, mar dat betsjut dat jo kompjûter it bestân iepenje kin om der wat mei te dwaan.

In programmatriem dat tagong hat ta in bibleteek moat bygelyks lêstagong ta dy bibleteek hawwe. It folget dat de tastimming foar lêzen de meast basale tastimming is dy't jo nedich binne om mei bestannen te wurkjen.

As jo ​​tapast wurde op in map, lit lêzen jo de ynhâld fan dy map werjaan. Jo moatte bewust wêze dat dizze tastimming jo net tastean om de bestannen yn 'e map te lêzen. It Linux-tastimmingsysteem wit gjin erfskip, en de ienige manier om in bestân te lêzen is it brûken fan lêsrjochten op dat bestân.

Lykas jo wierskynlik kinne riede, lit skriuwtastimming, as tapast op in bestân, skriuwe nei it bestân. Mei oare wurden, it lit jo de ynhâld fan besteande bestannen feroarje. It lit jo lykwols gjin nije bestannen oanmeitsje of wiskje of triemrjochten feroarje. Om dit te dwaan, moatte jo skriuwtastimming jaan oan de map wêr't jo it bestân oanmeitsje wolle. Yn mappen lit dizze tastimming jo ek nije submappen meitsje en wiskje.

Tastimming útfiere is wat jo nedich binne om it bestân út te fieren. It sil nea standert ynstalleare wurde, wat Linux hast folslein ymmún makket foar firussen. Allinich ien mei skriuwrjochten yn 'e map kin útfieringsrjochten tapasse.

It folgjende gearfettet it gebrûk fan basisrjochten:

Tastimmingen yn Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Mei chmod

It kommando wurdt brûkt om tagongsrjochten te behearjen. chmod. Using chmod jo kinne tagongsrjochten ynstelle foar de brûker (brûker), groepen (groep) en oaren (oare). Jo kinne dit kommando yn twa modi brûke: relative modus en absolute modus. Yn absolute modus wurde trije sifers brûkt om basisrjochten yn te stellen.

Tastimmingen yn Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

By it ynstellen fan tagongsrjochten, berekkenje de wearde dy't jo nedich binne. As jo ​​​​lêzen / skriuwe / útfiere wolle ynstelle foar brûker, lêze / útfiere foar groep, en lêze / útfiere foar oaren yn / somefile dan brûke jo it folgjende kommando chmod:

chmod 755 /somefile

Wannear't jo brûke chmod op dizze manier wurde alle aktuele tagongsrjochten ferfongen troch de tagongsrjochten dy't jo ynsteld hawwe.

As jo ​​​​de tagongsrjochten relatyf oan 'e aktuele tagongsrjochten feroarje wolle, kinne jo gebrûk meitsje fan chmod yn relative modus. Using chmod yn relative modus wurkje jo mei trije yndikatoaren om oan te jaan wat jo wolle dwaan:

  1. Earst spesifisearje jo foar wa't jo tagongsrjochten wizigje wolle. Om dit te dwaan, kinne jo kieze tusken brûker (u), groep (g) en oaren (o).
  2. Jo brûke dan in ferklearring om tagongsrjochten ta te foegjen of te ferwiderjen fan 'e hjoeddeistige modus, of set se absolút yn.
  3. Oan 'e ein brûke jo r, w и xom oan te jaan hokker tagongsrjochten jo ynstelle wolle.

By it feroarjen fan tagongsrjochten yn relative modus, kinne jo it "nei" diel oerslaan om tastimming foar alle objekten ta te foegjen of te ferwiderjen. Dit kommando foeget bygelyks tastimming foar útfiering ta foar alle brûkers:

chmod +x somefile

As jo ​​wurkje yn relative modus, kinne jo ek brûke mear komplekse kommando's. Dit kommando foeget bygelyks skriuwtastimming ta oan in groep en ferwideret lêsrjochten foar oaren:

chmod g+w,o-r somefile

By it brûken chmod -R o+rx /data jo sette útfieringsrjochten yn foar alle mappen en ek bestannen yn 'e /data-map. Om útfiere tastimming allinich yn te stellen foar mappen en net foar bestannen, brûk chmod -R o+ rX /data.

De haadletter X soarget derfoar dat bestannen gjin tastimming foar útfiering krije, útsein as it bestân al útfieringsfergunning ynsteld hat foar guon objekten. Dit makket X in slimmer manier om te gean mei útfieringsrjochten; dit sil it ynstellen fan dizze tastimming foarkomme op bestannen wêr't it net nedich is.

Utwreide rjochten

Neist de basisrjochten wêr't jo krekt oer lêze, hat Linux ek in set avansearre tagongsrjochten. Dit binne net de tagongsrjochten dy't jo standert ynstelle, mar soms jouwe se in nuttige oanfolling. Yn dizze seksje sille jo leare wat se binne en hoe't jo se ynstelle.

Begryp SUID, GUID, en Sticky Bit útwreide tagongsrjochten

D'r binne trije avansearre tagongsrjochten. De earste dêrfan is de tastimming om in brûkersidentifikaasje (SUID) yn te stellen. Yn guon spesjale gefallen kinne jo dizze tastimming tapasse op útfierbere bestannen. Standert rint in brûker dy't in útfierbere triem rint dat bestân mei har eigen tagongsrjochten.

Foar gewoane brûkers betsjut dit normaal dat it gebrûk fan it programma beheind is. Yn guon gefallen hat de brûker lykwols spesjale tagongsrjochten nedich, allinich om in spesifike taak út te fieren.

Tink bygelyks oan in situaasje dêr't in brûker syn wachtwurd moat feroarje. Om dit te dwaan, moat de brûker har nije wachtwurd skriuwe yn it /etc/shadow-bestân. Dit bestân is lykwols net skriuwber troch net-root brûkers:

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

De SUID-tastimming biedt in oplossing foar dit probleem. It hulpprogramma /usr/bin/passwd brûkt dizze tastimming standert. Dit betsjut dat by it wizigjen fan it wachtwurd, de brûker tydlik root wurdt, wêrtroch't hy kin skriuwe nei it /etc/shadow-bestân. Jo kinne sjen de SUID tastimming mei ls-l hoe s yn in posysje wêr't jo normaal ferwachtsje om te sjen x foar oanpaste tagongsrjochten:

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

De SUID-tastimming kin nuttich útsjen (en yn guon gefallen is it), mar tagelyk is it potinsjeel gefaarlik. As net goed tapast, kinne jo per ongelok root-tagongsrjochten jaan. Dêrom advisearje ik it allinich mei de uterste soarch te brûken.

De measte behearders sille it noait hoege te brûken; jo sille it allinich sjen yn guon bestannen wêr't it bestjoeringssysteem it standert ynstelle moat.

De twadde spesjale tastimming is de groep identifier (SGID). Dizze tastimming hat twa effekten. Wannear't tapast wurdt op in útfierber bestân, jout it de brûker dy't it bestân útfiert de tagongsrjochten fan 'e groepseigner fan it bestân. Sa kin SGID min of mear itselde dwaan as SUID. SGID wurdt lykwols praktysk net foar dit doel brûkt.

Lykas by SUID-tastimming, wurdt SGID tapast op guon systeembestannen as standertynstelling.

Wannear't tapast wurdt op in map, kin de SGID nuttich wêze om't jo it brûke kinne om de standertgroepeigner yn te stellen foar bestannen en submappen dy't yn dy map makke binne. Standert, as in brûker in bestân oanmakket, wurdt har effektive primêre groep ynsteld as de groepeigner foar dat bestân.

Dit is net altyd heul nuttich, benammen om't Red Hat/CentOS-brûkers har primêre groep ynsteld hawwe op in groep mei deselde namme as de brûker, en wêrfan de brûker it ienige lid is. Sa wurde standert de bestannen dy't de brûker oanmakket yn bulk dield.

Stel jo in situaasje foar wêr't brûkers linda en lori wurkje yn boekhâlding en lid binne fan in groep rekken. Standert binne dizze brûkers lid fan in privee groep wêrfan se it ienige lid binne. Beide brûkers binne lykwols lid fan 'e akkountgroep, mar ek as sekundêre groepparameter.

De standertsituaasje is dat as ien fan dizze brûkers in bestân oanmeitsje, de primêre groep de eigner wurdt. Dêrom kin linda standert gjin tagong krije ta bestannen makke troch lori, en oarsom. As jo ​​​​lykwols in dielde groepsmap oanmeitsje (sizze /groups/account) en derfoar soargje dat de SGID-tastimming wurdt tapast op dy map en dat it groepsakkount is ynsteld as de groepseigner foar dy map, alle triemmen dy't makke binne yn dy map en alle fan syn submappen , krije ek standert it groepsakkount as de groepseigner.

Om dizze reden is de SGID-tastimming in heul nuttige tastimming om yn te stellen op iepenbiere groepsmappen.

SGID-tastimming werjûn yn útfier ls-l hoe s op 'e posysje wêr't jo normaal tastimming fine om in groep út te fieren:

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

De tredde fan 'e spesjale tagongsrjochten is it kleverige bit. Dizze tastimming is nuttich foar it beskermjen fan bestannen tsjin tafallich wiskjen yn in omjouwing wêr't meardere brûkers skriuwtagong hawwe ta deselde map. As in plakkerich bit wurdt brûkt, kin in brûker in bestân allinich wiskje as se de brûker binne fan 'e triem of map dy't it bestân befettet. Om dizze reden wurdt it brûkt as standert tastimming foar de map /tmp en kin ek nuttich wêze foar iepenbiere groepsmappen.

Sûnder it kleverige bit, as de brûker triemmen yn in map oanmeitsje kin, kinne se ek triemmen út dy map wiskje. Yn in iepenbiere groepsomjouwing kin dit ferfelend wêze. Stel jo de brûkers linda en lori foar, dy't beide skriuwrjochten hawwe foar de /data/account-map en dy tagongsrjochten krije troch lid te wêzen fan 'e akkountgroep. Dêrom kin linda bestannen wiskje makke troch lori en oarsom.

As jo ​​​​de kleverige bit tapasse, kin de brûker allinich bestannen wiskje as ien fan 'e folgjende betingsten wier is:

  • De brûker is de eigner fan it bestân;
  • De brûker is de eigner fan de map dêr't de triem leit.

By it brûken ls-l, kinne jo sjen de kleverige bytsje as t yn 'e posysje wêr't jo normaal tastimming foar útfiering sille sjen foar oaren:

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

It tapassen fan útwreide rjochten

Om SUID, SGID en sticky bit oan te passen kinne jo ek brûke chmod. SUID hat in numerike wearde fan 4, SGID hat in numerike wearde fan 2, en sticky bit hat in numerike wearde fan 1.

As jo ​​​​dizze tagongsrjochten tapasse wolle, moatte jo in argumint fan fjouwer sifers tafoegje oan chmod, waans earste sifer ferwiist nei spesjale tagongsrjochten. De folgjende rigel sil bygelyks SGID-tastimming tafoegje oan 'e map en set rwx foar brûker en rx foar groep en oaren:

chmod 2755 /somedir

Dit is nochal ûnpraktysk as jo de hjoeddeistige tagongsrjochten moatte sjen dy't binne ynsteld foardat jo wurkje chmod yn absolute modus. (Jo rinne it risiko om tagongsrjochten te oerskriuwen as jo dat net dogge.) Dat ik advisearje om yn relative modus te rinnen as jo ien fan 'e spesjale tagongsrjochten tapasse moatte:

  1. Foar SUID gebrûk chmod u+s.
  2. Foar SGID gebrûk chmod g+s.
  3. Foar sticky bit gebrûk chmod +t, folge troch de namme fan it bestân of map wêrfoar jo tagongsrjochten ynstelle wolle.

De tabel gearfettet alles wat jo witte moatte oer it behearen fan spesjale tagongsrjochten.

Tastimmingen yn Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Foarbyld fan wurkjen mei spesjale rjochten

Yn dit foarbyld brûke jo spesjale tagongsrjochten om it makliker te meitsjen foar groepsleden om bestannen te dielen yn 'e dielde groepmap. Jo tawize de ID bit oan de ynstelde groep ID likegoed as de kleverige bit, en jo sjogge dat ienris se binne ynsteld, funksjes wurde tafoege foar in meitsje it makliker foar groep leden in gearwurkje.

  1. Iepenje in terminal wêr't jo de linda-brûker binne. Jo kinne in brûker meitsje mei it kommando brûker taheakje linda, wachtwurd tafoegje passwd Linda.
  2. Meitsje de map / data yn 'e root en de submap / data/sales mei it kommando mkdir -p /data/ferkeap. Kompleet cd /data/ferkeapom nei de ferkeapmap te gean. Kompleet tink linda1 и tink linda2om twa lege bestannen te meitsjen dy't eigendom binne fan linda.
  3. Eksekutearje su-lisa om de aktuele brûker te wikseljen nei de brûker lisa, dy't ek lid is fan 'e ferkeapgroep.
  4. Eksekutearje cd /data/ferkeap en út dy map útfiere ls-l. Jo sille twa bestannen sjen dy't makke binne troch de linda-brûker en hearre ta de linda-groep. Kompleet rm -f linda*. Dit sil beide bestannen fuortsmite.
  5. Eksekutearje tikje lisa1 и tikje lisa2om twa bestannen te meitsjen dy't eigendom binne fan de brûker lisa.
  6. Eksekutearje su- om jo privileezjes te ferheegjen nei root.
  7. Eksekutearje chmod g+s,o+t /data/ferkeapom de groep identifier (GUID) bit yn te stellen en ek de sticky bit yn 'e dielde groep map.
  8. Eksekutearje su-linda. Dan dwaan tink linda3 и tink linda4. Jo moatte no sjen dat de twa bestannen dy't jo makke hawwe eigendom binne fan de ferkeapgroep, dat is de groepeigner fan 'e /data/sales-map.
  9. Eksekutearje rm -rf lisa*. It kleverige bit foarkomt dat dizze bestannen wurde wiske út namme fan de linda-brûker, om't jo net de eigner binne fan dizze bestannen. Tink derom dat as de linda-brûker de eigner is fan 'e /data/sales-map, se dizze triemmen dochs wiskje kinne!

ACL-behear (setfacl, getfacl) yn Linux

Sels hoewol de hjirboppe besprutsen útwreide tagongsrjochten nuttige funksjonaliteit tafoegje oan 'e manier wêrop Linux tastimmingen omgiet, lit it jo net tastimming jaan oan mear dan ien brûker of groep yn itselde bestân.

Tagongskontrôlelisten biede dizze funksje. Dêrnjonken kinne se behearders standert tagongsrjochten ynstelle op in komplekse manier, wêrby't de ynstelde tagongsrjochten ferskille kinne fan map nei map.

ACL's begripe

Hoewol it ACL-subsysteem geweldige funksjonaliteit tafoeget oan jo tsjinner, hat it ien neidiel: net alle nutsbedriuwen stypje it. Dêrom kinne jo jo ACL-ynstellings kwytreitsje as jo bestannen kopiearje of ferpleatse, en jo backupsoftware kin miskien net in reservekopy meitsje fan jo ACL-ynstellingen.

It tar-hulpprogramma stipet gjin ACL's. Om te soargjen dat ACL-ynstellingen net ferlern gean as jo in reservekopy meitsje, brûk dan stjer ynstee fan tar. stjer wurket mei deselde opsjes as tar; it foeget gewoan stipe ta foar ACL-ynstellingen.

Jo kinne ek reservekopy ACLs mei getfacl, dat kin wurde werombrocht mei it setfacl kommando. Om in reservekopy te meitsjen, brûk getfacl -R /directory> file.acls. Om ynstellings te herstellen fan in reservekopybestân, brûk setfacl --restore=file.acl.

Gebrek oan stipe troch guon ark soe gjin probleem wêze moatte. ACL's wurde faak tapast op mappen as in strukturele maatregel ynstee fan yndividuele bestannen.
Dêrom sille d'r net in protte fan har, mar mar in pear, wurde tapast op tûke plakken yn it bestânsysteem. Dêrom is it herstellen fan de orizjinele ACL's wêrmei jo wurke hawwe relatyf maklik, sels as jo backupsoftware se net stipet.

It tarieden fan it bestânsysteem foar ACL's

Foardat jo begjinne te wurkjen mei ACL's, moatte jo miskien jo bestânsysteem tariede om ACL's te stypjen. Om't metadata fan bestânsysteem útwreide wurde moatte, is d'r net altyd standertstipe foar ACL's yn it bestânsysteem. As jo ​​in berjocht "operaasje net stipe" krije by it ynstellen fan ACL's foar in bestânsysteem, kin jo bestânsysteem gjin ACL's stypje.

Om dit te reparearjen moatte jo de opsje tafoegje acl mount yn /etc/fstab sadat it bestânsysteem standert is monteard mei ACL-stipe.

Feroarje en besjen fan ACL-ynstellingen mei setfacl en getfacl

Om in ACL yn te stellen hawwe jo it kommando nedich setfacl. Om de hjoeddeistige ACL-ynstellingen te sjen, moatte jo getfacl. Ploech ls-l toant gjin besteande ACL's; it lit gewoan in + nei de tastimmingslist sjen, wat oanjout dat de ACL's ek jilde foar it bestân.

Foar it opsetten fan ACLs, it is altyd in goed idee om te sjen litte de hjoeddeiske ACL ynstellings mei getfacl. Yn it foarbyld hjirûnder kinne jo de aktuele tagongsrjochten sjen, lykas werjûn mei ls-l, en ek lykas werjûn mei getfacl. As jo ​​goed genôch sjogge, sille jo sjen dat de ynformaasje werjûn is krekt itselde.

[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 gefolch fan it útfieren fan it kommando getfacl hjirûnder kinne jo sjen dat de tagongsrjochten wurde werjûn foar trije ferskillende objekten: brûker, groep en oaren. Litte wy no in ACL tafoegje om tagongsrjochten te jaan en te lêzen oan 'e ferkeapgroep ek. kommando foar dit setfacl -mg:ferkeap:rx /dir. Yn dit team -m jout oan dat de hjoeddeiske ACL ynstellings moatte wurde feroare. Dêrnei g:ferkeap:rx fertelt it kommando om de read-útfiere ACL (rx) foar de groep (g) ferkeap. Hjirûnder kinne jo sjen hoe't it kommando derút sjocht, lykas de útfier fan it kommando getfacl nei it feroarjen fan de hjoeddeistige ACL-ynstellingen.

[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

No't jo begripe hoe't jo in groep ACL kinne ynstelle, is it maklik om ACL's te begripen foar brûkers en oare brûkers. Bygelyks, it kommando setfacl -mu:linda:rwx /data jout tagongsrjochten oan 'e linda-brûker yn 'e /data-map sûnder it de eigner te meitsjen of de opdracht fan 'e hjoeddeistige eigner te feroarjen.

team setfacl hat in protte funksjes en opsjes. Ien opsje is benammen wichtich, de parameter -R. As brûkt, makket de opsje de ACL ynsteld foar alle bestannen en submappen dy't op it stuit besteane yn 'e map wêr't jo de ACL ynstelle. It is oan te rieden dat jo dizze opsje altyd brûke by it feroarjen fan ACL's foar besteande mappen.

Wurkje mei Standert ACL's

Ien fan 'e foardielen fan it brûken fan ACL's is dat jo tagongsrjochten kinne jaan oan meardere brûkers of groepen yn in map. In oar foardiel is dat jo erfskip ynskeakelje kinne troch te wurkjen mei de standert ACL's.

Troch de standert ACL yn te stellen, bepale jo de tagongsrjochten dy't ynsteld wurde foar alle nije items dy't makke binne yn 'e map. Wês bewust dat de standert ACL gjin tagongsrjochten feroaret op besteande bestannen en submappen. Om se te feroarjen, moatte jo ek in normale ACL tafoegje!

Dit is wichtich om te witten. As jo ​​​​in ACL brûke wolle om meardere brûkers of groepen te konfigurearjen om tagong te krijen ta deselde map, moatte jo de ACL twa kear ynstelle. Earste gebrûk setfacl -R -mom ACL's te feroarjen foar aktuele bestannen. Brûk dan setfacl-md:om te soargjen foar alle nije eleminten dy't ek makke wurde.

Om de standert ACL yn te stellen, moatte jo gewoan de opsje tafoegje d na opsje -m (folchoarder makket saak!). Dus brûke setfacl -md:g:ferkeap:rx /dataas jo wolle dat groepferkeap lêze en útfiere wat ea makke is yn 'e /data-map.

By it brûken fan standert ACL's kin it ek nuttich wêze om ACL's foar oaren yn te stellen. Dit makket normaal net folle sin, om't jo ek de tagongsrjochten kinne feroarje foar oaren dy't brûke chmod. Wat jo lykwols net kinne dwaan chmod, is om de rjochten oan te jaan dy't moatte wurde ferliend oan oare brûkers foar elke nije triem dy't ea makke wurdt. As jo ​​​​wolle foarkomme dat oaren gjin tagongsrjochten krije oer alles dat is makke yn / data bygelyks gebrûk setfacl -md:o::- /data.

ACL's en normale tagongsrjochten binne net altyd goed yntegreare. Problemen kinne ûntstean as jo in standert ACL tapasse op in map, dan wurde items tafoege oan dy map, en besykje dan de normale tagongsrjochten te feroarjen. Feroarings dy't jilde foar normale tagongsrjochten sille net goed wjerspegele wurde yn it ACL-oersjoch. Om problemen te foarkommen, set earst normale tagongsrjochten yn, set dan de standert ACL's yn (en besykje se dêrnei net wer te feroarjen).

Foarbyld fan ferhege rjochtenbehear mei help fan ACL's

Yn dit foarbyld sille jo trochgean mei de mappen /data/account en /data/ferkeap dy't jo earder makke hawwe. Yn 'e foarige foarbylden hawwe jo derfoar soarge dat de ferkeapgroep tagongsrjochten hat op /data/ferkeap en de akkountgroep hat tagongsrjochten op /data/account.

Soargje derfoar dat de akkountgroep lêsrjochten krijt yn 'e /data/sales directory en de ferkeapgroep krijt lêsrjochten yn 'e /data/account directory.

Jo set dan standert ACL's yn om te soargjen dat alle nije bestannen de juste tagongsrjochten hawwe ynsteld foar alle nije items.

  1. Iepenje in terminal.
  2. Eksekutearje setfacl -mg: account: rx /data/ferkeap и setfacl -mg:ferkeap:rx /data/account.
  3. Eksekutearje getfaclom te soargjen dat de tagongsrjochten ynsteld binne lykas jo wolle.
  4. Eksekutearje setfacl -md:g:account:rwx,g:ferkeap:rx /data/ferkeapom de standert ACL yn te stellen foar de ferkeapmap.
  5. Foegje in standert ACL ta foar de /data/account map mei setfacl -md:g:ferkeap:rwx,g:account:rx /data/account.
  6. Ferifiearje dat de ACL-ynstellingen yn wurking binne troch in nij bestân ta te foegjen oan /data/sales. Kompleet touch /data/ferkeap/newfile en útfiere getfacl /data/sales/newfile om aktuele tagongsrjochten te kontrolearjen.

It ynstellen fan standert tagongsrjochten mei umask

Hjirboppe hawwe jo leard hoe't jo kinne wurkje mei standert ACL's. As jo ​​​​gjin ACL brûke, is d'r in shell-opsje dy't de standert tagongsrjochten bepaalt dy't jo krije: umask (omkearde masker). Yn dizze seksje sille jo leare hoe't jo de standert tagongsrjochten feroarje mei umask.

Jo hawwe miskien opfallen dat as jo in nij bestân meitsje, guon standert tagongsrjochten ynsteld binne. Dizze tagongsrjochten wurde bepaald troch de ynstelling umask. Dizze shell-ynstelling jildt foar alle brûkers by oanmelding. Yn parameter umask in numerike wearde wurdt brûkt, dy't wurdt subtrahearre fan de maksimale tagongsrjochten dy't automatysk ynsteld wurde kinne foar it bestân; de maksimale ynstelling foar triemmen is 666 en foar mappen is 777.

Guon útsûnderings jilde lykwols foar dizze regel. Jo kinne in folslein oersjoch fan ynstellings fine umask yn de tabel hjirûnder.

Fan de nûmers brûkt yn umask, lykas yn it gefal fan numerike arguminten foar it kommando chmod, it earste sifer ferwiist nei de tagongsrjochten fan 'e brûker, it twadde sifer ferwiist nei de tagongsrjochten fan 'e groep, en it lêste ferwiist nei de standert tagongsrjochten ynsteld foar oaren. Betsjutting umask de standert 022 jout 644 foar alle nije triemmen en 755 foar alle nije mappen makke op jo tsjinner.

Folslein oersjoch fan alle numerike wearden umask en har resultaten yn 'e tabel hjirûnder.

Tastimmingen yn Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

In maklike manier om te sjen hoe't de umask-ynstelling wurket is as folget: begjin mei de standert tagongsrjochten fan it bestân ynsteld op 666 en subtract de umask om de effektive tagongsrjochten te krijen. Doch itselde foar de map en syn standert tagongsrjochten fan 777.

D'r binne twa manieren om de umask-ynstelling te feroarjen: foar alle brûkers en foar yndividuele brûkers. As jo ​​de umask foar alle brûkers ynstelle wolle, moatte jo derfoar soargje dat de umask-ynstelling rekken holden wurdt by it starten fan shell-omjouwingsbestannen, lykas spesifisearre yn /etc/profile. De juste oanpak is om in shellskript te meitsjen mei de namme umask.sh yn 'e map /etc/profile.d en spesifisearje de umask dy't jo brûke wolle yn dat shellskript. As de umask is feroare yn dit bestân, wurdt it tapast op alle brûkers nei it oanmelden by de tsjinner.

In alternatyf foar it ynstellen fan de umask fia /etc/profyl en besibbe bestannen, wêr't it jildt foar alle brûkers dy't ynlogge, is om de umask-ynstellingen te feroarjen yn in triem mei de namme .profile dy't makke is yn 'e thúsmap fan elke brûker.

De ynstellings tapast yn dit bestân jilde allinnich foar de yndividuele brûker; dêrfandinne dit is in goede metoade as jo nedich hawwe mear detail. Ik persoanlik hâld fan dizze funksje om de standert umask foar de root-brûker te feroarjen nei 027, wylst normale brûkers rinne mei de standert umask fan 022.

Wurkje mei útwreide brûkersattributen

Dit is de lêste seksje oer Linux tagongsrjochten.

By it wurkjen mei tagongsrjochten is d'r altyd in relaasje tusken in brûker- of groepobjekt en de tagongsrjochten dy't brûker- of groepobjekten hawwe op in bestân of map. In alternative metoade om bestannen op in Linux-tsjinner te beskermjen is om te wurkjen mei attributen.
Attributen dogge har wurk nettsjinsteande de brûker dy't tagong hat ta it bestân.

Lykas by ACL's, kinne triemattributen de opsje moatte befetsje berch.

Dit is in opsje user_xattr. As jo ​​​​in "operaasje net stipe" krije by it wurkjen mei útwreide brûkersattributen, wês dan wis dat jo de parameter ynstelle berch yn /etc/fstab.

In protte attributen binne dokumintearre. Guon attributen binne beskikber, mar noch net ymplementearre. Brûk se net; se sille jo neat bringe.

Hjirûnder binne de meast brûkbere attributen dy't jo kinne tapasse:

A Dit attribút soarget derfoar dat de triem tagong tiid net feroaret.
Typysk, elke kear as in bestân wurdt iepene, moat de tagongstiid fan it bestân wurde opnommen yn 'e metadata fan it bestân. Dit hat in negative ynfloed op prestaasjes; dus foar bestannen dy't regelmjittich tagong wurde, it attribút A kin brûkt wurde om dizze funksje út te skeakeljen.

a Mei dit attribút kinne jo in bestân tafoegje mar net fuortsmite.

c As jo ​​in bestânsysteem brûke dat kompresje op folumenivo stipet, soarget dit triemattribút derfoar dat it bestân komprimearre wurdt de earste kear dat it kompresjemeganisme ynskeakele is.

D Dit attribút soarget derfoar dat wizigingen oan bestannen direkt nei skiif skreaun wurde ynstee fan earst yn it cache. Dit is in nuttich attribút op wichtige databankbestannen om te soargjen dat se net ferlern gean tusken de triemcache en de hurde skiif.

d Dit attribút soarget derfoar dat it bestân net bewarre wurdt yn backups wêr't it dumphulpprogramma wurdt brûkt.

I Dit attribút makket yndeksearring mooglik foar de map wêryn it ynskeakele is. Dit soarget foar rappere triemtagong foar primitive triemsystemen lykas Ext3 dy't de B-tree-database net brûke foar rappe triemtagong.

i Dit attribút makket it bestân ûnferoarlik. Dêrom kinne gjin wizigingen makke wurde oan it bestân, wat nuttich is foar bestannen dy't ekstra beskerming nedich binne.

j Dit attribút soarget derfoar dat, op in ext3 triem systeem, de triem wurdt earst skreaun nei it tydskrift en dan nei gegevens blokken op de hurde skiif.

s Oerskriuwe de blokken wêryn it bestân waard opslein yn 0s nei it wiskjen fan it bestân. Dit soarget derfoar dat it bestân net weromset wurde kin as it ienris wiske is.

u Dit attribút bewarret ynformaasje oer it wiskjen. Hjirmei kinne jo in hulpprogramma ûntwikkelje dat wurket mei dizze ynformaasje om ferwidere bestannen te rêden.

As jo ​​​​de attributen tapasse wolle, kinne jo it kommando brûke chatter. Bygelyks, brûke chattr +s wat bestânom attributen oan te passen op wat bestân. Moatte in attribút fuortsmite? Brûk dan chattr -s wat bestânen it sil fuortsmiten wurde. Om in oersjoch te krijen fan alle attributen dy't op it stuit tapast wurde, brûk it kommando lsattr.

Gearfetting

Yn dit artikel hawwe jo leard hoe't jo kinne wurkje mei tagongsrjochten. Jo lêze oer de trije basis tagongsrjochten, avansearre tagongsrjochten, en hoe't jo ACL's tapasse op in bestânsysteem. Jo hawwe ek leard hoe't jo de umask-opsje kinne brûke om standert tagongsrjochten ta te passen. Oan 'e ein fan dit artikel hawwe jo leard hoe't jo brûker-útwreide attributen kinne brûke om in ekstra laach fan bestânsysteemfeiligens oan te passen.

As jo ​​​​dizze oersetting leuk fine, skriuw dan asjebleaft oer yn 'e opmerkings. Der sil mear motivaasje wêze om nuttige oersettingen te meitsjen.

Korrigearre guon typfouten en grammatikale flaters yn it artikel. Guon bulte paragrafen fermindere yn lytsere foar bettere lêsberens.

Yn stee fan "Allinich ien mei bestjoerlike rjochten foar de map kin útfiere tastimming oanfreegje." fêst oan "Allinich ien mei skriuwrjochten yn 'e map kin útfiere-tastimming tapasse.", dat soe krekter wêze.

Tank foar de opmerkingen berez.

Ferfongen:
As jo ​​net de eigner fan de brûker binne, sil de shell kontrolearje om te sjen oft jo lid binne fan in groep, ek wol bekend as de groep fan it bestân.

Op 'e:
As jo ​​net de eigner fan it bestân binne, sil de shell kontrolearje om te sjen oft jo lid binne fan in groep dy't tagongsrjochten hat foar it bestân. As jo ​​​​lid binne fan dizze groep, sille jo tagong krije ta it bestân mei de tagongsrjochten dy't de groep hat ynsteld, en de shell sil stopje mei kontrolearjen.

tank foar jo kommentaar CryptoPirate

Boarne: www.habr.com

Add a comment