9.3. Håndtering av rettigheter
Linux er definitivt et flerbrukersystem (multi-user system), så det er nødvendig å gi et tillatelsessystem for å kontrollere et sett autoriserte operasjoner på filer og kataloger, for alle systemressurser og enheter (på et Unix-system, er enhver enhet representert ved en fil eller katalog). Dette prinsippet er felles for alle Unix-systemer, men en påminnelse er alltid nyttig, særlig fordi det er noen interessante og relativt ukjente, avanserte bruksmåter.
Hver fil eller katalog har egne tillatelser for tre kategorier av brukere:
dens eier (symbolisert ved u
som i «user»);
dens eiergruppe (symbolisert med g
som i «gruppe»), som representerer alle medlemmene i gruppen;
de andre (symbolisert med o
som i «other»).
Tre typer rettigheter kan kombineres:
lesing (symbolisert med r
som i «read»);
skrive (eller modifisere, symbolisert ved w
som i «write»);
utføre (symbolisert med x
som i «eXecute»).
Når det gjelder en fil, er disse rettighetene lette å forstå: Lesetilgang tillater å lese innhold (inkludert kopiering), skrivetilgang tillater å endre den, og med kjøretilgang kan du kjøre den (som bare vil fungere hvis den er et program).
En katalog håndteres annerledes. Lesetilgang gir rett til å gjennomgå listen over oppføringene (filer og kataloger), skrivetilgang tillater å lage eller slette filer, og utføringstilgang tillater å krysse gjennom den (spesielt å gå dit med cd
-kommandoen). Å kunne krysse gjennom en katalog uten å kunne lese den, gir tillatelse til å gå til de oppføringene som er kjent ved navn, men ikke til å finne dem hvis man ikke vet at de finnes, eller deres nøyaktige navn.
Tre kommandoer kontrollerer tillatelser knyttet til en fil:
chown bruker fil
endrer eieren av filen;
chgrp gruppe fil
endrer eiergruppen;
chmod rettigheter fil
endrer tillatelsene for filen.
Det er to måter å presentere rettighetene på. Blant dem er den symbolske representasjon trolig den enkleste å forstå og huske. Det innebærer bokstavsymboler som nevnt ovenfor. Du kan definere rettigheter for hver kategori av brukere (u
/g
/o
), ved å sette dem eksplisitt (ved =
), ved å legge til (+
), eller trekke fra (-
). Dermed gir u=rwx,g+rw,o-r
-formelen eieren lese-, skrive-, og utføringsrettigheter, legger til lese- og skriverettigheter for eiergruppen, og fjerner leserettigheter for andre brukere. Rettigheter som ikke er endret ved å legge til eller fjerne i en slik kommando, forblir uendret. Bokstaven a
, for «alle», dekker alle tre kategorier brukere, slik at a=rx
gir alle tre kategorier de samme rettigheter (lese og kjøre, men ikke skrive).
Den (åttetalls-) numeriske representasjonen forbinder hver rettighet med en verdi: 4 for lese-, 2 for skrive, og 1 for å utføre. Vi forbinder hver kombinasjon av rettigheter med summen av tallene. Hver verdi blir deretter knyttet til ulike kategorier av brukere ved å sette dem side ved side (end to end)i den vanlige rekkefølgen (eier, gruppe, andre).
For eksempel chmod 754 fil
-kommandoen vil gi de følgende rettigheter: lese, skrive og utføre for eieren (fordi 7 = 4 + 2 + 1); lese og utføre for gruppen (fordi 5 = 4 + 1); bare lese for andre. 0
betyr ingen rettigheter; da chmod 600 fil
tillater lese/skrive-rettigheter for eieren, og ingen rettigheter for noen andre. De hyppigste rettighetskombinasjonene er 755
for kjørbare filer og kataloger, og 644
for datafiler.
For å representere spesielle rettigheter kan du stille et fjerde siffer foran dette tallet etter samme prinsipp, der setuid
, setgid
og sticky
-bitene er henholdsvis 4, 2 og 1. chmod 4754
vil knytte setuid
-biten til den tidligere beskrevne rettigheten.
Merk at bruk av åttetallsystemet bare tillater å sette alle rettigheter samtidig i en fil; du kan ikke bruke den til å bare legge til en ny rett, slik som lesetilgang for gruppens eier, siden du må ta hensyn til eksisterende rettigheter, og beregne ny tilsvarende tallverdi.