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.
9.3.1. Owners and Permissions
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»).
Three basic types of rights can be combined:
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 instance, the chmod 754 file
command will set the following rights: read, write and execute for the owner (since 7 = 4 + 2 + 1); read and execute for the group (since 5 = 4 + 1); read-only for others. The 0
(zero) means no rights; thus chmod 600 file
allows for read/write rights for the owner, and no rights for anyone else. The most frequent right combinations are 755
for executable files and directories, and 644
for data files.
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.
9.3.2. ACLs - Access Control Lists
Mange filsystemer, f.eks. Btrfs, Ext3, Ext4, JFS, XFS, osv. støtter bruk av tilgangskontroll-lister (ACL-er). Disse utvider grunnleggende funksjoner for eierskap og tilganger (beskrevet i den forrige delen) og tillater mer finmasket kontroll over hvert objekt (fil). F.eks. Hvis en bruker ønsker å dele en fil med en annen og den brukeren kun skal kunne lese filen, men ikke skrive eller endre den.
For noen filsystemer er bruk av ACL-er påskrudd som forvalg (f.eks. Btrfs, Ext3, Ext4). For andre filsystemer eller eldre systemer må det skrus på ved bruk av acl
-monteringsvalg. Enten i mount
-kommandoen direkte, eller i /etc/fstab
. På samme vis kan bruk av ACL-er skrus av ved bruk av noacl
-monteringsvalget. For Ext*-filsystemer kan man også bruke tune2fs -o [no]acl /dev/enhet
-kommandoen for å skru av/på bruk av ACL-er som forvalg. De forvalgte verdiene for hvert filsystem er vanligvis å finne i deres homonym-manualsider i del 5 (filsystem(5)) eller i mount(8).
After enabling ACLs, permissions can be set using the setfacl(1) command, while getfacl(1) allows one to retrieve the ACLs for a given object or path. These commands are part of the acl package. With setfacl
one can also configure newly created files or directories to inherit permissions from the parent directory. It is important to note that ACLs are processed in their order and that an earlier entry that fits the situation has precedence over later entries.
Hvis en fil har ACL-er satt, vil utdata for ls -l
-kommandoen vise et pluss-tegn etter de tradisjonelle tilgangene. Ved bruk av ACL-er oppfører chmod
seg litt annerledes, og det kan hende at umask
blir ignorert. Den detaljrike dokumentasjonen, f.eks. acl(5) har mer info.