chmod er et dataprogram til å endre filers rettigheter i et Unix-filsystem (av engelskchange 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
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:
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
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:
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
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.