Filrettigheter i Unix

Filrettighetene i Unix-lignende systemer følger et enkelt og robust system. Unix-lignende inkluderer bl.a. Mac og Linux, men ikke Windows. Ettersom de fleste webservere kjører Linux, vil man ofte komme borti denne typen filrettigheter når man driver med webutvikling.

Typer rettigheter

Det er tre typer rettigheter som bestemmes:

Read (r): Leserettigheter gir mulighet for å lese en fil. Når leserettigheter er satt på en mappe, gis det rettigheter til å lese navnene på filene i den mappen, men ikke innholdet, filtypen, størrelsen etc.

Write (w): Skriverettigheter gir mulighet for å endre en fil. Når det settes på en mappe gis det rettigheter til å endre oppføringene i mappen, inkl. lage nye filer, slette filer og endre navnene på dem.

Execute (x): Kjørerettigheter gir mulighet for å kjøre en fil. Ikke alle filer er kjørbare, så kjørerettigheter gir bare mening på filer som kan kjøres, inkl. shellscript, og må være satt for at operativsystemet skal kunne tillates å kjøre dem. Når kjørerettigheter settes på en mappe gis det rettigheter til å se filinnhold og metainformasjon på filer man kjenner navnet til, men ikke å liste filer.

Hvem settes rettighetene for?

Hver fil setter lese-, skrive- og kjørerettigheter for tre ulike roller: bruker/eier, gruppe og alle/andre. Alle filer tilegnes en eier og en gruppe.

User (u): Bruker/eier. Dette er brukeren som laget filen (brukeren man var logget inn med når man laget den).

Group (g): Gruppe. Alle brukere har en primærgruppe, på Linux er vanligvis dette en gruppe med samme navn som brukeren, som opprettes automatisk når brukeren opprettes. Grupperettighetene gjelder for primærgruppen til brukeren som laget filen.

Other (o): Alle/andre. Dette er alle andre brukere som ikke er eier eller medlem i gruppen som er satt som eier av filen.

Hvordan vises filrettighetene?

Filrettighetene, som settes på både filer og mapper, angir de tre rettighetstypene for alle tre rollene, og kan presenteres som tekst eller oktalt med tall. I begge presentasjonene kan vi dele rettighetene opp i tre like deler, som hver angir rettighetene til hhv. bruker, gruppe og andre, i den rekkefølgen.

Filrettigheter vist med tekst

Ved tekst beskrives filrettighetene ofte med tre triplets, totalt 9 tegn. De tre første tegnene angir rettighetene til eier, de tre neste til gruppe og de tre siste til andre. Hver triplet representerer lese-, skrive- og kjørerettighet. Hvis bokstavene rwx: r (read), w (write) og x (execute) er synlige betyr det at man har rettigheten. Mangel på rettighet vises som en bindestrek på samme plass.

En filrettighet hvor alle har alle rettigheter, ser dermed slik ut: rwxrwxrwx.

Oppbygning av rettighetene
Oppbygning av rettighetene

De tre første tegnene viser rettighetene til eier, de tre neste tegnene viser rettighetene til gruppe, og de tre siste til andre. Både eier gruppe og andre har både lese-, skrive- og kjørerettigheter.

 

Et annet eksempel på en rettighet: rwxr-xr-x.

Eksempel på filrettigheter

I dette eksemplet har eier (de tre første tegnene) alle rettigheter. De tre neste viser rettighetene til gruppe, r-x  viser at gruppe har leserettigheter og kjørerettigeter, men ikke skriverettigheter. Bindestreken på plassen for w viser at rettigheten ikke er tilstede for å skrive. Rettighetene for andre er den samme som for gruppe.

Andre tegn

I forbindelse med filrettighetene vil man noen ganger se noen ekstra tegn. Sjekker du f.eks. rettighetene til en fil i konsollen i Mac/Linux med kommandoen ls -l , vil det vises et ekstra tegn aller først, som angir om det er en vanlig fil, en mappe eller ulike andre ting. En mappe representeres med tegnet d, mens en vanlig fil representeres med en bindestrek.

Filrettigheter vist i Mac-Terminal
Eksempel på filrettigheter vist i Mac OSX’ Terminal. Her vises i tillegg et plusstegn til slutt, som indikerer at filen har ekstra sikkerhetsinformasjon.

Filrettigheter vist oktalt

Rettighetene presentert med tall er bygd opp på samme måte, med tre siffer som representerer rettighetene til eier, gruppe og andre. Hvert siffer er dermed en kombinasjon av lese-, skrive- og kjørerettighetne og beregnes ut fra at følgende verdier legges sammen:

Kjørerettigheter = 1
Skriverettigheter = 2
Leserettigheter = 4

Mangel på rettighet = 0

Kombinasjonen av disse verdiene gir da et tall fra 0–7. Tallet 5 betyr f.eks. kjørerettigheter (1) + ikke skriverettigheter (0) + leserettigheter (4). Ingen rettigheter gir tallet 0, mens maks rettigheter gir tallet 7.

Brukerrettigheter med tegn og tall
Brukerrettigheter med tegn og tall

Rettighetene for eier, bruker og andre skrives som sagt etter hverandre, så hvis man har en fil med rettighetene 755 betyr dette:

7 = Eier har kjørerettigheter (1) + skriverettigheter (2) + leserettigheter (4)
5 = Gruppe har kjørerettigheter (1) +  ikke skriverettigheter (0) + leserettigheter (4) = 5
5 = Alle har kjørerettigheter (1) +  ikke skriverettigheter (0) + leserettigheter (4) = 5

Oversikt over rettigheter som tall og tekst

Tall Tekst Beskrivelse
0 – – – Ikke leserettigheter (0/-), ikke skriverettigheter (0/-), ikke kjørerettigheter (0/-)
1 – – x Ikke leserettigheter (0/-), ikke skriverettigheter (0/-), kjørerettigheter (1/x)
2 – w – Ikke leserettigheter (0/-), skriverettigheter (2/w), ikke kjørerettigheter (0/-)
3 – w x Ikke leserettigheter (0/-), skriverettigheter (2/w), kjørerettigheter (1/x)
4 r – – Leserettigheter (4/r), ikke skriverettigheter (0/-), ikke kjørerettigheter (0/-)
5 r – x Leserettigheter (4/r), ikke skriverettigheter (0/-), kjørerettigheter (1/x)
6 r w – Leserettigheter (4/r), skriverettigheter (2/w), ikke kjørerettigheter (0/-)
7 r w x Leserettigheter (4/r), skriverettigheter (2/w), kjørerettigheter (1/x)

Endre rettigheter på en fil

For å endre filrettighetene i terminalen kan du bruke kommandoen chmod. Denne kommandoen kan brukes med både tegn og tall, på flere ulike måter. Det enkleste er kanskje å bruke tall. Skriv chmod etterfulgt av filrettighetene som tall etterfulgt av filnavnet du vil endre rettighetene på. Eksempel: chmod 755 eksempel.txt.

For å bruke chmod med tegn kan du skrive f.eks. chmod o+w eksempel.txt, hvor o er hvem det skal gjelde for (o = other), + betyr at man legger til rettigheten, og w er rettighetstypen (write/skriverettighet). Bruk minustegn i stedet for plusstegn for å fjerne en rettighet. Man kan bruke flere roller og rettighetstyper i samme kommando. Utelates rollen, altså hvem det settes rettigheter for, vil det gjelde for alle tre rollene; bruker, gruppe og andre: chmod +w eksempel.txt.

Endre eier på en fil

Eier og filrettighetene fungerer uavhengig av hverandre. Det vil si at om du endrer eier på en fil, så vil filrettighetene forbli uforandret, de vil bare gjelde for en annen bruker enn tidligere.

I terminalen kan du bruke kommandoen chown for å endre eier på en fil. Eksempel: chown username filnavn.txt endrer eier til brukeren username for filen filnavn.txt. Merk at gruppen ikke endres. Vil du endre gruppe settes det etter et kolon etter brukernavnet: chown username:gruppenavn filnavn.txt. Merk at gruppen ikke behøver å være en gruppe som er tilknyttet brukeren som eier filen.

Sudo og root

Brukeren root er en spesiell bruker som er tilstede på de fleste systemer. Den overstyrer alle rettigheter, og enkelte kommandoer krever root-rettigheter for å utføres. I stedet for å logge inn som root og gjøre det som trengs, finnes en egen kommando, sudo, som gir deg root-privilegier uten å hverken logge inn som root eller kjenne passordet til root-brukeren.

Sudo står for super user do, og som navnet indikerer lar det deg utføre noe som en super user (gitt at brukeren din har tillattelse til å kjøre sudo). Støter du borti meldingen “Operation not permitted” eller tilsvarende er det som regel root-privilegier som trengs, og den samme kommandoen kan dermed utføres ved å skrive sudo før kommandoen. Dette krever at du skriver inn passordet for brukeren din, altså ikke passordet for root-brukeren, som en ekstra sikkerhet. Merk at du ikke får noen indikasjoner på tegnene du skriver inn som passord, men dette er slik det skal være. Skriv inn passordet ditt og trykk enter. Hvis du ikke får noen feilmelding, virket det. Når du har skrevet inn passordet for en sudo-kommando en gang, vil det huskes en viss stund, så du slipper å skrive det inn ved neste sudo-kommando hvis det ikke går for lang tid.

Leave a Reply

Your email address will not be published. Required fields are marked *