Förstå chmod-rättigheter: läs och räkna ut octal på 5 minuter
Chmod 755 betyder att ägaren får läsa, skriva och köra filen, medan gruppen och alla andra bara får läsa och köra den, skrivet som rwxr-xr-x. Varje chmod-kommando bygger på tre siffror, en för ägaren, en för gruppen och en för alla andra, där varje siffra är summan av vilka av läs (4), skriv (2) och kör (1) som klassen har.
Så byggs octal-siffran
Unix-rättigheter för en fil eller katalog delas upp i tre klasser: ägare, grupp och övriga. Varje klass kan ha tre typer av åtkomst, och varje typ har ett fast bitvärde:
- läs = 4
- skriv = 2
- kör = 1
Siffran för en klass är helt enkelt summan av de rättigheter klassen har. Full åtkomst (läs, skriv, kör) blir 4 + 2 + 1 = 7. Bara läs och kör blir 4 + 1 = 5. Bara läs blir 4. Ingenting alls blir 0. Ställ tre sådana siffror efter varandra, ägare-grupp-övriga, och du har ett fullständigt octal-läge som 755 eller 644.
Symboliken rwxr-xr-x säger exakt samma sak fast utskrivet: tre tecken per klass, r, w, x om rättigheten finns, - om den saknas. rwxr-xr-x läses som ägare = rwx (7), grupp = r-x (5), övriga = r-x (5), alltså 755.
Vanliga kommandon och vad de gör
| Kommando | Octal | Symbolisk | Typisk användning |
|---|---|---|---|
| chmod 600 file | 600 | rw------- | SSH-privat nyckel (id_rsa), .env-fil eller annan hemlighetsfil |
| chmod 644 file | 644 | rw-r—r— | Vanlig fil (HTML, konfiguration, logg), ägaren redigerar, alla andra läser |
| chmod 700 dir | 700 | rwx------ | Privat mapp som bara ägaren kan gå in i |
| chmod 755 script.sh | 755 | rwxr-xr-x | Publikt skript eller katalog, ägaren redigerar, alla andra kan köra/gå in |
| chmod 775 dir | 775 | rwxrwxr-x | Delad teamkatalog, ägare och grupp kan skriva |
| chmod 777 file | 777 | rwxrwxrwx | Alla kan läsa, skriva och köra, undvik detta, säkerhetsrisk |
Ett värt att notera specialfall gäller kataloger. En katalog behöver sin kör-bit för att man ska kunna gå in i den (cd), och sin läs-bit för att man ska kunna lista innehållet (ls). En katalog som är läsbar men inte körbar kan i vissa verktyg fortfarande visa filnamnen inuti, men det går varken att cd in i den eller läsa filernas metadata (stat) på dem. Det här är en av de vanligaste missförstånden med rättigheter på kataloger.
Två saker som kallas “symbolisk” och inte är samma sak
Det är lätt att blanda ihop två olika betydelser av ordet symbolisk när man pratar om chmod:
Symbolisk visning (ls -l). Strängen rwxr-xr-x som ls -l skriver ut är en ögonblicksbild av rättigheterna precis som de är just nu, samma sak som verktyget på den här sidan visar. Den beskriver ett tillstånd, inte en ändring.
Symboliskt läge i själva chmod. Chmod har också en egen syntax för att ändra rättigheter relativt till vad de redan är, utan att räkna ut hela octal-talet:
chmod u+x file.shlägger till kör-rättighet bara för ägaren (u = user)chmod go-w filetar bort skriv-rättighet från grupp och övriga (go = group + other)chmod a+r filegör filen läsbar för alla (a = all)
Skillnaden är att octal-läget (755) alltid sätter alla nio bitar på en gång, medan det symboliska läget (u+x) bara ändrar det du pekar ut och lämnar resten orört. Båda leder ofta till samma slutresultat, men de fungerar på olika sätt.
Prova med dina egna rättigheter
Skriv in ett octal-tal, en symbolisk sträng eller bygg rättigheterna ruta för ruta nedan, verktyget räknar om till de andra formaten och ger dig ett klart chmod-kommando direkt.
| Läs | Skriv | Kör | |
|---|---|---|---|
| Ägare | |||
| Grupp | |||
| Övriga |
Varför nya filer redan har 644 och nya kataloger 755
Ingen kör chmod på varenda fil man skapar, ändå hamnar nästan alla nyskapade filer på just 644 och kataloger på 755. Förklaringen är umask. Nya filer skapas utifrån en basbehörighet på 666 (rw-rw-rw-, ingen kör-bit alls som standard av säkerhetsskäl), och nya kataloger utifrån 777 (rwxrwxrwx). Från den basen dras sedan skalets umask-värde bort.
Standardvärdet för umask på de flesta Linux-system är 022. Räkna igenom det:
Fil: 666 - 022 = 644
Mapp: 777 - 022 = 755
Det är hela förklaringen till varför en fil du precis skapade med en vanlig textredigerare redan ligger på 644, och en katalog du skapade med mkdir redan ligger på 755, utan att någon rört chmod.
Vanliga misstag och säkerhetsrisker
chmod 777 är nästan aldrig rätt lösning. 777 ger vem som helst på systemet rätt att läsa, skriva och ersätta filen, inklusive en angripare som redan tagit sig in på annat håll. Ett klassiskt exempel är en osäker filuppladdningsfunktion vars mapp har 777, vilket gör det möjligt att ladda upp en skadlig fil och köra den direkt som en webshell. Säkerhetsgranskningar av WordPress-installationer och webbhotell flaggar rutinmässigt 777 som ett kritiskt fynd. Fixen är nästan alltid 755 för körbara filer och kataloger, 644 för vanliga filer, och strama åt till 750 eller 640 när det finns en betrodd grupp att luta sig mot i stället för “alla”.
SSH-nycklar med fel rättigheter blir vägrade. ssh-keygen skapar privata nycklar med 600 som standard, och det är inte kosmetiskt: OpenSSH vägrar aktivt att använda en privat nyckel som är läsbar för grupp eller alla andra. Har du någonsin fått ett fel liknande "Permissions 0644 for 'id_rsa' are too open" eller "UNPROTECTED PRIVATE KEY FILE!" är det exakt det som hänt, och lösningen är chmod 600 på nyckelfilen.
Ärlig avgränsning: setuid, setgid och sticky bit
Kalkylatorn ovan täcker det vanliga trebitssystemet för ägare, grupp och övriga, men det finns en fjärde, ledande siffra som den inte modellerar: de speciella rättighetsbitarna setuid (4000), setgid (2000) och sticky bit (1000), som skrivs till exempel som chmod 4755 eller chmod 1777. Kort sagt: setuid kör ett program med ägarens rättigheter oavsett vem som startar det (klassiskt exempel är /usr/bin/passwd), och sticky bit på en världsskrivbar katalog som /tmp hindrar en användare från att radera en annan användares filer där. Det är ett separat ämne från de tre vanliga siffrorna den här artikeln handlar om.
Vanliga frågor
Vad betyder chmod 755?
Ägaren får läsa, skriva och köra (7 = 4+2+1), medan grupp och övriga bara får läsa och köra (5 = 4+1 vardera). Symboliskt är det rwxr-xr-x. Det är standardläget för publika skript och kataloger där ägaren behöver redigera men alla andra bara ska kunna köra eller gå in.
Vad är skillnaden mellan chmod 644 och 755?
644 (rw-r--r--) saknar kör-bit helt och passar vanliga filer som HTML, konfiguration eller loggar. 755 (rwxr-xr-x) har kör-bit för alla tre klasser och används för skript och kataloger, eftersom en katalog kräver just kör-biten för att man ska kunna gå in i den.
Varför vägrar SSH att använda min privata nyckel?
För att den har fel filrättigheter. OpenSSH kräver att en privat nyckel bara är läsbar för ägaren, alltså 600. Är den grupp- eller världsläsbar avvisas den med ett fel som "Permissions 0644 for 'id_rsa' are too open". Kör chmod 600 id_rsa (eller motsvarande filnamn) för att fixa det.
Varför är chmod 777 farligt? För att det ger fullständig läs-, skriv- och körrättighet till varje användare på systemet, inte bara ägaren. Det är en vanlig väg in för angripare, till exempel via en osäker uppladdningsmapp som blir körbar för alla. Använd 755 för körbart innehåll och 644 för vanliga filer i stället, och gå tightare (750/640) när endast en betrodd grupp behöver åtkomst.