Gebruikers & Rechten
Linux is van origine een multi-user systeem: meerdere mensen kunnen tegelijk op hetzelfde systeem werken, elk met hun eigen bestanden en permissies. Elk bestand heeft een eigenaar, elk process draait als een bepaalde gebruiker, en het rechtensysteem bepaalt precies wie wat mag lezen, schrijven en uitvoeren.
Gebruikerstypen
Linux kent drie soorten gebruikers:
Normale gebruikers — aangemaakt voor echte personen. Ze hebben een persoonlijke thuismap in /home/naam en beperkte systeemtoegang. Hun UID (User ID) begint typisch vanaf 1000.
Root — de systeembeheerder met volledige toegang tot alles. Root heeft altijd UID 0. Eén verkeerd commando als root kan het hele systeem onherstelbaar beschadigen, dus je werkt zo weinig mogelijk als root.
Systeemgebruikers — aangemaakt door het systeem of applicaties om services te draaien. De webserver nginx draait als gebruiker www-data, de database als mysql. Ze hebben geen echte thuismap en mogen niet inloggen. Hun UID is kleiner dan 1000.
whoami # Toon de naam van de huidige gebruiker
id # Toon UID, primaire GID en alle groepen waarvan je lid bent
id jan # Toon de info van een andere gebruiker
Gebruikersinformatie in het systeem
Linux bewaart gebruikersinformatie in gewone tekstbestanden. Je hoeft die niet manueel te bewerken — daarvoor zijn er commando's — maar het helpt om te weten hoe de structuur eruitziet.
/etc/passwd
Elk account heeft een regel in /etc/passwd. Dit bestand is leesbaar voor alle gebruikers, dus wachtwoorden staan er niet in.
gebruikersnaam:x:UID:GID:commentaar:thuismap:shell
Voorbeeld:
jan:x:1001:1001:Jan Peeters:/home/jan:/bin/bash
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
Het laatste veld is de standaard shell — het programma dat opgestart wordt wanneer de gebruiker inlogt. Voor normale gebruikers is dat /bin/bash. Systeemgebruikers krijgen /usr/sbin/nologin, waardoor inloggen onmogelijk is.
De x op de tweede positie geeft aan dat het wachtwoord encrypted is opgeslagen in /etc/shadow, dat enkel door root leesbaar is.
/etc/group
Groepsinformatie staat in /etc/group. Elke regel beschrijft één groep, inclusief de leden.
groepsnaam:x:GID:leden
Voorbeeld:
sudo:x:27:jan
docker:x:998:jan,marie
Gebruikersbeheer
adduser vs useradd
Er zijn twee commando's om gebruikers aan te maken, en het verschil is belangrijk:
adduser | useradd | |
|---|---|---|
| Type | Hoger niveau, interactief script | Lager niveau, niet-interactief |
| Vraagt wachtwoord? | Ja, automatisch | Nee, aparte passwd-stap |
| Maakt thuismap aan? | Ja, altijd | Enkel met -m vlag |
| Kopieert standaardbestanden? | Ja (uit /etc/skel) | Enkel met -m |
| Aanbevolen voor? | Manueel aanmaken van gebruikers | Scripts, automatisering |
sudo adduser jan # Interactief: vraagt wachtwoord, naam, ...
sudo useradd -m -s /bin/bash jan # Niet-interactief, maakt thuismap aan
sudo useradd -m -s /bin/bash -G sudo jan # Met sudo-groepslidmaatschap
De -s /bin/bash vlag stelt de standaard shell in. Als je dit weglaat, kan het zijn dat de gebruiker geen werkende shell heeft en niet normaal kan inloggen. Kies altijd /bin/bash voor een normale gebruiker.
Wachtwoord instellen of wijzigen
passwd stelt het wachtwoord in voor een gebruiker. Na sudo passwd jan vraagt het systeem twee keer het nieuwe wachtwoord — de invoer wordt niet getoond op het scherm, dat is normaal.
sudo passwd jan # Stel of wijzig wachtwoord van gebruiker 'jan'
passwd # Wijzig je eigen wachtwoord (geen sudo nodig)
Gebruiker aanpassen
usermod (user modify) past de eigenschappen van een bestaande gebruiker aan. Je gebruikt dit wanneer je groepslidmaatschappen, de shell of de thuismap wilt wijzigen nadat de gebruiker al aangemaakt is.
sudo usermod -aG docker jan # Voeg 'jan' toe aan groep 'docker'
sudo usermod -aG sudo jan # Geef 'jan' sudo-rechten
sudo usermod -s /bin/bash jan # Wijzig de standaard shell
sudo usermod -d /nieuwe/pad jan # Wijzig de thuismap
sudo usermod -G docker jan zonder de -a vlag vervangt alle bestaande groepen van Jan door alleen docker. Jan verliest dan direct zijn sudo-rechten en andere groepslidmaatschappen. Gebruik altijd -aG (append + group) om toe te voegen zonder te vervangen.
Gebruiker verwijderen
userdel verwijdert een gebruikersaccount. Gebruik -r om ook de thuismap en mailbestanden te verwijderen. Zonder -r blijft de thuismap staan — handig als je de bestanden wilt bewaren.
sudo userdel jan # Verwijder het account (thuismap blijft)
sudo userdel -r jan # Verwijder het account én de thuismap
Groepsbeheer
Groepen worden gebruikt om meerdere gebruikers dezelfde rechten te geven op bestanden of mappen. Elke gebruiker heeft een primaire groep (automatisch aangemaakt bij het aanmaken van de gebruiker) en kan lid zijn van meerdere secundaire groepen.
sudo groupadd ontwikkelaars # Maak een nieuwe groep aan
sudo groupdel ontwikkelaars # Verwijder een groep (gebruikers worden er niet door verwijderd)
groups jan # Toon alle groepen waarvan 'jan' lid is
Een typisch scenario: je maakt een groep ontwikkelaars aan, voegt alle developers toe met usermod -aG, en geeft die groep leesrecht op de broncode. Zo hoef je de rechten maar één keer in te stellen.
Van gebruiker wisselen
su - jan # Wissel volledig naar gebruiker 'jan'
sudo -u jan commando # Voer één commando uit als 'jan', blijf wie je bent
sudo -i # Open een root-shell (gebruik spaarzaam)
su - jan (switch user) opent een nieuwe shell als gebruiker Jan, met zijn volledige omgeving — zijn thuismap, zijn PATH, zijn instellingen. Je moet het wachtwoord van Jan kennen. De - is belangrijk: zonder het blijf je in de omgeving van de oorspronkelijke gebruiker, wat verwarring kan geven.
sudo -u jan commando voert één enkel commando uit als Jan, maar enkel als jij zelf sudo-rechten hebt. Handig om snel iets te testen als een andere gebruiker zonder volledig te wisselen.
Bestandsrechten
Rechten bekijken met ls -l
De standaard ls toont enkel bestandsnamen. Om de rechten, eigenaar en groep te zien gebruik je de -l vlag (long format). Dit geeft per bestand een uitgebreide regel met alle metadata.
ls -l bestand.txt
# -rw-r--r-- 1 jan ontwikkelaars 1024 Jun 1 10:00 bestand.txt
- rw- r-- r-- 1 jan ontwikkelaars 1024 Jun 1 bestand.txt
│ │ │ │ │ │ │
│ │ │ │ │ │ └── Groep van het bestand
│ │ │ │ │ └─────────── Eigenaar van het bestand
│ │ │ │ └──────────────── Aantal hard links
│ │ │ └───────────────────── Rechten voor anderen (others)
│ │ └────────────────────────── Rechten voor de groep
│ └─────────────────────────────── Rechten voor de eigenaar (user)
└────────────────────────────────── Bestandstype (- = bestand, d = map)
Het rwx-model
| Teken | Recht | Op een bestand | Op een map |
|---|---|---|---|
r | Read | Inhoud lezen | Inhoud bekijken (ls) |
w | Write | Inhoud wijzigen | Bestanden toevoegen of verwijderen |
x | Execute | Als programma uitvoeren | Map betreden (cd) |
- | Geen recht | — | — |
Let op het verschil voor mappen: het uitvoerrecht (x) op een map betekent niet "uitvoeren" maar "betreden". Zonder x op een map kun je er niet in navigeren, zelfs als je r hebt.
chmod — rechten aanpassen
Er zijn twee manieren om rechten aan te passen. Beide doen hetzelfde, maar elk heeft zijn gebruik.
Manier 1: Symbolisch — beschrijf de wijziging relatief ten opzichte van de huidige rechten. Gebruik dit als je één specifiek recht wilt toevoegen of weghalen zonder de rest te beïnvloeden.
chmod [wie][actie][recht] bestand
| Wie | Betekenis | Actie | Betekenis |
|---|---|---|---|
u | user (eigenaar) | + | Toevoegen |
g | group | - | Weghalen |
o | others | = | Exact instellen |
a | all (iedereen) |
chmod u+x script.sh # Geef eigenaar uitvoerrecht
chmod g-w bestand.txt # Haal schrijfrecht weg van de groep
chmod o+r bestand.txt # Geef anderen leesrecht
chmod a+x script.sh # Geef iedereen uitvoerrecht
chmod u+x,g-w bestand.txt # Meerdere wijzigingen tegelijk
Manier 2: Octaal — stel de volledige rechten in als een driecijferig getal. Gebruik dit als je alle rechten in één keer wilt instellen. Elk cijfer is de som van r=4, w=2, x=1.
Eigenaar Groep Anderen
rwx r-x r--
4+2+1 4+0+1 4+0+0
= 7 = 5 = 4
→ chmod 754
chmod 755 script.sh # rwxr-xr-x (eigenaar alles, rest lezen + uitvoeren)
chmod 644 bestand.txt # rw-r--r-- (eigenaar schrijft, rest leest)
chmod 600 .env # rw------- (alleen eigenaar leest en schrijft)
chmod 700 privé/ # rwx------ (alleen eigenaar mag de map in)
chmod -R 755 map/ # Recursief op hele mapstructuur
644— standaard voor bestanden: eigenaar schrijft, iedereen leest755— standaard voor scripts en mappen600— gevoelige bestanden (.env, private SSH-sleutels)700— privémappen
chown — eigenaar aanpassen
chown (change owner) wijzigt de eigenaar van een bestand of map. Je hebt root-rechten nodig om de eigenaar van iemand anders zijn bestand te wijzigen. Een typisch gebruik: na het aanmaken van bestanden als root ze overdragen aan de correcte gebruiker.
sudo chown jan bestand.txt # Nieuwe eigenaar: jan
sudo chown jan:ontwikkelaars bestand.txt # Eigenaar én groep samen instellen
sudo chown :ontwikkelaars bestand.txt # Alleen de groep wijzigen
sudo chown -R jan:www-data /var/www/ # Recursief op de hele mapstructuur
chgrp — groep aanpassen
chgrp (change group) wijzigt enkel de groep van een bestand. Als je uitsluitend de groep wilt aanpassen zonder de eigenaar te wijzigen, is dit beknopter dan chown :groep.
sudo chgrp ontwikkelaars bestand.txt # Wijzig de groep naar 'ontwikkelaars'
sudo chgrp -R www-data /var/www/html/ # Recursief: hele map naar www-data
sudo
sudo (superuser do) laat een gewone gebruiker één enkel commando als root uitvoeren, mits de gebruiker in de sudo-groep zit. Het is de aanbevolen manier om systeembeheer te doen — veiliger dan inloggen als root, omdat je voor elk commando bewust sudo typt en je daarmee nadenkt over wat je doet.
sudo apt update # Vernieuw pakketlijst als root
sudo nano /etc/hosts # Bewerk een systeembestand
sudo chmod 600 /etc/ssh/sshd_config # Pas rechten aan op een systeembestand
Linux vraagt je wachtwoord de eerste keer en onthoudt het een tijdje (typisch 15 minuten). Daarna geeft het je vertrouwen — tot de volgende inactiviteit.
sudo geeft root-toegang. Eén verkeerd commando als root — een fout pad in rm -rf, een typo in chmod -R 777 / — kan het systeem onherstelbaar beschadigen. Controleer altijd wat je typt voordat je op Enter drukt.