Forstå Chmod-rettigheter: Slik Leser Du 755, 644 og 600
Chmod 755 betyr at eieren av filen kan lese, skrive og kjøre den, mens gruppen og alle andre kun kan lese og kjøre den, ikke endre den. Hvert av de tre sifrene i et chmod-tall dekker én brukerklasse, eier, gruppe, andre, og hvert siffer bygges opp av tre bit: lese, skrive, kjøre.
Slik bygges ett oktalt siffer
Hver brukerklasse har tre mulige rettighetsbit: lese (verdi 4), skrive (verdi 2), kjøre (verdi 1). Legg sammen bitene som er aktive, så får du klassens eget siffer, et tall fra 0 til 7.
- 4 = kun lesing
- 6 = lesing + skriving (4 + 2)
- 5 = lesing + kjøring (4 + 1)
- 7 = lesing + skriving + kjøring (4 + 2 + 1)
- 0 = ingen rettigheter
En chmod-kommando lister opp tre slike sifre etter hverandre, alltid i samme rekkefølge: eier, gruppe, andre. chmod 750 fil betyr da 7 for eieren (les, skriv, kjør), 5 for gruppen (les, kjør), 0 for andre (ingenting). Ingen utenatlæring nødvendig, bare legg sammen bitene som gjelder for hver klasse.
Eksempler du faktisk møter i praksis
| Command | Octal | Symbolic | Typical use |
|---|---|---|---|
| chmod 600 file | 600 | rw------- | SSH-privatnøkkel (id_rsa), .env-fil / hemmeligheter |
| chmod 644 file | 644 | rw-r—r— | Vanlig fil (HTML, config, logg), eieren redigerer, alle leser |
| chmod 700 dir | 700 | rwx------ | Privat mappe kun eieren kan gå inn i |
| chmod 755 script.sh | 755 | rwxr-xr-x | Offentlig skript eller mappe, eieren redigerer, alle kan kjøre/gå inn |
| chmod 775 dir | 775 | rwxrwxr-x | Delt team-mappe, eier og gruppe kan skrive |
| chmod 777 file | 777 | rwxrwxrwx | Alle kan lese, skrive, kjøre, unngå dette, sikkerhetsrisiko |
Regn selv gjennom en av radene: 755 gir eier = 4+2+1 = 7 (rwx), gruppe = 4+0+1 = 5 (r-x), andre = 4+0+1 = 5 (r-x), som blir nøyaktig rwxr-xr-x. Samme logikk holder for hver rad i tabellen.
Én ting som forvirrer mange når det gjelder mapper spesifikt: en mappe trenger sin execute-bit for å kunne åpnes med cd, og sin read-bit for å kunne listes med ls. En mappe som er lesbar men ikke kjørbar (for eksempel 644 på en mappe) lar enkelte verktøy vise navnene på det som ligger inni, men du kan verken gå inn med cd eller kjøre stat på filene, siden det er execute-biten som faktisk styrer tilgang til å traversere en mappe. Les og kjør gjør altså to forskjellige jobber på en mappe sammenlignet med på en vanlig fil.
To ulike ting som begge kalles “symbolsk”
Her blander mange forklaringer sammen to helt forskjellige ting som begge går under navnet “symbolsk”:
Visningsstrengen fra ls -l, som rwxr-xr-x. Dette er det du ser når du lister filer, og det er et absolutt øyeblikksbilde av gjeldende rettigheter, ti tegn: et filtype-flagg etterfulgt av tre grupper med rwx for eier, gruppe og andre. Det er en beskrivelse, ikke en kommando.
Chmods egen symbolske modus-syntaks, som brukes til å endre rettigheter relativt til det de allerede er. I stedet for å angi hele det tresifrede tallet, målretter du en klasse og en bit direkte:
chmod u+x fil.shlegger til kjørerettighet kun for eieren (user), uten å røre gruppe eller andrechmod go-w filfjerner skriverettighet fra gruppe og andre, og lar eieren være urørtchmod a+r filgjør filen lesbar for alle (all)
Forskjellen betyr noe i praksis: oktal modus (chmod 755) setter alltid en absolutt, komplett rettighetstilstand og overskriver det som var der fra før. Symbolsk modus (chmod u+x) gjør en relativ justering av det som allerede står der, uten å påvirke resten. Bruk symbolsk modus når du bare vil endre én bit uten å regne ut hele det tresifrede tallet på nytt for hånd.
Prøv med dine egne rettigheter
| Lese | Skrive | Kjøre | |
|---|---|---|---|
| Eier | |||
| Gruppe | |||
| Andre |
Hvorfor nye filer blir 644 og nye mapper 755 av seg selv
Ingen kjører chmod på hver eneste fil de oppretter, likevel ender nye filer nesten alltid opp som 644 og nye mapper som 755. Det er ikke en tilfeldighet, det er umask som gjør jobben.
Nye filer starter fra en base på 666 (rw-rw-rw-, ingen execute-bit som standard, av sikkerhetshensyn, siden ingen ønsker at hver ny fil automatisk skal være kjørbar). Nye mapper starter fra 777 (rwxrwxrwx). Deretter trekkes shellets umask-verdi fra denne basen. Standard umask på de fleste Linux-systemer er 022, så:
- 666 − 022 = 644 for en helt ny fil
- 777 − 022 = 755 for en helt ny mappe
Det er hele mekanismen bak de to vanligste rettighetsverdiene i tabellen over. Hvis systemet ditt gir noe annet enn 644 og 755 på nyopprettede filer, sjekk umask i shellet, det er nesten alltid satt til en ikke-standard verdi.
Vanlige feil og sikkerhetsaspektet
Chmod 777 er et varsku, ikke en løsning. Å sette en fil eller mappe til 777 gir enhver bruker på systemet, inkludert en angriper som allerede har fått et fotfeste, rettighet til å lese, skrive og erstatte den. En usikker filopplasting kombinert med en 777-mappe er en klassisk vei fra en nettside til et webshell. Sikkerhetsskannere som brukes i WordPress- og hostingrevisjoner flagger 777 rutinemessig som et kritisk funn. Løsningen er nesten alltid 755 for kjørbare filer og mapper, 644 for vanlige filer, og strammet ytterligere inn til 750 eller 640 når det finnes en betrodd gruppe som trenger skrivetilgang, men ikke resten av verden.
SSH nekter å bruke en privatnøkkel som er for åpen. ssh-keygen oppretter privatnøkler med 600 som standard, og OpenSSH håndhever dette aktivt: hvis id_rsa ender opp lesbar for gruppen eller for andre, nekter SSH å bruke den og skriver ut noe i retning av “UNPROTECTED PRIVATE KEY FILE!” sammen med “Permissions 0644 for ‘id_rsa’ are too open.” Dette er ingen kosmetisk advarsel, det er en hard sperre, og det er en av de vanligste grunnene til at en SSH-nøkkel “slutter å fungere” etter å ha blitt kopiert mellom maskiner eller hentet ut av en backup, siden kopiering ofte tilbakestiller rettighetene til noe mer åpent enn 600.
Om setuid, setgid og sticky bit
Chmod-kalkulatoren over dekker det standard tresifrede settet med eier/gruppe/andre, som håndterer de aller fleste tilfellene i praksis. Det den ikke modellerer, er et valgfritt fjerde, ledende siffer for spesielle rettighetsbit: setuid (4000), setgid (2000) og sticky bit (1000), kombinert i moduser som chmod 4755 eller chmod 1777.
Kort forklart: setuid kjører en kjørbar fil med eierens rettigheter i stedet for den som kaller den (det klassiske eksempelet er /usr/bin/passwd, som trenger utvidet tilgang for å oppdatere systemets passordfil), og sticky bit på en mappe alle kan skrive til, som /tmp, hindrer én bruker fra å slette eller gi nytt navn til filer en annen bruker eier der, selv om alle kan skrive til selve mappen.
Ofte stilte spørsmål
Hva betyr chmod 755?
Eieren får lese, skrive og kjøre (7 = 4+2+1). Gruppen og alle andre får kun lese og kjøre, ikke skrive (5 = 4+0+1 hver). I symbolsk form blir det rwxr-xr-x, den vanlige rettigheten for et skript eller en offentlig mappe: eieren kan redigere det, alle andre kan kjøre det eller gå inn i det.
Hva er forskjellen på chmod 644 og 755? 644 fjerner execute-biten helt (rw-r—r—), som er riktig for vanlige filer som HTML, konfigurasjonsfiler eller logger som aldri skal kjøres som et program. 755 beholder execute for alle klasser (rwxr-xr-x), som er det et skript eller en mappe trenger, siden mapper krever execute for i det hele tatt å kunne åpnes. Bruk 644 til data, 755 til alt som skal kjøres eller traverseres.
Hvorfor er chmod 600 så viktig for SSH-nøkler? Fordi OpenSSH sjekker rettighetsbitene på en privatnøkkel før den brukes, og nekter å fortsette hvis nøkkelen kan leses av gruppen eller av andre. 600 (rw-------) betyr at kun filens eier kan lese eller skrive den, som er nøyaktig det en privatnøkkel trenger: ingen andre på systemet skal engang kunne se innholdet.
Er chmod 777 noen gang riktig løsning?
Nesten aldri i produksjon. Det gir full lese-, skrive- og kjøretilgang til enhver bruker på systemet, noe som er en vanlig underliggende årsak til at filopplastinger blir overskrevet med ondsinnet kode. Hvis noe ser ut til å kreve 777 for å fungere, er det egentlige problemet som regel feil fileier eller gruppe, som løses med chown, ikke en grunn til å åpne rettighetene for alle.
Hva er forskjellen på rwxr-xr-x og chmod u+x?
rwxr-xr-x er visningsstrengen fra ls -l, et øyeblikksbilde av den fullstendige rettighetstilstanden akkurat nå. chmod u+x er en kommando som bruker chmods symbolske modus-syntaks til å gjøre en relativ endring, ved å legge til kjørerettighet for eieren uten å røre noe annet. Den ene beskriver hvor rettighetene står nå, den andre er én måte å endre dem på.