9.3. Å håndtere rettigheter
Linux er definitivt et multi-bruker system, så det er nødvendig å gi en 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 det nøyaktige navnet.
Tre kommandoer kontrollerer tillatelser knyttet til en fil:
chown user file
endrer eieren av filen;
chgrp group file
endrer eiergruppen;
chmod rights file
endrer tillatelsene for filen.
Det er to måter å presentere rettighetene. 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
-formulaen eieren lese-, skrive-, og utførings-rettigheter, legger til lese- og skriverettigheter for eiergruppen, og fjerner leserettigheter for andre brukere. Rettigheter som ikke er endret ved tilsetninger eller subtraksjon 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 i den vanlige rekkefølgen (eier, gruppe, andre).
For eksempel chmod 754 file
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 file
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.
Å representere spesielle rettigheter, kan du stille et fjerde siffer foran dette tallet etter samme prinsipp, der setuid
, setgid
og sticky
-bitene er 4, 2 and 1, respektivt. 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.