Chmod Rechten Begrijpen: Wat 755, 644 en 777 Echt Betekenen
Chmod 755 betekent: de eigenaar mag lezen, schrijven en uitvoeren, groep en anderen mogen alleen lezen en uitvoeren. In symbolische vorm is dat rwxr-xr-x. Elk van de drie cijfers in een chmod-opdracht staat voor één van de drie rechtenklassen: eigenaar, groep en anderen, en elk cijfer is de som van de rechten die die klasse heeft.
Hoe het octale cijfer wordt opgebouwd
Elke rechtenklasse (eigenaar, groep, anderen) krijgt precies één cijfer, van 0 tot 7. Dat cijfer is de som van drie vaste waarden:
- lezen (r) = 4
- schrijven (w) = 2
- uitvoeren (x) = 1
Heeft een klasse lees- en schrijfrechten maar geen uitvoerrecht, dan is dat cijfer 4 + 2 = 6. Heeft een klasse alle drie, dan is dat 4 + 2 + 1 = 7. Geen enkel recht geeft 0. Omdat elke combinatie van deze drie bits een uniek getal tussen 0 en 7 oplevert, kun je elk cijfer terugvertalen naar precies één set rechten, en andersom. Dat is de hele logica achter een getal als 755: 7 voor de eigenaar (rwx), 5 voor de groep (r-x, want 4+1), 5 voor anderen (r-x).
Zes veelgebruikte combinaties
| Command | Octal | Symbolic | Typisch gebruik |
|---|---|---|---|
| chmod 600 file | 600 | rw------- | SSH-privésleutel (id_rsa), .env-bestand met secrets |
| chmod 644 file | 644 | rw-r—r— | Gewoon bestand (HTML, config, log): eigenaar bewerkt, iedereen leest |
| chmod 700 dir | 700 | rwx------ | Privémap die alleen de eigenaar mag binnengaan |
| chmod 755 script.sh | 755 | rwxr-xr-x | Publiek script of map: eigenaar bewerkt, iedereen mag uitvoeren/binnengaan |
| chmod 775 dir | 775 | rwxrwxr-x | Gedeelde teammap: eigenaar en groep mogen schrijven |
| chmod 777 file | 777 | rwxrwxrwx | Iedereen mag lezen, schrijven, uitvoeren: vermijden, veiligheidsrisico |
Bij een map werkt het uitvoerrecht anders dan bij een bestand: het bepaalt of je de map mag binnengaan (cd), terwijl het leesrecht bepaalt of je de inhoud mag opsommen (ls). Een map die wel leesbaar maar niet uitvoerbaar is, laat sommige tools de bestandsnamen erin nog tonen, maar je kunt er niet in cd-en en de bestanden zelf niet opvragen (stat). Dat is een van de meest verwarrende punten voor wie net met rechten werkt: de map lijkt toegankelijk omdat je de namen ziet, maar de inhoud blijft ontoegankelijk zolang het uitvoerrecht ontbreekt.
Twee dingen die “symbolisch” heten
Chmod kent twee volledig verschillende dingen die allebei “symbolisch” worden genoemd, en die verwarring zorgt is:
- De weergavestring van
ls -l, zoalsrwxr-xr-x. Dit is een momentopname: het toont de complete rechtenstatus van een bestand op dit moment, in negen tekens verdeeld over eigenaar, groep en anderen. Dit is wat de widget hieronder laat zien. - Chmod’s eigen symbolische modus voor het wijzigen van rechten, met een heel andere syntax. In plaats van een volledig nieuw cijfer op te geven, pas je relatief aan wat er al staat:
chmod u+x file.shvoegt het uitvoerrecht toe voor de eigenaar (u = user), zonder de rest te wijzigenchmod go-w filehaalt het schrijfrecht weg bij groep (g) en anderen (o = other)chmod a+r filemaakt het bestand wereldwijd leesbaar (a = all)
Het eerste is een toestand, het tweede is een bewerking. Je kunt de symbolische modus gebruiken zonder te weten welk octaal cijfer eruit rolt, wat handig is als je maar één recht wilt aanpassen zonder de rest opnieuw te hoeven berekenen.
Probeer het met je eigen rechten
Vul hieronder een octaal getal of een symbolische string in en zie meteen de andere notatie en het klaargezette chmod-commando.
| Lezen | Schrijven | Uitvoeren | |
|---|---|---|---|
| Eigenaar | |||
| Groep | |||
| Anderen |
Waarom nieuwe bestanden standaard 644 zijn
Niemand typt na elke touch of mkdir handmatig een chmod-commando, en toch krijgt elk nieuw bestand netjes 644 en elke nieuwe map 755. Dat komt door de umask. Het systeem start met een basiswaarde: 666 (rw-rw-rw-) voor nieuwe bestanden en 777 (rwxrwxrwx) voor nieuwe mappen. Bestanden krijgen bewust nooit standaard een uitvoerrecht, dat moet je expliciet toekennen. Van die basiswaarde trekt de shell vervolgens de umask af.
Op de meeste Linux-systemen staat de umask standaard op 022. Reken het na: 666 min 022 is 644, en 777 min 022 is 755. Dat verklaart precies waarom een net aangemaakt configuratiebestand rw-r--r-- heeft en een net aangemaakte map rwxr-xr-x, zonder dat iemand ooit chmod heeft aangeroepen.
Veelgemaakte fouten en veiligheidsrisico’s
chmod 777. Dit geeft elke gebruiker op het systeem lees-, schrijf- en uitvoerrechten, inclusief een aanvaller die al ergens een klein gaatje heeft gevonden. Een onveilig geüploade bestandsupload die per ongeluk op 777 staat, is een klassieke manier waarop zo’n bestand tot een webshell wordt omgebouwd: de aanvaller overschrijft het gewoon met eigen code. Beveiligingsscans, bijvoorbeeld bij een WordPress- of hostingaudit, markeren 777 vrijwel altijd als kritieke bevinding. De oplossing is bijna altijd 755 voor uitvoerbare bestanden en mappen, 644 voor gewone bestanden, en verscherpt naar 750 of 640 zodra er een vertrouwde groep bij betrokken is.
SSH-sleutels met te ruime rechten. ssh-keygen maakt privésleutels standaard aan met 600 (rw-------), zodat alleen de eigenaar ze kan lezen of wijzigen. OpenSSH weigert actief om een privésleutel te gebruiken die voor groep of anderen leesbaar is, en geeft dan een foutmelding als:
Permissions 0644 for 'id_rsa' are too open
soms gevolgd door de nog dwingendere waarschuwing UNPROTECTED PRIVATE KEY FILE!. Dit is geen bug, het is OpenSSH dat weigert een sleutel te vertrouwen die iedereen op de machine zou kunnen inzien. De oplossing is simpelweg chmod 600 op het sleutelbestand.
Wat deze calculator niet dekt
Naast de drie standaardklassen bestaat er een optioneel vierde, voorloopcijfer voor de speciale rechtenbits: setuid (4000), setgid (2000) en de sticky bit (1000), zoals in chmod 4755 of chmod 1777 op /tmp. Deze calculator modelleert alleen het standaard driecijferige stelsel voor eigenaar, groep en anderen, niet dat vierde cijfer. In het kort: setuid laat een programma draaien met de rechten van zijn eigenaar in plaats van die van wie het uitvoert (zo werkt /usr/bin/passwd), en de sticky bit op een wereldwijd beschrijfbare map als /tmp voorkomt dat de ene gebruiker bestanden van een andere gebruiker daar kan verwijderen.
Veelgestelde vragen
Wat betekent chmod 755 precies?
De eigenaar krijgt lees-, schrijf- en uitvoerrecht (7 = 4+2+1), groep en anderen krijgen alleen lees- en uitvoerrecht (5 = 4+1). In symbolische vorm is dat rwxr-xr-x. Dit is de gangbare instelling voor scripts en mappen die publiek toegankelijk moeten zijn, maar alleen door de eigenaar bewerkt mogen worden.
Wat is het verschil tussen chmod 644 en chmod 664?
Bij 644 (rw-r--r--) mag alleen de eigenaar schrijven, groep en anderen mogen enkel lezen. Bij 664 (rw-rw-r--) mag ook de groep schrijven, wat zinvol is voor bestanden die meerdere teamleden binnen dezelfde groep moeten kunnen bewerken, terwijl buitenstaanders alleen leestoegang houden.
Waarom werkt mijn map niet, ook al staat er leesrecht op?
Om een map binnen te gaan (cd) heb je het uitvoerrecht nodig, niet het leesrecht. Leesrecht bepaalt alleen of je de inhoud van de map mag opsommen met ls. Een map met alleen leesrecht en geen uitvoerrecht toont soms nog bestandsnamen via bepaalde tools, maar je kunt er niet in navigeren en de bestanden zelf niet raadplegen. Voor een toegankelijke map heb je meestal minstens het uitvoerrecht nodig, vaak samen met lezen: 755 of 750.
Is chmod 777 ooit een goed idee? Vrijwel nooit op een systeem dat door meer dan jezelf wordt gebruikt of dat verbonden is met het internet. Het geeft elke gebruiker, ook een eventuele aanvaller, volledige lees-, schrijf- en uitvoerrechten. Gebruik in plaats daarvan 755 voor uitvoerbare bestanden en mappen of 644 voor gewone bestanden, en verscherp naar 750/640 als een specifieke groep vertrouwd toegang nodig heeft.