Brugere, grupper og filrettigheder er centrale elementer i
sikkerhedsmodellen under Linux (og alle andre implementationer af
Unix). I dag skal vi se på værktøjerne der ændre hvem der ejer en fil,
hvilken gruppen den hører til og hvilke adgangsrettigheder der til
filen.
De tre programmer chown (1), chgrp (1) og
chmod (1), der bruges til henholdsvis at ændre ejer,
gruppetilhørsforhold og adgangsrettigheder til filer, er ret simple og
virker næsten ens. Programmerne har en række fælles flag:
-R
- Udfør ændringen på filer og kataloger rekursivt.
--reference=filnavn
- Tag bruger, gruppe eller adgangsrettigheder fra filen
filnavn
Programmerne kaldes med eventuelle flag, det der skal ændres til
hvis man ikke bruger --reference og de filer der skal
ændres.
chown
chown bruges til at skifte ejer på en fil. For at give
brugeren makholm ejerskabet af filen /tmp/sushi skriver man
følgende:
# chown makholm /tmp/shusi
Man kan også skifte gruppe med samme komando. Dette gøres ved at
sætte gruppenavnet lige efter brugernavnet adskilt af kun et
kolon:
# chown brother:staff /tmp/sushi
Det er kun root der kan skifte ejere af filer.
Advarsel: med --reference ændres både ejer og
gruppetilhørsforhold
chgrp
Skal man kun ændre gruppetilhørsforhold for filen kan man bruge
chgrp . Komandoen virker helt som forventet, hvis man vil
ængre gruppetilhørsforholdet for /tmp/sushi til users skriver
man:
$ chgrp users /tmp/sushi
Man skal ikke være root for at ændre gruppetilhørsforhold for
filer, men man kan selvfølgelig kun bruge grupper man selv
tilhører.
chmod
Nu kan vi sætte bruger- og gruppetilhørsforhold for filer, men skal
de bruges til noget skal vi kikke lidt på adgangsrettigheder.
Adgangsrettigheder er delt op i tre dele: det der gælder for
ejeren, det der gælder for folk i den gruppe filen tilhører og det der
gælder for alle andre. Der er også tre basale rettigheder: om man må
læse filen, om man må skrive i filen og om man må udføre filen.
For kataloger kan betydningen af de basale rettigheder være lidt
spøjs. Har man læserettigheder til et katalog kan man se hvilke filer,
der ligger i kataloget, har man skriverettigheder kan man oprette
filer i kataloget og har man udfør-rettigheder har man adgang til
filer i kataloget. Ved at give folk udfør-rettigheder uden at de har
læserettigheder kan man sikre sig at de kun kan læse filer de på anden
måde ved eksisterer.
Der er også tre specielle rettigheder: sticky, sæt-bruger og
sæt-gruppe. Sticky-rettigheden har lidt forskellig betydning under
forskellige unix'er. Under Linux betyder den ikke noget for
almindelige filer. For kataloger betyder det at kun root
eller ejeren af en fil kan slette filen eller give den et nyt navn,
dette kan ellers gøres af alle med skriverettigheder til
kataloget. Sæt-bruger- og sæt-gruppe-rettighederne gør at man kan
udføre filen som om man var ejeren af filen eller var i den gruppe
filen tilhøre.
Nu ved vi hvad de forskellige rettigheder gør, så lad os se hvordan
vi sætter dem. Vi kan med chmod sætte en række
forskellige rettigheder ved at angive dem på komandolinjen adskilt med
kommaer. De forskellige rettigheder kan angives således:
Først angiver vi hvem rettigheden skal gælde for. Et u
siger at vi ændre på brugerens rettigheder, et g siger at
vi ændre på rettighederne for gruppen og et o betyder at
vi ændre rettigheder for alle andre. Et a angiver at vi
ændre rettigheder for alle brugere, dette er standarden hvis vi ikke
angiver noget. Vi kan skrive flere bogstaver for at få alle de
respektive grupper med.
Så angiver vi om vi skal fjerne rettigheder (- )
tilføje rettigheder (+ ) eller sætte præcis de nævnte
rettigheder (= ).
Tilsidst hvilke rettigheder der er tale om. Læse-, skrive- og
udfør-rettigheder er henholdsvis r , w og
x . Sticky-rettigheden hedder t og sæt-bruger
og sæt-gruppe er s sat for henholdsvis brugeren og
gruppen.
Et par eksempler anskuer det.
Skal man give ejeren af /tmp/sushi ret til at læse, skrive
og udføre filen skriver man følgende:
$ chmod u=rwx,uo=rx /tmp/sushi
Skal man fjerne rettigheden til at udføre /tmp/sushi for
andre end ejeren eller folk i gruppen udføre man følgende:
$ chmod o-x /tmp/sushi
Vi kan sikre os at alle kan udføre filen ved at sætte
udfør-rettigheden for alle:
$ chmod +x /tmp/sushi
Vi kunne have skrevet et a foran +'et, men det er
unødvendigt
Endelig kan vi sætte sæt-bruger-rettigheden:
$ chmod u+s /tmp/sushi
Advarsel 1: Pas på med sæt-bruger- og
sæt-gruppe-rettighederne. De kan give sikkerhedshuller.
Advarsel 2: Pas på med at sætte rettigheder rekursivt. De
specielle måder rettigheder for kataloger fortolkes på kan give
uønskede resultater.
|