9.3. Hantera behörigheter
Linux är definitivt ett fleranvändarsystem, så det är nödvändigt att tilhandahålla ett behörighetssystem för att kunna kontroller den mängd tillåtna åtgärder på filer och mappar, vilket omfattar att systemresurser och enheter (i ett Unix-system representeras en enhet av en fil eller mapp). Denna princip är vanlig för alla Unixsystem, men det är alltid nyttig med en påminnelse, speciellt då det finns några intressanta och relativt okända avancerade användarfall.
Varje fil eller katalog har specifika rättigheter för de tre användarkategorierna:
dess ägare (symboliserad av u
som “user”);
dess ägargrupp (symboliserad av g
som i “group”), representerade alla medlemmar i gruppen;
övriga (symboliserad av o
som i “other”).
Tre typer av rättigheter kombineras:
läs (symboliserad av r
som i “read”);
skrivning (eller ändring, symboliserat av w
som i ”write”);
exekvera (symboliserad av x
som i ”eXecute”).
Då det gäller filer är det lätt att förstå dessa rättigheter: läsåtkomst tilåter läsning av innehållet (inklusive kopiering), skrivrättighet tillåter att ändra den, och körrättighet tillåter dig att köra den (vilket endast fungerar om det är ett program).
En katalog hanteras annorlunda. Läsrättigheter ger rätt visa listan av innehåll (filer och kataloger), skrivrättighet möjligör skapandet eller borttagandet av filer, och exekveringsrättighet ger möjlighet att passera genom den (speciellt för att gå där med kommando cd
). Att kunna passera genom en katalog utan att kunna läsa den ger rättigheter till att komma åt poster däri som är kända till namn, men det går inte att finna dem om du inte vet om deras existens med deras exakta namn.
Tre kommandon kontrollerar rättigheterna associerad med en fil:
chown användare fil
ändrar filens ägare;
chgrp grupp fil
ändrar ägargrupp;
chmod rättigheter fil
ändrar filens rättigheter.
Det finns två sätt att presentera rättigheter. Den symboliska representationen är nog den som är enklast att förstå och komma ihåg. Det innebär bokstavsymbolerna som tidigare nämnts. Du kan definiera rättigheter för varje kategori av användare (u
/g
/o
), genom att ange dem explicit (med =
), att lägga till med (+
), eller dra ifrån med (-
). Sålunda ger formeln u=rwx,g+rw,o-r
ägaren läs-, skriv- och ekexveringsrättigheter, lägger till läs och skrivrättigheter för ägargruppen och tar bort läsrättigheter för andra användare. Rättigheter som inte ändras genom tillägg eller borttagning lämnas omodifierade. Bokstaven a
, för “all” täcker alla tre katagorier av användare så att a=rx
ger alla tre katogorerir samma rättigheter ( läsa och exekvera, men inte skriva).
Den oktala representationen associerar varje rättighet med ett värde: 4 för läsning, 2 för skrivning och 1 för körning. Vi associerar varje kombination av rättigheter med summan av siffrorna. Varje värde tilldelas sedan till olika kategorier av användare genom att lägga dem i ordning (ägare, grupp, övriga).
Till exempel kommer kommandot chmod 754 fil
att sätta följande rättigheter: läsa, skriva och exekvera för ägaren (eftersom 7 = 4 + 2 + 1); läsa och exekvera för gruppen ( eftersom 5 = 4 + 1); endast läsa för övriga. 0
betyder inga rättigheter; chmod 600 fil
ger läsa/skriva för ägaren och inga rättigheter för övriga. De vanligaste rättighetskombinationerna är 755
för exekverbara filer och kataloger samt 644
för datafiler.
För att representera speciella rättigheter kan du som sätta ett fjärde tal som prefix, där bitarna för setuid
, setgid
och sticky
är 4, 2 and 1. chmod 4754
kommer att associera biten för setuid
med tidigare beskrivna rättigheter.
Observera att användningen av oktala notation endast tillåter att ange alla rättigheter samtidigt på en fil; du kan inte använda den för att lägga till en ny rättighet, som läsrättighet för gruppägaren, eftersom du måste räkna med befintliga rättigheter och räkna ut nya motsvarande numeriska värden.