Beetje Coderen

Les 5

Teksteditors en configuratiebestanden

Bestanden bewerken in de terminal met nano en de basis van vim.

⏱ 45–60 minuten leestijd + oefenen

🎯 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 sudo nodig: 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:

  1. Back-up maken: sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$(date +%F). $(date +%F) wordt de datum van vandaag, bijvoorbeeld 2026-10-13.
  2. Bewerken: verander één ding tegelijk, en zet in een commentaarregel waarom.
  3. Controleren: de meeste diensten hebben een testcommando dat de syntax controleert zonder iets te herstarten.
  4. Toepassen: pas na een geslaagde test herlaad je de dienst (les 8).
  5. 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

  1. Start het lab: docker run -it --rm registry.wizg.it/webhosting/beetje-labs:les5.
  2. Maak met vim het bestand ~/vim-test.txt met de regel Ik kan vim afsluiten.
  3. In /etc/beetje/app.conf staat de configuratie van een kleine dienst. Maak een back-up met de datum in de naam.
  4. Pas aan: poort 8080 wordt 8081, en zet de regel #log_level = info aan met waarde warning. Zet een commentaarregel met je naam en de reden boven je wijziging.
  5. Controleer met sudo beetje-app --test-config, en sla de uitvoer van diff tussen back-up en nieuw bestand op in ~/wijzigingen.diff.
  6. 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 (:). :wq opslaan 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. diff laat 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

Volg daarna de stappen van de opdracht hierboven. Nog geen Docker? Zie les 14 van Een beetje Linux & Docker. Voor dit lab is er geen live lab in de browser.

Klaar? Controleer je werk met:

$ beetje check les5

📝 Quiz: teksteditors en configuratiebestanden

5 vragen · 70% nodig om te slagen

1. Hoe sluit je vim af zonder op te slaan?
2. In welke vim-modus kun je gewoon tekst typen?
3. Wat doe je als eerste voordat je een belangrijk configuratiebestand aanpast?
4. Wat doet `sudo nginx -t`?
5. Wat betekent een regel die begint met # in de meeste configuratiebestanden?