Ga naar hoofdinhoud

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:

adduseruseradd
TypeHoger niveau, interactief scriptLager niveau, niet-interactief
Vraagt wachtwoord?Ja, automatischNee, aparte passwd-stap
Maakt thuismap aan?Ja, altijdEnkel met -m vlag
Kopieert standaardbestanden?Ja (uit /etc/skel)Enkel met -m
Aanbevolen voor?Manueel aanmaken van gebruikersScripts, 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
Vergeet -a niet bij usermod -G

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

TekenRechtOp een bestandOp een map
rReadInhoud lezenInhoud bekijken (ls)
wWriteInhoud wijzigenBestanden toevoegen of verwijderen
xExecuteAls programma uitvoerenMap 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
WieBetekenisActieBetekenis
uuser (eigenaar)+Toevoegen
ggroup-Weghalen
oothers=Exact instellen
aall (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
Veelgebruikte rechten
  • 644 — standaard voor bestanden: eigenaar schrijft, iedereen leest
  • 755 — standaard voor scripts en mappen
  • 600 — 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.

Gebruik sudo met verstand

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.