chmod
chmod er et dataprogram til å endre filers rettigheter i et Unix-filsystem (av engelsk change mode). Det er et av standardprogrammene i Unix-liknende operativsystemer. Merk at "fil" i Unix-sammenheng betyr en vilkårlig node i mappehierarkiet, for eksempel en mappe eller en vanlig fil. Mange programmeringsspråk har funksjoner som gjør det samme som chmod-programmet, og som typisk også heter chmod.
Filrettigheter i Unix-filsystemer
[rediger | rediger kilde]Filsystemer til bruk i Unix-liknende operativsystemer lagrer et sett av metadata for hver fil, attributter, hvorav rettighetene er de 12 minst signifikante bitene av tallet mode. Bare disse 12 bitene, vist i tabellen nedenfor, kan endres av chmod:
Navn i programmeringsspråket C | Oktal verdi definert i POSIX | Tekstlig representasjon i programmet ls | Forklaring |
---|---|---|---|
S_ISUID | 04000 | ---S------ | Fast bruker (setUID) |
S_ISGID | 02000 | ------S--- | Fast gruppe (setGID) |
S_ISVTX | 01000 | ---------T | Klebrig (sticky) |
S_IRUSR | 00400 | -r-------- | Eier kan lese |
S_IWUSR | 00200 | --w------- | Eier kan skrive |
S_IXUSR | 00100 | ---x------ | Eier kan kjøre |
S_IRGRP | 00040 | ----r----- | Gruppemedlemmer kan lese |
S_IWGRP | 00020 | -----w---- | Gruppemedlemmer kan skrive |
S_IXGRP | 00010 | ------x--- | Gruppemedlemmer kan kjøre |
S_IROTH | 00004 | -------r-- | Andre kan lese |
S_IWOTH | 00002 | --------w- | Andre kan skrive |
S_IXOTH | 00001 | ---------x | Andre kan kjøre |
Betydning
[rediger | rediger kilde]- Hvis en bruker både eier fila og er med i dens gruppe, bestemmes lese- skrive- og kjøretilgangen av en eller-funksjon av det som gjelder for "bruker" og "gruppe".
- Hvis en bruker hverken eier fila eller er med i dens gruppe, gjelder lese- skrive- og kjøretilgangen som gjelder for "andre".
- Kjøretilgangen til en vanlig fil bestemmer om den er et program, eventuelt skript.
- Kjøretilgangen til en mappe bestemmer om den kan søkes gjennom for å finne innholdet.
- Når et program eller skript startes, arver prosessen normalt brukeren og gruppa til personen som startet det, men hvis "fast bruker" eller "fast gruppe" er satt, arves i stedet henholdsvis filas bruker eller gruppe. NB: Linux ignorerer "fast bruker" og "fast gruppe" for skript.
- Når en fil opprettes, arver den normalt brukeren og gruppa til prosessen som opprettet den, men hvis mappa over har "fast bruker" eller "fast gruppe", arves dens bruker og/eller gruppe i stedet. NB: På BSD arves gruppe alltid fra mappa over. På Linux arves bruker aldri fra mappa over.
- Symbolske lenker har alltid alle rettigheter satt, tilgangen til målet bestemmes av målet.
Bruksanvisning
[rediger | rediger kilde]chmod [valg] rettigheter fil1 ...
Bytt ut "rettigheter" med et av følgende 3 alternativer:
- En oktal sum av de oktale verdiene fra tabellen ovenfor. (Sifrene blir de samme selv om man tenker utelukkende i titallsystemet og kanskje ikke har hørt om oktale tall.)
- En komma-separert liste av strenger på formen [ugoa][-+=][rwxXst], for eksempel "u+x,go-r+x". Dette er den eneste måten å endre noen få rettigheter uten å endre alle. Her betyr "a" det samme som "ugo".
- --reference=FIL - Bruk de samme rettighetene som FIL har.
Tips: Kommandoen "ls -l" viser egenskaper til filer, der første kolonne gir en tekstlig representasjon av mode-tallet. Av disse 10 bokstavene består rettighetene av de 9 siste. Nedenfor er et eksempel som viser hvor de 10 bokstavene kommer fra:
type: bruker: gruppe: andre: d rwx rw- r-- 0+4+0+0=4 4+2+1=7 4+2+0=6 4+0+0=4
Eksempler
[rediger | rediger kilde]Sett fast gruppe på "mappe1" og "mappe2" og gjør den skrivbar for bruker og gruppe og lesbar for alle:
chmod 2775 mappe1 mappe2
Gjør "fil1" og "fil2" lesbare og skrivbare (men ikke kjørbare) for alle:
chmod 666 fil1 fil2
Gjør "øvremappe" og alle dens filer (og mapper) i alle undermapper lesbare, og skrivbare for eier:
chmod -R a+r,u+w øvremappe
Fjern alle rettigheter for gruppe og andre til "fil1" og "mappe1" (slik at bare rettigheter for bruker gjenstår):
chmod go-rwx fil1 mappe1
Gjør kun mapper kjørbare, også i alle undermapper:
find øvremappe -type d -exec chmod a+x {} \;
Filrettigheter utenfor chmods kontroll
[rediger | rediger kilde]- Noen filsystemer har ikke Unix-filattributter, for eksempel FAT og NTFS. Unix-drivere for slike filsystemer må emulere disse attributtene. Det er vanlig at attributtene settes via argumenter til mount-kommandoen når filsystemet monteres, uten at de senere kan endres av chmod (hverken varig eller midlertidig).
- Linux støtter utvidede attributter. Disse er strenger av formen navnerom.navn:verdi, og brukes blant annet til å lagre sikkerhetskontekst for SELinux og access control lists.
Se også
[rediger | rediger kilde]- chown – endre eier
- chgrp – endre gruppe
- chattr – endre utvidede attributter
- chdir – endre gjeldende mappe
- chroot – endre gjeldende rotmappe