OS & Linux-track Les 5 van 8

🔐 Permissies en eigenaarschap

Wie mag wat doen met welk bestand — en waarom dit Symfony laat crashen als het fout staat.

⏱ 25 min6 stappen Les 3 aanbevolen
Stap 1 / 6

User, Group, World

Elk bestand in Linux heeft drie lagen van rechten. Denk aan een gebouw met drie soorten bezoekers:

👤
User (u)
De eigenaar van het bestand. Standaard degene die het aanmaakte.
👥
Group (g)
Een groep gebruikers — bijv. alle webdevs op de server.
🌍
World / Other (o)
Alle andere gebruikers op het systeem.
Drie soorten rechten: rwx
📖
r
Read
Bestand lezen / map weergeven
✏️
w
Write
Bestand aanpassen / bestanden aanmaken in map
▶️
x
Execute
Script uitvoeren / map binnengaan met cd
💡 Geen rechten = geen toegang

Als de webserver (nginx) een bestand niet mag lezen, krijgt de bezoeker een 403 Forbidden-fout. Als Symfony niet in var/ mag schrijven, crasht de cache. Permissies zijn cruciaal.

Stap 2 / 6

ls -l lezen

Met ls -l zie je de rechten van elk bestand. De output ziet er zo uit:

-rw-r--r-- 1 student www-data 4096 May 21 index.php
drwxr-xr-x 2 student www-data 4096 May 21 var/
-rwxr-xr-x 1 root root 8192 May 21 script.sh
Opbouw van de permissiestring: -rw-r--r--
-
type
rw-
user
r--
group
r--
other
- = bestand   d = directory   l = symlink
rw- = lezen + schrijven (geen execute)
r-- = alleen lezen
rw-r--r-- (644)
Eigenaar: lezen+schrijven. Rest: alleen lezen.
Typisch voor configuratiebestanden.
rwxr-xr-x (755)
Eigenaar: alles. Rest: lezen+uitvoeren.
Typisch voor mappen en scripts.
Terminal
Probeer: ls -l, ls -la
student@linux:~$
Stap 3 / 6

chmod — permissies wijzigen

Met chmod wijzig je de rechten. Er zijn twee notaties:

Numerieke notatie
r=4, w=2, x=1 — tel op per groep
user
7
4+2+1=rwx
group
5
4+0+1=r-x
other
5
4+0+1=r-x
→ chmod 755
chmod 755 script.sh — rwxr-xr-x
chmod 644 config.php — rw-r--r--
chmod 600 .env — rw------- (privé!)
chmod -R 755 var/ — recursief
Symbolische notatie
u/g/o/a + +/-/= + r/w/x
chmod +x script.sh
execute toevoegen voor iedereen
chmod u+x script.sh
alleen voor de eigenaar (user)
chmod o-r .env
read verwijderen voor anderen
chmod a+r bestand.txt
a = all (u+g+o)
Terminal
Probeer: ls -l, chmod 755 script.sh, chmod +x script.sh, chmod 644 index.php
student@linux:~$
Stap 4 / 6

chown — eigenaarschap wijzigen

chown verandert wie de eigenaar is van een bestand. Soms is dit net zo belangrijk als de rechten zelf.

chown student bestand.txt
Geef eigendom aan gebruiker 'student'
chown student:www-data bestand.txt
Eigenaar = student, groep = www-data
chown -R www-data:www-data /var/www/project/
-R = recursief — heel de map incl. submappen
id — wie ben jij?
$ id
uid=1000(student) gid=1000(student) groups=1000(student),27(sudo),33(www-data)

Dit laat zien welke groepen jij lid van bent. Als je in de groep www-data zit, heb je de groepsrechten van webbestanden.

Stap 5 / 6

🎯 Scenario: Symfony permissies instellen

🔁 Komt terug in Symfony

In de Symfony-track zul je exact dit probleem tegenkomen. Hier leer je de theorie, zodat je het dan herkent.

Symfony schrijft cache en logbestanden naar de var/ map. Als de webserver (nginx via www-data) die map niet mag beschrijven, crasht Symfony met een permission denied-fout.

De situatie

Je hebt een Symfony-project geupload naar de server. De webserver draait als gebruiker www-data. Jij hebt de bestanden geupload als deploy.

Stap 1: bekijk de huidige rechten
$ ls -la /var/www/mijnproject/
drwxr-xr-x 2 deploy deploy 4096 var/
❌ www-data kan niet schrijven!
Stap 2: eigenaar instellen
$ sudo chown -R www-data:www-data var/
Stap 3: rechten instellen
$ sudo chmod -R 775 var/
# 775 = rwxrwxr-x: eigenaar + groep schrijfrechten
✅ Resultaat
drwxrwxr-x 2 www-data www-data 4096 var/
✓ Symfony kan cache schrijven
Veel voorkomende Symfony permissiefouten
Unable to write to cache directory — var/cache/ heeft verkeerde rechten
Permission denied: /var/www/project/.env — .env niet leesbaar voor www-data
403 Forbidden — public/ map niet leesbaar voor nginx
Stap 6 / 6

Samenvatting & kennischeck

Drie lagen: user (u), group (g), world (o)
r=4, w=2, x=1 — tel op voor de numerieke waarde
755 = rwxr-xr-x (mappen/scripts), 644 = rw-r--r-- (bestanden)
chmod +x voegt execute toe, -R doet het recursief
chown user:group wijzigt eigenaar én groep
Symfony's var/ map heeft schrijfrechten nodig voor www-data