Les 5
Teksteditors en configuratiebestanden
Bestanden bewerken in de terminal met nano en de basis van vim.
🎯 Na deze les kun je
- bestanden bewerken met nano
- overleven in vim (openen, bewerken, opslaan, afsluiten)
- veilig een configuratiebestand aanpassen
Op een server heb je geen Word of Kladblok. Instellingen van Linux en van bijna alle serverprogramma's staan in gewone tekstbestanden, en die bewerk je in de terminal. In deze les leer je twee editors: nano, die eenvoudig is, en vim, die je op elke server tegenkomt en waarin veel beginners vast komen te zitten. Daarna leer je een werkwijze om configuratiebestanden aan te passen zonder je server onbereikbaar te maken.
Nano
nano notities.txt
Nano opent het bestand (of maakt het als het niet bestaat), en je kunt meteen typen. Onderaan staan de sneltoetsen; ^ betekent Ctrl.
| Toets | Doet |
|---|---|
| Ctrl+O, Enter | opslaan (write Out) |
| Ctrl+X | afsluiten (vraagt om op te slaan als er wijzigingen zijn) |
| Ctrl+W | zoeken (Where is) |
| Ctrl+K / Ctrl+U | regel knippen / plakken |
| Alt+U | ongedaan maken |
| Ctrl+_ | naar regelnummer gaan |
Nano is prima voor kleine aanpassingen. Op minimale servers en in containers is hij er niet altijd; vim (of de kleine versie vi) bijna wel.
Vim-modi
Vim werkt anders dan elke andere editor die je kent: hij heeft modi. In de ene modus typ je tekst, in de andere geef je opdrachten. Wie dat niet weet, typt :q midden in zijn tekst of krijgt het programma niet meer dicht.
| Modus | Hoe kom je erin | Wat doe je |
|---|---|---|
| Normal | standaard bij openen; Esc vanuit elke andere modus | navigeren, verwijderen, kopiëren |
| Insert | i (op de cursor) of o (nieuwe regel eronder) |
tekst typen |
| Command-line | : vanuit Normal |
opslaan, afsluiten, zoeken en vervangen |
Het overlevingspakket:
| Je wilt … | Typ (vanuit Normal, dus eerst Esc) |
|---|---|
| tekst invoegen | i, typen, daarna Esc |
| opslaan | :w Enter |
| opslaan en afsluiten | :wq Enter (of ZZ) |
| afsluiten zonder opslaan | :q! Enter |
| zoeken | /woord Enter, n voor de volgende |
| regel verwijderen | dd |
| ongedaan maken | u |
| naar regel 25 | :25 Enter |
Weet je niet meer in welke modus je zit? Druk twee keer op Esc. Dan ben je zeker in Normal, en werkt :q! altijd om eruit te komen zonder schade.
Een korte sessie: open vim groet.txt, druk i, typ Hallo server, druk Esc, typ :wq en Enter. Je hebt een bestand gemaakt in vim.
Wil je verder met vim, dan zit er een interactieve les bij: vimtutor (ongeveer 30 minuten).
Configuratiebestanden in /etc
Bijna alle systeeminstellingen staan in /etc (les 2). Een paar voorbeelden:
| Bestand | Bevat |
|---|---|
/etc/hostname |
de naam van de computer |
/etc/hosts |
vaste koppelingen tussen namen en IP-adressen |
/etc/ssh/sshd_config |
instellingen van de SSH-server (les 10 en 19) |
/etc/nginx/ |
instellingen van webserver nginx (les 20) |
/etc/cron.d/ |
geplande taken (les 12) |
De meeste configuratiebestanden volgen dezelfde conventies:
# Dit is commentaar: de regel wordt genegeerd.
Port 22
#PermitRootLogin prohibit-password
PasswordAuthentication yes
- Regels met
#zijn commentaar. Vaak staat de standaardwaarde als commentaar in het bestand; je haalt de#weg en past de waarde aan. - Het formaat verschilt per programma:
sleutel waarde,sleutel = waarde, YAML of blokken met accolades. Lees de bestaande regels en volg dezelfde stijl. - Je hebt meestal
sudonodig:sudo nano /etc/hosts. - Steeds meer programma's lezen ook een map met losse stukken, zoals
/etc/ssh/sshd_config.d/. Een eigen bestand daarin overleeft updates beter dan wijzigingen in het hoofdbestand.
Veilig een configuratiebestand aanpassen
Eén verkeerde regel in de configuratie van een SSH-server en je komt de server niet meer in. Werk daarom altijd zo:
- Back-up maken:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$(date +%F).$(date +%F)wordt de datum van vandaag, bijvoorbeeld2026-10-13. - Bewerken: verander één ding tegelijk, en zet in een commentaarregel waarom.
- Controleren: de meeste diensten hebben een testcommando dat de syntax controleert zonder iets te herstarten.
- Toepassen: pas na een geslaagde test herlaad je de dienst (les 8).
- Verifiëren: werkt het nog? Bij SSH: open een tweede sessie voordat je de eerste sluit.
| Programma | Testcommando |
|---|---|
| SSH-server | sudo sshd -t |
| nginx | sudo nginx -t |
| Apache | sudo apachectl configtest |
| sudo-rechten | altijd bewerken met sudo visudo, dat test zelf |
Zegt de test niets (of syntax is ok), dan is de syntax goed. Geeft hij een fout met regelnummer, open dan het bestand op die regel. Gaat alles mis: zet de back-up terug met cp en herlaad.
Met diff zie je precies wat je veranderd hebt ten opzichte van de back-up:
$ diff /etc/ssh/sshd_config.bak.2026-10-13 /etc/ssh/sshd_config
33c33
< #PermitRootLogin prohibit-password
---
> PermitRootLogin no
33c33 betekent: regel 33 is veranderd (changed). < is de oude versie, > de nieuwe.
Bewerk configuratie op een server liever niet met een editor op je eigen computer die je via een omweg kopieert: Windows-editors zetten soms andere regeleindes (CRLF) of een onzichtbaar BOM-teken in een bestand, en daar struikelen sommige programma's over. Bewerk op de server zelf.
Oefenen
Oefening 1. Je zit in vim, hebt per ongeluk van alles getypt en wilt eruit zonder iets op te slaan. Welke toetsen?
Modelantwoord oefening 1
Esc (eventueel twee keer), dan :q! en Enter.
Oefening 2. Je wilt in /etc/hosts de regel 192.168.1.50 nas toevoegen. Schrijf de stappen met back-up op.
Modelantwoord oefening 2
sudo cp /etc/hosts /etc/hosts.bak
sudo nano /etc/hosts # regel toevoegen, Ctrl+O, Enter, Ctrl+X
diff /etc/hosts.bak /etc/hosts
ping -c 1 nas # verifiëren
/etc/hosts heeft geen apart testcommando; je controleert door de naam te gebruiken.
Oefening 3. sudo nginx -t geeft: nginx: [emerg] unexpected "}" in /etc/nginx/sites-enabled/site:14. Wat doe je?
Modelantwoord oefening 3
Herlaad nginx nog niet. Open het bestand op regel 14 (in vim :14, in nano Ctrl+_ 14) en zoek de fout. Meestal is het een ontbrekende ; aan het eind van de regel ervoor. Test opnieuw tot je syntax is ok ziet.
Lab: een configuratiebestand aanpassen en controleren
- Start het lab:
docker run -it --rm registry.wizg.it/webhosting/beetje-labs:les5. - Maak met vim het bestand
~/vim-test.txtmet de regelIk kan vim afsluiten. - In
/etc/beetje/app.confstaat de configuratie van een kleine dienst. Maak een back-up met de datum in de naam. - Pas aan: poort
8080wordt8081, en zet de regel#log_level = infoaan met waardewarning. Zet een commentaarregel met je naam en de reden boven je wijziging. - Controleer met
sudo beetje-app --test-config, en sla de uitvoer vandifftussen back-up en nieuw bestand op in~/wijzigingen.diff. - Controleer met
beetje check les5.
Samenvatting
- Nano: meteen typen, Ctrl+O opslaan, Ctrl+X afsluiten.
- Vim heeft modi: Normal (Esc), Insert (
i) en Command-line (:).:wqopslaan en sluiten,:q!sluiten zonder opslaan. - Configuratie staat in
/etc;#is commentaar; volg de stijl van het bestand. - Veilig aanpassen: back-up, één wijziging, testcommando (
sshd -t,nginx -t), toepassen, verifiëren.difflaat zien wat er veranderd is.
In les 6 kijk je naar wat er op een systeem draait: processen, en hoe je ze stopt.
Lab
Een configuratiebestand aanpassen en controleren
💻 Dit lab doe je op je eigen computer met Docker. Start de lab-container met (geeft de opdracht een eigen startcommando, gebruik dan dat):
$ docker run -it --rm registry.wizg.it/webhosting/beetje-labs:les5
Klaar? Controleer je werk met:
$ beetje check les5