Hei alle. Dette er oversettelsen av en artikkel fra boken RedHat RHCSA RHCE 7 RedHat Enterprise Linux 7 EX200 og EX300.
Personlig: Jeg håper artikkelen vil være nyttig ikke bare for nybegynnere, men også hjelpe mer erfarne administratorer med å systematisere sin kunnskap.
Så la oss starte.

For å få tilgang til filer i Linux, brukes tillatelser. Disse tillatelsene tildeles tre objekter: eieren av filen, gruppeeieren og et annet objekt (det vil si alle andre). I denne artikkelen vil du lære hvordan du anvender tillatelser.
Artikkelen begynner med en oversikt over grunnleggende begreper, etterfulgt av spesielle tillatelser (Special permissions) og tilgangskontrollister (ACL). På slutten av denne artikkelen blir standard tilgangsrettigheter via umask samt håndtering av utvidede brukerattributter behandlet.
Håndtering av fil-eierskap
Før vi diskuterer tillatelser, må du vite om rollen til eieren av filen og katalogen. Eierskap til filer og kataloger er avgjørende for arbeid med tillatelser. I dette avsnittet vil du først lære hvordan du kan se eieren. Deretter vil du lære hvordan du endrer gruppe- og brukereierne for filer og kataloger.
Visning av eieren av en fil eller katalog
I Linux har hver fil og hver katalog to eiere: bruker og gruppeeier.
Disse eierne settes ved opprettelsen av filen eller katalogen. Brukeren som oppretter filen blir eier av denne filen, og den primære gruppen som denne brukeren tilhører, blir også eier av filen. For å avgjøre om du som bruker har tilgang til en fil eller katalog, sjekker skallet eierskapet.
Dette skjer i følgende rekkefølge:
- Skallet sjekker om du er eieren av filen du ønsker tilgang til. Hvis du er eieren, får du tillatelsene, og skallet stopper videre sjekking.
- Hvis du ikke er eieren av filen, vil skallet sjekke om du er medlem av gruppen som har tillatelser til denne filen. Hvis du er medlem av den gruppen, får du tilgang til filen med de tillatelsene som er satt for gruppen, og skallet stopper videre sjekking.
- Hvis du verken er bruker eller gruppeeier, får du tilgang som andre brukere (Other).
For å se nåværende eierskap, kan du bruke kommandoen ls -l. Denne kommandoen viser brukeren og gruppens eier. Nedenfor kan du se eierinnstillingene for mapper i mappen /home.
[root@server1 home]# ls -l
total 8
drwx------. 3 bob bob 74 Feb 6 10:13 bob
drwx------. 3 caroline caroline 74 Feb 6 10:13 caroline
drwx------. 3 fozia fozia 74 Feb 6 10:13 fozia
drwx------. 3 lara lara 74 Feb 6 10:13 lara
drwx------. 5 lisa lisa 4096 Feb 6 10:12 lisa
drwx------. 14 user user 4096 Feb 5 10:35 user
Ved hjelp av kommandoen ls du kan vise eieren av filene i denne mappen. Noen ganger kan det være nyttig å få en liste over alle filer i systemet der denne brukeren eller gruppen er oppgitt som eier. For dette kan du bruke find. Argumentet find -user kan brukes til dette formålet. For eksempel viser følgende kommando alle filer der bruker linda er oppgitt som eier:
find / -user lindaDu kan også bruke find til å finne filer der en bestemt gruppe er eier.
For eksempel søker følgende kommando etter alle filer som tilhører gruppen users:
find / -group usersEndre eier
For å anvende de riktige tillatelsene, er det første å vurdere eierskap. For dette er det en kommando chown. Syntaksen for denne kommandoen er ikke vanskelig å forstå:
chown hvem hvaFor eksempel endrer følgende kommando eieren av katalogen /home/account til brukeren linda:
chown linda /home/accountLaget chown har flere alternativer, ett av dem er spesielt nyttig: -R. Du kan gjette hva den gjør, fordi dette alternativet også er tilgjengelig for mange andre kommandoer. Dette lar deg rekurisvt sette eier, noe som lar deg sette eier for den nåværende katalogen og alt under. Følgende kommando endrer eieren for katalogen /home og alt som er under det, til brukeren linda:
Nå ser eierne slik ut:
[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
Vi utfører:
[root@localhost ~]# chown -R lisa /home/account
[root@localhost ~]#
Nå har brukeren lisa blitt eier av katalogen account:
[root@localhost ~]# ls -l /home
total 0
drwx------. 2 lisa account 62 Sep 25 21:41 account
drwx------. 2 lisa lisa 62 Sep 25 21:42 lisa
Endre gruppeeier
Det er to måter å endre gruppeeierskap på. Du kan gjøre dette ved å bruke chown, men det finnes en spesialkommando med navnet chgrp, som utfører dette arbeidet. Hvis du ønsker å bruke kommandoen chown, bruk . eller : før navnet på gruppen.
Den neste kommandoen endrer eieren av gruppen /home/account til gruppen account:
chown .account /home/account
Du kan bruke chown for å endre eieren av en bruker og/eller gruppe på flere måter. Her er noen eksempler:
- chown lisa myfile1 setter brukeren lisa som eier av filen myfile1.
- chown lisa.sales myfile setter brukeren lisa som eier av filen myfile, og setter også gruppen sales som eier av den samme filen.
- chown lisa:sales myfile det samme som den forrige kommandoen.
- chown .sales myfile setter gruppen sales som eier av filen myfile uten å endre eieren av brukeren.
- chown :sales myfile det samme som den forrige kommandoen.
Du kan bruke kommandoen chgrp, for å endre eieren av gruppen. La oss se på følgende eksempel, hvor du kan bruke chgrp til å sette gruppen sales som eieren av katalogen account:
chgrp .sales /home/accountSom i tilfelle med chown, kan du bruke alternativet -R med chgrp, og også endre eieren av gruppen rekurent.
Forståelse av standard eier
Du har kanskje lagt merke til at når en bruker oppretter en fil, brukes standard eierskap.
Brukeren som oppretter filen, blir automatisk eier av den filen, og brukerens primære gruppe blir automatisk eier av den filen. Vanligvis er dette gruppen som er angitt i filen /etc/passwd som brukerens primære gruppe. Men hvis brukeren er medlem av flere grupper, kan han endre den effektive primære gruppen.
For å vise den nåværende effektive primære gruppen kan brukeren bruke kommandoen groups:
[root@server1 ~]# groups lisa
lisa : lisa account sales
Hvis den nåværende brukeren linda ønsker å endre sin effektive primære gruppe, vil han bruke kommandoen newgrp, etterfulgt av navnet på gruppen han ønsker å sette som sin nye effektive primære gruppe. Etter å ha brukt kommandoen newgrp vil den primære gruppen være aktiv så lenge brukeren ikke skriver inn kommandoen exit eller logger ut.
Under vises hvordan brukeren linda bruker denne kommandoen, hvor den primære gruppen ble gruppe sales:
lisa@server1 ~]$ groups
lisa account sales
[lisa@server1 ~]$ newgrp sales
[lisa@server1 ~]$ groups
sales lisa account
[lisa@server1 ~]$ touch file1
[lisa@server1 ~]$ ls -l
total 0
-rw-r--r--. 1 lisa sales 0 Feb 6 10:06 file1
Etter å ha endret den gjeldende primærgruppen, vil alle nye filer opprettet av brukeren få denne gruppen som gruppeeier. For å gå tilbake til den opprinnelige innstillingen for primærgruppen, bruk exit.
For å kunne bruke kommandoen newgrp, må brukeren være medlem av den gruppen han ønsker å bruke som primær. I tillegg kan gruppepassordet brukes for gruppen ved hjelp av kommandoen gpasswd. Hvis brukeren bruker kommandoen newgrp, men ikke er medlem av målgruppen, vil skjellen be om gruppepassordet. Etter å ha skrevet inn det riktige gruppepassordet, vil den nye effektive primærgruppen bli satt.
Administrere primære rettigheter
Linuxs tillatelsessystem ble oppfunnet på 1970-tallet. Siden databehovene var begrenset på den tiden, var det grunnleggende tillatelsessystemet ganske begrenset. Dette tillatelsessystemet bruker tre tillatelser som kan brukes på filer og kataloger. I denne delen vil du lære hvordan du bruker og endrer disse tillatelsene.
Forstå rettighetene for lesing, skriving og utføring
De tre grunnleggende tillatelsene lar deg lese, skrive og utføre filer. Effekten av disse tillatelsene er forskjellig når de brukes på filer eller kataloger. Når det gjelder en fil, gir lese-tillatelsen deg rett til å åpne filen for lesing. Følgelig kan du lese innholdet, men det betyr at datamaskinen din kan åpne filen for å gjøre noe med den.
Et program som trenger tilgang til et bibliotek, må for eksempel ha lese-tilgang til dette biblioteket. Dette betyr at lese-tillatelsen er den mest grunnleggende tillatelsen du trenger for å arbeide med filer.
Når det gjelder en katalog, tillater lesing at du viser innholdet i denne katalogen. Du må vite at denne tillatelsen ikke lar deg lese filer i katalogen. Linuxs tillatelsessystem kjenner ikke til arv, og den eneste måten å lese en fil på, er å bruke lese-tillatelser for den filen.
Som du sannsynligvis kan gjette, gir skrivetillatelse, når den er anvendt på en fil, mulighet til å skrive til filen. Med andre ord, det tillater endring av innholdet i eksisterende filer. Imidlertid tillater det ikke å opprette eller slette nye filer eller endre rettighetene til filen. For dette må du gi skrivetillatelse til katalogen der du ønsker å opprette filen. I kataloger tillater denne tillatelsen også opprettelse og sletting av nye underkataloger.
Kjøringstillatelse er det du trenger for å kjøre en fil. Den vil aldri bli satt som standard, noe som gjør Linux praktisk talt immun mot virus. Bare noen med skrivetillatelser på katalogen kan anvende kjøringstillatelse.
Nedenfor oppsummeres bruken av de grunnleggende tillatelsene:

Bruk av chmod
For å administrere rettighetene brukes kommandoen chmod. Ved bruk av chmod kan du sette tillatelser for bruker (user), gruppe (group) og andre (other). Du kan bruke denne kommandoen i to moduser: relativ modus og absolutt modus. I absolutt modus brukes tre sifre for å sette grunnleggende tillatelser.

Når du setter opp tillatelser, beregn verdien du trenger. Hvis du ønsker å sette lesing, skriving og kjøring for brukeren, lesing og kjøring for gruppen, samt lesing og kjøring for andre i filen /somefile, så bruker du følgende kommando: chmod:
chmod 755 /somefileNår du bruker chmod på denne måten, vil alle nåværende tillatelser bli erstattet av de tillatelsene du har satt.
Hvis du ønsker å endre tillatelsene i forhold til de nåværende tillatelsene, kan du bruke chmod i relativ modus. Når du bruker chmod i relativ modus, arbeider du med tre indikatorer for å angi hva du ønsker å gjøre:
- Først angir du for hvem du ønsker å endre tillatelsene. For dette kan du velge mellom bruker (u), gruppe (g) og andre (o).
- ). Deretter bruker du en operator for å legge til eller fjerne tillatelser fra den nåværende modusen eller setter dem absolutt.
- Til slutt bruker du r, w og x, for å angi hvilke tillatelser du ønsker å sette.
Når du endrer tillatelser i relativ modus, kan du hoppe over delen «til hvem» for å legge til eller fjerne tillatelser for alle objekter. For eksempel, denne kommandoen legger til kjør-tillatelse for alle brukere:
chmod +x somefileNår du jobber i relativ modus kan du også bruke mer komplekse kommandoer. For eksempel, denne kommandoen legger til skrive-tillatelse for gruppen og fjerner lesetillatelse for andre:
chmod g+w,o-r somefileNår du bruker chmod -R o+rx /data du setter kjør-tillatelse for alle kataloger, samt for filer i katalogen /data. For å sette kjør-tillatelse kun for kataloger, og ikke for filer, bruk chmod -R o+ rX /data.
Store bokstaven X sikrer at filer ikke får kjør-tillatelse hvis filen allerede ikke har kjør-tillatelse for enkelte objekter. Dette gjør X til en mer fornuftig måte å håndtere kjør-tillatelser på; det vil unngå å sette denne tillatelsen på filer der den ikke er nødvendig.
Utvidede rettigheter
I tillegg til de grunnleggende tillatelsene du nettopp har lest om, finnes det også et sett med utvidede rettigheter i Linux. Dette er ikke tillatelsene du setter som standard, men noen ganger gir de et nyttig tillegg. I denne delen vil du lære hva de er og hvordan du konfigurerer dem.
Forstå utvidede rettigheter SUID, GUID og sticky bit
Det finnes tre avanserte tillatelser. Den første er tillatelsen til å sette bruker-ID (SUID). I noen spesielle tilfeller kan du bruke denne tillatelsen på kjørbare filer. Som standard kjører brukeren som kjører den kjørbare filen denne filen med sine egne tillatelser.
For vanlige brukere betyr dette vanligvis at bruken av programmet blir begrenset. Men i noen tilfeller trenger brukeren spesielle tillatelser, kun for å utføre en bestemt oppgave.
La oss for eksempel vurdere en situasjon der brukeren må endre passordet sitt. For dette må brukeren skrive sitt nye passord i filen /etc/shadow. Men denne filen er ikke tilgjengelig for skriving for brukere uten root-tilgang:
root@hnl ~]# ls -l /etc/shadow
----------. 1 root root 1184 Apr 30 16:54 /etc/shadow
SUID-rettigheten gir en løsning på dette problemet. I verktøyet /usr/bin/passwd er denne rettigheten vanligvis aktivert som standard. Det betyr at når et passord byttes, får brukeren midlertidig root-rettigheter, noe som lar dem skrive til filen /etc/shadow. Du kan se SUID-rettigheten med ls -l som s på plassen der du vanligvis forventer å se x for brukerrettigheter:
[root@hnl ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 32680 Jan 28 2010 /usr/bin/passwd
SUID-rettigheten kan virke nyttig (og i noen tilfeller er den det), men samtidig er den potensielt farlig. Feil bruk kan utilsiktet gi root-rettigheter. Derfor anbefaler jeg å bruke den med maksimal forsiktighet.
De fleste administratorer vil aldri måtte bruke den; du vil bare se den i noen filer der operativsystemet må sette den som standard.
Den andre spesielle rettigheten er gruppe-ID (SGID). Denne rettigheten har to effekter. Når den brukes på en kjørbar fil, gir den brukeren som kjører filen, rettigheter til eieren av gruppen av denne filen. På denne måten kan SGID utføre mer eller mindre det samme som SUID. Men til dette formålet er SGID praktisk talt ikke brukt.
Som med SUID-rettigheten, anvendes SGID på noen systemfiler som standardinnstilling.
Når den brukes på en katalog, kan SGID være nyttig, fordi du kan bruke den til å sette standard gruppeeier for filer og underkataloger som opprettes i denne katalogen. Som standard, når en bruker oppretter en fil, settes deres effektive primærgruppe som gruppeeier for denne filen.
Dette er ikke alltid veldig nyttig, spesielt fordi brukere av Red Hat/CentOS har som standard gruppe satt en gruppe med samme navn som brukeren, og som brukeren er den eneste medlemmen av. Dermed vil som standard filene som opprettes av brukeren, være gruppert for offentlig tilgang.
Tenk deg en situasjon der brukerene linda og lori arbeider i regnskapsavdelingen og er medlemmer av gruppen accountSom standard er disse brukerne medlemmer av en privat gruppe, hvor de er de eneste medlemmene. Imidlertid er begge brukerne medlemmer av gruppen account, men også som sekundær gruppe.
Standard situasjonen er at når noen av disse brukerne oppretter en fil, blir den primære gruppen eier av filen. Derfor kan ikke linda få tilgang til filer opprettet av lori, og omvendt. Men hvis du oppretter et delt gruppebibliotek (for eksempel /groups/account) og sørger for at SGID-rettigheten er anvendt på dette biblioteket og at gruppebrukeren er satt som gruppeeier for dette biblioteket, vil alle filer opprettet i dette biblioteket og alle sine underbiblioteker også få account-gruppen som standard gruppeeier.
Av denne grunn er SGID-rettigheten en veldig nyttig rettighet å sette på felles gruppbiblioteker.
SGID-rettigheten vises i utdataene ls -l som s på stedet der du vanligvis finner gruppeutførelsesrettigheten:
[root@hnl data]# ls -ld account
drwxr-sr-x. 2 root account 4096 Apr 30 21:28 account
Den tredje av de spesielle rettighetene er sticky bit. Denne rettigheten er nyttig for å beskytte filer mot utilsiktet sletting i et miljø der flere brukere har skrivetilgang til samme bibliotek. Hvis sticky bit er brukt, kan en bruker slette en fil bare hvis de er filens eier eller eier av biblioteket som inneholder filen. Av den grunn er den brukt som standard rettighet for biblioteket /tmp og kan også være nyttig for felles gruppebiblioteker.
Uten sticky bit, hvis en bruker kan opprette filer i et bibliotek, kan de også slette filer fra dette biblioteket. I et offentlig gruppeprogrammiljø kan dette være irriterende. Tenk deg brukerne linda og lori som begge har skrivetilgang til biblioteket /data/account og får disse rettighetene takket være sin deltakelse i account-gruppen. Derfor kan linda slette filer opprettet av lori, og omvendt.
Når du bruker sticky bit, kan en bruker slette filer bare hvis ett av følgende forhold er oppfylt:
- Brukeren er eier av filen;
- Brukeren er eier av biblioteket der filen ligger.
Når du bruker ls -l, kan du se sticky bit som t i posisjonen der du vanligvis ser tillatelse til å utføre for andre:
[root@hnl data]# ls -ld account/
drwxr-sr-t. 2 root account 4096 Apr 30 21:28 account/
Anvendelse av utvidede rettigheter
For å bruke SUID, SGID og sticky bit, kan du også bruke chmod. SUID har en numerisk verdi på 4, SGID har en numerisk verdi på 2, og sticky bit har en numerisk verdi på 1.
Hvis du ønsker å bruke disse tillatelsene, må du legge til et firesifret argument i chmod, den første sifren refererer til spesielle tillatelser. Følgende linje, for eksempel, vil legge til SGID-tillatelse til katalogen og sette rwx for bruker og rx for gruppe og andre:
chmod 2755 /somedirDette er ganske upraktisk hvis du trenger å se de nåværende tilgangsrettighetene som er satt, før du jobber med chmod i absolutt modus. (Du risikerer å overskrive tillatelsene hvis du ikke gjør det.) Derfor anbefaler jeg å jobbe i relativ modus hvis du trenger å bruke noen av de spesielle tillatelsene:
- For SUID bruk chmod u+s.
- For SGID bruk chmod g+s.
- For sticky bit bruk chmod +t, og deretter filnavnet eller katalogen du ønsker å sette tillatelser på.
I tabellen oppsummeres alt som er viktig å vite om administrering av spesielle tillatelser.

Eksempel på arbeid med spesielle rettigheter
I dette eksemplet bruker du spesielle tillatelser for å gjøre det lettere for gruppemedlemmer å dele filer i katalogen for felles gruppe. Du setter ID-biten for den etablerte gruppeidentifikatoren, samt sticky bit, og ser at etter installasjonen legges funksjoner til som letter samarbeidet mellom gruppemedlemmene.
- Åpne terminalen der du er brukeren linda. Du kan opprette brukeren med kommandoen useradd linda, legg til passordet passwd linda.
- Opprett katalogen /data i rot og underkatalogen /data/sales med kommandoen mkdir -p /data/sales. Utfør cd /data/sales, for å gå til sales-katalogen. Utfør touch linda1 og touch linda2, for å opprette to tomme filer, der eieren er linda.
- Utfør su — lisa for å bytte den nåværende brukeren til bruker lisa, som også er medlem av gruppen sales.
- Utfør cd /data/sales og fra denne katalogen utfør ls -l. Du vil se to filer som ble opprettet av brukeren linda og tilhører gruppen linda. Utfør rm -f linda*. Dette vil slette begge filene.
- Utfør touch lisa1 og touch lisa2, for å opprette to filer som tilhører brukeren lisa.
- Utfør su — for å heve privilegiene dine til root-nivå.
- Utfør chmod g+s,o+t /data/sales, for å sette gruppeidentifikatorbiten (GUID) og sticky bit i den delte gruppen katalogen.
- Utfør su — linda. Deretter utfører du touch linda3 og touch linda4. Nå skal du se at de to filene du har opprettet tilhører gruppen sales, som eier gruppen til katalogen /data/sales.
- Utfør rm -rf lisa*. Sticky bit forhindrer at disse filene slettes på vegne av brukeren linda, siden du ikke er eier av disse filene. Vær oppmerksom på at hvis brukeren linda er eier av katalogen /data/sales, kan han/hun likevel slette disse filene!
ACL-styring (setfacl, getfacl) i Linux
Selv om de utvidede rettighetene som ble diskutert ovenfor gir nyttig funksjonalitet for hvordan Linux håndterer tillatelser, tillater de deg ikke å gi tillatelser til mer enn én bruker eller én gruppe i en enkelt fil.
Tilgangskontrollister tilbyr denne funksjonen. I tillegg lar de administratorer sette standard tillatelser på en komplisert måte, der angitte tillatelser kan variere mellom forskjellige kataloger.
Forståelse av ACL
Selv om ACL-subsystemet legger til utmerket funksjonalitet på serveren din, har det én ulempe: ikke alle verktøy støtter det. Følgelig kan du miste ACL-innstillingene når du kopierer eller flytter filer, og programvare for sikkerhetskopiering kan hende at den ikke sikkerhetskopierer ACL-innstillingene.
Verktøyet tar støtter ikke ACL. For å sikre at ACL-innstillingene ikke går tapt når du lager en sikkerhetskopi, bruk star i stedet for tar. star den fungerer med de samme alternativene som tar; den legger bare til støtte for ACL-innstillinger.
Du kan også sikkerhetskopiere ACL med getfacl, som kan gjenopprettes med kommandoen setfacl. For å lage en sikkerhetskopi, bruk getfacl -R /directory > file.acls. For å gjenopprette innstillingene fra sikkerhetskopifilen, bruk setfacl --restore=file.acl.
Manglende støtte fra noen verktøy bør ikke være et problem. ACL-lister brukes ofte på kataloger som en strukturell måling, ikke på enkeltfiler.
Derfor vil det ikke være mange, bare noen få, brukt på smarte steder i filsystemet. Følgelig er det ganske enkelt å gjenopprette de opprinnelige ACL-listene du jobbet med, selv om sikkerhetskopieringsprogramvaren din ikke støtter dem.
Forberede filsystemet for ACL
Før du begynner å jobbe med ACL, kan det være nødvendig å forberede filsystemet for å støtte ACL. Siden metadataene til filsystemet må utvides, er det ikke alltid standard støtte for ACL i filsystemet. Hvis du får meldingen 'operasjonen støttes ikke' når du konfigurerer ACL-listene for filsystemet, kan det hende at filsystemet ditt ikke har støtte for ACL.
For å fikse dette, må du legge til alternativet acl mount i filen /etc/fstab, slik at filsystemet blir montert med støtte for ACL som standard.
Endre og se ACL-innstillinger med setfacl og getfacl
For å sette ACL, trenger du kommandoen setfacl. For å se de nåværende ACL-innstillingene, trenger du getfacl. Kommandoen ls -l viser ingen eksisterende ACL; det viser bare et + etter tillatelseslisten, som indikerer at ACL-listene anvendes på filen.
Før du konfigurerer ACL-listene, er det alltid nyttig å vise de nåværende ACL-innstillingene med getfacl. Nedenfor kan du se de nåværende tilgangsrettighetene, som vist med ls -l, samt som vist med getfacl. Hvis du ser nøye etter, vil du se at informasjonen som vises er nøyaktig lik.
[root@server1 \/]# ls -ld \/dir\ndrwxr-xr-x. 2 root root 6 Feb 6 11:28 \/dir
[root@server1 \/]# getfacl \/dir
getfacl: Fjerner ledende '\/ ' fra absolutte stinavn
# fil: dir
# eier: root
# gruppe: root
user::rwx
group::r-x
other::r-x
Som et resultat av å kjøre kommandoen getfacl kan du nedenfor se at tillatelsene vises for tre forskjellige objekter: bruker, gruppe og andre. Nå la oss legge til ACL for å gi leserett og kjørrett til gruppen sales. Kommandoen for dette er setfacl -m g:sales:rx \/dir. I denne kommandoen -m angir at de nåværende ACL-innstillingene må endres. Deretter g:sales:rx forteller kommandoen å sette ACL for leserett og kjørrett (rx) for gruppen (g) sales. Nedenfor kan du se hvordan kommandoen ser ut, samt utdataene fra kommandoen getfacl etter å ha endret de nåværende ACL-innstillingene.
[root@server1 \/]# setfacl -m g:sales:rx \/dir
[root@server1 \/]# getfacl \/dir
getfacl: Fjerner ledende '\/ ' fra absolutte stinavn
# fil: dir
# eier: root
# gruppe: root
user::rwx
group::r-x
group:sales:r-x
mask::r-x
other::r-x
Nå som du forstår hvordan du setter opp gruppe-ACL, er det lett å forstå ACL for brukere og andre brukere. For eksempel, kommandoen setfacl -m u:linda:rwx /data gir tillatelser til brukeren linda i katalogen /data, uten å gjøre henne til eier og uten å endre tildelingen til nåværende eier.
Laget setfacl har mange muligheter og alternativer. Ett alternativ er spesielt viktig, parameteret -R. Når det brukes, gjør alternativet konfigurasjonen av ACL for alle filer og underkataloger som for øyeblikket eksisterer i katalogen der du setter opp ACL. Det anbefales alltid å bruke dette alternativet når du endrer ACL-lister for eksisterende kataloger.
Jobbe med standard ACL
En av fordelene med å bruke ACL-lister er at du kan gi tillatelser til flere brukere eller grupper i katalogen. En annen fordel er at du kan aktivere arv når du jobber med standard ACL.
Ved å sette opp standard-ACL setter du tillatelsene som vil brukes på alle nye elementer som opprettes i katalogen. Vær oppmerksom på at standard-ACL ikke endrer tillatelsene for eksisterende filer og underkataloger. For å endre dem må du også legge til en vanlig ACL!
Dette er viktig å vite. Hvis du ønsker å bruke ACL for å konfigurere tilgang for flere brukere eller grupper til den samme katalogen, må du sette opp ACL to ganger. Først bruk setfacl -R -m, for å endre ACL for nåværende filer. Deretter bruk setfacl -m d:, for å ta hånd om alle nye elementer som også vil bli opprettet.
For å sette opp standard-ACL trenger du bare å legge til alternativet d etter alternativet -m (rekkefølgen er viktig!). Så bruk setfacl -m d:g:sales:rx /data, hvis du vil at salgsgruppen skal kunne lese og utføre alt som noen gang blir opprettet i katalogen /data.
Når du bruker standard ACL-lister kan det også være nyttig å sette opp ACL for andre. Vanligvis gir dette ikke så mye mening, fordi du også kan endre tillatelser for andre ved å bruke chmod. Men hva du ikke kan gjøre med hjelp av chmod, dette er å spesifisere rettighetene som skal gis til andre brukere for hver ny fil som noensinne vil bli opprettet. Hvis du ønsker at andre ikke skal ha noen rettigheter til noe som er opprettet i /data, for eksempel, bruk setfacl -m d:o::- /data.
ACL og vanlige rettigheter er ikke alltid godt integrert. Problemer kan oppstå hvis du har anvendt ACL som standard på en katalog, deretter har elementer blitt lagt til denne katalogen, og så prøver du å endre de vanlige rettighetene. Endringer som gjøres på de vanlige rettighetene vil ikke bli godt reflektert i ACL-gjennomgangen. For å unngå problemer, først sett de vanlige rettighetene, deretter sett ACL som standard (og prøv deretter å unngå å endre dem igjen).
Eksempel på administrasjon av utvidede rettigheter ved hjelp av ACL
I dette eksempelet vil du fortsette arbeidet med katalogene /data/account og /data/sales, som du opprettet tidligere. I de forrige eksemplene har du sikret at gruppen sales har rettigheter til /data/sales, og gruppen account har rettigheter til /data/account.
Først må du sørge for at gruppen account får lese rettigheter i katalogen /data/sales, mens gruppen sales får lese rettigheter i katalogen /data/account.
Deretter setter du de standard ACL-listene for å sikre at alle nye filer får riktig oppsett av rettigheter for alle nye elementer.
- Åpne terminalen.
- Utfør setfacl -m g:account:rx /data/sales og setfacl -m g:sales:rx /data/account.
- Utfør getfacl, for å sørge for at tilgangsrettighetene er satt som ønsket.
- Utfør setfacl -m d:g:account:rwx,g:sales:rx /data/sales, for å sette ACL som standard for katalogen sales.
- Legg til ACL som standard for katalogen /data/account, ved å bruke setfacl -m d:g:sales:rwx,g:account:rx /data/account.
- Sørg for at ACL-innstillingene fungerer ved å legge til en ny fil i /data/sales. Kjør touch /data/sales/newfile og kjør getfacl /data/sales/newfile for å kontrollere de nåværende rettighetene.
Sette standard rettigheter med umask
Ovenfor har du lært hvordan du arbeider med standard ACL. Hvis du ikke bruker ACL, er det en skallparameter som bestemmer standardrettighetene du får: umask (omvendt maske). I dette avsnittet vil du lære hvordan du endrer standardrettighetene med umask.
Du har sannsynligvis lagt merke til at når du oppretter en ny fil, settes det noen standardrettigheter. Disse rettighetene bestemmes av innstillingen umaskDenne skallparameteren brukes for alle brukere når de logger inn. I parameteren umask brukes et numerisk verdi som trekkes fra de maksimale tillatelsene som kan settes automatisk for en fil; det maksimale innstillingen for filer er 666, og for kataloger er det 777.
Imidlertid gjelder noen unntak fra denne regelen. Du kan finne en fullstendig oversikt over innstillingene umask i tabellen nedenfor.
Av tallene som brukes i umask, som i tilfelle av numeriske argumenter for kommandoen chmod, refererer det første tallet til brukerens tillatelser, det andre tallet refererer til gruppens tillatelser, og det siste gjelder standardtillatelser for andre. Verdien umask som standard 022 gir 644 for alle nye filer og 755 for alle nye kataloger opprettet på serveren din.
Full oversikt over alle numeriske verdier umask og deres resultater i tabellen nedenfor.

En enkel måte å se hvordan umask-parameteret fungerer, er som følger: start med standardtillatelser for en fil satt til 666, og trekk fra umask for å få gjeldende tillatelser. Gjør det samme for katalogen og dens standardtillatelser 777.
Det finnes to måter å endre umask-innstillingen på: for alle brukere og for enkeltbrukere. Hvis du ønsker å sette umask for alle brukere, må du sørge for at umask-parameteren vurderes ved oppstart av skallmiljøfilene, som angitt i /etc/profile. Den riktige tilnærmingen er å opprette et skallskript med navnet umask.sh i katalogen /etc/profile.d og spesifisere umask-verdien du ønsker å bruke i dette skallskriptet. Hvis umask endres i denne filen, gjelder det for alle brukere etter innlogging på serveren.
Et alternativ til å sette umask via /etc/profile og tilknyttede filer, der det gjelder for alle brukere som logger inn, er å endre umask-innstillingene i en fil med navnet .profile, som opprettes i hjemmeområdet til hver bruker.
Innstillingene som er brukt i denne filen, gjelder kun for den enkelte brukeren; derfor er dette en god metode hvis du trenger mer detaljert kontroll. Jeg personlig liker denne funksjonen for å endre standard umask-verdi for root-brukeren til 027, mens vanlige brukere opererer med standard umask 022.
Jobbing med utvidede brukerattributter
Dette er den avsluttende delen om rettigheter i Linux.
Når det gjelder tillatelser, er det alltid en forbindelse mellom objektet, enten det er en bruker eller en gruppe, og tillatelsene som disse objektene har for en fil eller katalog. En alternativ metode for å beskytte filer på en Linux-server er å jobbe med attributter.
Attributtene utfører sitt arbeid uavhengig av brukeren som får tilgang til filen.
Som med ACL, kan det være nødvendig å aktivere parameteren mount.
user_xattr . Hvis du mottar meldingen «operasjon ikke støttet» mens du arbeider med utvidede brukerattributter, må du sørge for å sette parametereni filen /etc/fstab. mount Mange attributter er dokumentert. Noen attributter er tilgjengelige, men er ennå ikke implementert. Ikke bruk dem; de vil ikke gi deg noe.
Nedenfor er de mest nyttige attributtene som du kan bruke:
Dette attributtet garanterer at tilgangstiden til filen ikke endres.
A Normalt, hver gang en fil åpnes, må tilgangstiden registreres i filens metadata. Dette påvirker ytelsen negativt; derfor kan attributtet
brukes for å deaktivere denne funksjonen for filer med regelmessig tilgang. A Dette attributtet tillater å legge til filer, men ikke å slette dem.
a Hvis du bruker et filsystem som støtter komprimering på volumesnivå, garanterer dette filattributtet at filen blir komprimert ved første aktivering av komprimeringsmekanismen.
med Dette attributtet garanterer at endringer i filer skrives til disk umiddelbart, i stedet for å bli bufret først. Dette er et nyttig attributt for viktige databaser, som sikrer at de ikke går tapt mellom filbufret og harddisken.
D Dette attributtet garanterer at filen ikke blir inkludert i sikkerhetskopier når dump-verktøyet brukes.
d Dette attributtet aktiverer indeksering for katalogen den er aktivert i. Dette gir raskere tilgang til filer for primitive filsystemer, som Ext3, som ikke bruker en B-tree database for rask filtilgang.
I Dette attributtet aktiverer indeksering for katalogen der den er aktivert. Dette gir raskere tilgang til filer for primitive filsystemer som Ext3, som ikke bruker B-tree database for rask tilgang til filer.
i Denne attributten gjør filen uforanderlig. Dermed kan ingen endringer gjøres i filen, noe som er nyttig for filer som trenger ekstra beskyttelse.
j Denne attributten garanterer at filen i filsystemet ext3 først skrives til journalen, og deretter til datablokker på harddisken.
s Skriv over blokkene der filen ble lagret med 0 etter sletting av filen. Dette sikrer at gjenoppretting av filen ikke er mulig etter at den er slettet.
u Denne attributten lagrer informasjon om sletting. Dette lar deg utvikle et verktøy som arbeider med denne informasjonen for å redde slettede filer.
Hvis du vil bruke attributter, kan du bruke kommandoen chattr. For eksempel, bruk chattr +s somefile, for å bruke attributter til somefile. Vil du fjerne attributten? Så bruk chattr -s somefile, så vil den bli fjernet. For å få en oversikt over alle attributtene som for øyeblikket er brukt, bruk kommandoen lsattr.
Sammendrag
I denne artikkelen har du lært hvordan du arbeider med tillatelser. Du har lest om de tre grunnleggende tillatelsene, utvidede tillatelser, og hvordan du bruker ACL-lister i filsystemet. Du har også lært hvordan du bruker umask-parameteren for å anvende standard tillatelser. På slutten av denne artikkelen har du lært hvordan du bruker brukerdefinerte utvidede attributter for å gi et ekstra sikkerhetsnivå til filsystemet.
Hvis du likte denne oversettelsen, vær så snill å skrive om dette i kommentarfeltet. Det vil gi mer motivasjon til å lage nyttige oversettelser.
I artikkelen har jeg rettet noen tastefeil og grammatiske feil. Jeg har delt opp noen klumpete avsnitt til mindre for bedre lesbarhet.
I stedet for «Bare noen med administrative rettigheter på katalogen kan anvende tillatelse for kjøring.» rettet jeg til «Bare noen med skrivetilgang på katalogen kan anvende tillatelse for kjøring.», noe som vil være mer korrekt.
Takk for tilbakemeldingen .
Erstattet:
Hvis du ikke er eier av filen, vil shell sjekke om du er medlem av gruppen som også kalles filens gruppe.Til:
Hvis du ikke er eieren av filen, vil skallet sjekke om du er medlem av gruppen som har tillatelser til denne filen. Hvis du er medlem av den gruppen, får du tilgang til filen med de tillatelsene som er satt for gruppen, og skallet stopper videre sjekking.Takk for kommentaren
Kilde: habr.com
