Bestandsrechten in Linux bepalen wie bestanden mag lezen, schrijven en uitvoeren – en het chmod-commando geeft je daar volledige controle over. In deze gids leer je stap voor stap hoe chmod werkt, inclusief numerieke en symbolische instellingen, veelvoorkomende fouten en beveiligingstips.
1. Wat zijn bestandsrechten in Linux?
In Linux en Unix heeft elk bestand en elke map bepaalde rechten, die bepalen wie toegang heeft en wat diegene ermee kan doen. Deze rechten zijn opgesplitst in drie categorieën:
- Eigenaar (user - u): De gebruiker die het bestand heeft aangemaakt.
- Groep (group - g): Andere gebruikers die deel uitmaken van dezelfde groep.
- Overige (others - o): Iedereen die geen eigenaar is en niet in de groep zit.
Elk bestand heeft drie rechten:
- r (read) - Lezen van een bestand of de inhoud van een map bekijken.
- w (write) - Wijzigen of verwijderen van een bestand.
- x (execute) - Uitvoeren van een bestand (bijvoorbeeld een script of programma).
Je kunt de rechten van een bestand bekijken met:
ls -l bestand.txt
Dit toont bijvoorbeeld:
-rw-r--r-- 1 gebruiker groep 1234 mrt 17 10:00 bestand.txt
Hier zie je:
- rw- (lezen en schrijven voor de eigenaar)
- r-- (alleen lezen voor de groep)
- r-- (alleen lezen voor anderen)
2. Basisgebruik van chmod
De algemene syntax van chmod is:
chmod [opties] rechten bestand
Voorbeelden:
- chmod 755 script.sh → maakt een script uitvoerbaar voor iedereen.
- chmod 644 document.txt → alleen de eigenaar kan schrijven, anderen kunnen lezen.
3. Numerieke modus: chmod met getallen
Je kunt rechten instellen met een octale notatie (getallen). Elk recht heeft een numerieke waarde:
- r = 4 (read)
- w = 2 (write)
- x = 1 (execute)
Combinaties:
- 7 (rwx) → Lezen, schrijven en uitvoeren.
- 6 (rw-) → Lezen en schrijven.
- 5 (r-x) → Lezen en uitvoeren.
- 4 (r--) → Alleen lezen.
Voorbeeld:
chmod 755 script.sh
Hierbij krijgt de eigenaar volledige rechten (rwx = 7), terwijl de groep en anderen alleen lees- en uitvoerrechten krijgen (r-x = 5).
4. Symbolische modus: chmod met letters
In plaats van getallen kun je rechten ook wijzigen met symbolen:
- u (user - eigenaar)
- g (group - groep)
- o (others - overige gebruikers)
- a (all - iedereen)
En met operators:
- + (toevoegen van rechten)
- - (verwijderen van rechten)
- = (rechten exact instellen)
Voorbeelden:
chmod u+x script.sh # Geeft de eigenaar uitvoerrechten
chmod g-w bestand.txt # Verwijdert schrijfrechten van de groep
chmod o= bestand.txt # Verwijdert alle rechten van anderen
5. Veelgebruikte chmod-instellingen
Hier zijn enkele standaardinstellingen en wanneer je ze gebruikt:
chmod-code | Beschrijving | Toepassing |
---|---|---|
755 | Eigenaar heeft alles, anderen alleen lezen/uitvoeren | Scripts en programma's |
644 | Eigenaar mag schrijven, anderen mogen lezen | Configuratiebestanden, webpagina's |
700 | Alleen de eigenaar heeft toegang | Privé bestanden, SSH sleutels |
600 | Alleen eigenaar mag lezen/schrijven | Gevoelige bestanden zoals wachtwoorden |
777 | Iedereen heeft volledige rechten (gevaarlijk!) | Alleen in uitzonderlijke gevallen |
6. Geavanceerde opties
a) Recursief chmod gebruiken (-R)
Wil je chmod toepassen op een hele map inclusief submappen en bestanden? Gebruik de -R optie:
chmod -R 755 mijnmap/
Dit zorgt ervoor dat alle bestanden en submappen binnen mijnmap/ dezelfde rechten krijgen.
b) SUID, SGID en de sticky bit
Naast de standaard rechten zijn er drie speciale bits:
- SUID (Set User ID - 4xxx): Laat een bestand altijd draaien als de eigenaar.
- SGID (Set Group ID - 2xxx): Nieuwe bestanden in een map krijgen automatisch de groepsrechten.
- Sticky bit (1xxx): Voorkomt dat anderen bestanden in een gedeelde map verwijderen.
Voorbeeld:
chmod 4755 script.sh # SUID instellen
chmod 2755 mijnmap/ # SGID instellen
chmod 1777 /tmp # Sticky bit instellen (gebruikelijk voor de /tmp map)
7. Toepassingen in de praktijk
a) Een script uitvoerbaar maken
Heb je een script dat je wilt uitvoeren? Geef het uitvoerrechten:
chmod +x mijnscript.sh
./mijnscript.sh
b) Bestanden beschermen tegen wijzigingen
Wil je een bestand beschermen tegen ongewenste wijzigingen?
chmod 444 belangrijk.txt # Alleen-lezen voor iedereen
c) Juiste rechten voor SSH-keys
SSH-sleutels vereisen specifieke rechten:
chmod 600 ~/.ssh/id_rsa # Privésleutel (alleen eigenaar mag lezen/schrijven)
chmod 644 ~/.ssh/id_rsa.pub # Publieke sleutel (iedereen mag lezen)
8. Veelgemaakte fouten en beveiligingsrisico’s
a) Waarom chmod 777 meestal een slecht idee is
Het geven van volledige rechten (chmod 777) aan een bestand of map betekent dat iedereen alles mag doen. Dit is een groot beveiligingsrisico, vooral voor webservers:
chmod 777 /var/www/html/index.php # Fout! Iedereen kan dit bestand aanpassen.
Beter:
chmod 644 /var/www/html/index.php # Alleen de eigenaar kan schrijven.
b) Veelvoorkomende fouten
- Vergeten uitvoerrechten te geven aan een script:
Oplossing:chmod +x script.sh
- Verkeerde rechten op SSH-sleutels:
Oplossing:chmod 600 ~/.ssh/id_rsa
9. Extra tools voor rechtenbeheer
Naast chmod zijn er nog andere handige commando’s:
- chown: Wijzigt de eigenaar van een bestand.
chown gebruiker:groep bestand.txt
- chgrp: Wijzigt alleen de groep van een bestand.
chgrp groepnaam bestand.txt
- umask: Bepaalt de standaard bestandsrechten bij het aanmaken van nieuwe bestanden.
umask 022 # Nieuwe bestanden krijgen standaard 644, mappen 755
10. Conclusie: Best practices
- Wees voorzichtig met chmod 777 – Gebruik het alleen als het écht nodig is.
- Gebruik numerieke en symbolische notatie afhankelijk van de situatie.
- Maak scripts uitvoerbaar met chmod +x.
- Bescherm gevoelige bestanden zoals SSH-sleutels met chmod 600.
- Gebruik chmod -R alleen als je zeker weet wat je doet.
Met deze kennis kun je bestandsrechten in Linux veilig en effectief beheren. 🚀