Direct naar de inhoud

Cookie-instellingen

Kies per soort welke cookies je toestaat. Je kunt je keuze altijd wijzigen via Cookie-instellingen onderaan elke pagina. Privacyverklaring

Noodzakelijk

Altijd aan

Nodig om in te loggen, je winkelwagen te bewaren en je keuzes te onthouden. Deze staan altijd aan.

Welke cookies?
  • weboke_sessie, weboke_klant, weboke_remember: je sessie en ingelogd blijven
  • weboke_basket: je winkelwagen
  • wkBtwIncl: prijzen met of zonder btw tonen
  • wok_cookies: je cookiekeuze, 12 maanden

Meet welke advertentie tot een bezoek of bestelling leidt, zodat we niet betalen voor advertenties die niets doen.

Welke cookies?
  • Google Ads via Google Tag Manager (_gcl_au, _gcl_aw), tot 90 dagen
  • OpenAI Ads, advertenties in ChatGPT
  • wok_aff: via welke partner je bij ons kwam (affiliateprogramma), 60 dagen

4,6

Land en taal

Elk land heeft zijn eigen site, met prijzen en btw van dat land.

Bekijken

Module 1 · 1.4

Rondkijken op de commandoregel

Module 1: Je eerste server · Leestijd: 11 minuten

Leerdoel: Na deze les kun je je weg vinden op een Linux-server: door mappen lopen, bestanden lezen en bewerken, zien hoeveel schijf en geheugen er vrij is, en zelf hulp opzoeken bij een commando.

Kernbegrippen: shell, prompt, map en pad, absoluut en relatief pad, /etc, /var/log, /home, ls -l, cd, cat, less, nano, man, --help, tab-aanvulling, uname, df, free, uptime, pipe, grep

De shell en de prompt

Na het inloggen praat je met de shell: het programma dat je commando's leest en uitvoert. Op Debian en Ubuntu is dat meestal bash. Links van de cursor staat de prompt:

anna@web1:~$
root@web1:~#

Die vertelt drie dingen: wie je bent (anna of root), op welke server (web1) en in welke map je staat (~ is je eigen thuismap). Het laatste teken is belangrijk: $ betekent een gewone gebruiker, # betekent root. Zie je #, dan is elk commando met alle rechten. Typ daar rustig.

Mappen en paden

Alles op Linux hangt aan één boom die begint bij / (de root-map, niet te verwarren met de gebruiker root). Een paar mappen kom je in deze cursus steeds tegen:

MapWat erin staat
/etcConfiguratie: SSH (/etc/ssh), webserver (/etc/nginx), gebruikers (/etc/passwd)
/var/logLogbestanden (naast de journal, les 6.2)
/var/libGegevens van programma's, bijvoorbeeld databases en Docker
/homeThuismappen van gewone gebruikers, zoals /home/anna
/rootThuismap van root
/usrGeïnstalleerde programma's en bibliotheken
/tmpTijdelijke bestanden, wordt opgeruimd
/srv of /var/wwwGebruikelijke plek voor websites en diensten

Een absoluut pad begint bij /, bijvoorbeeld /etc/ssh/sshd_config. Een relatief pad begint waar je nu staat: sta je in /etc, dan is ssh/sshd_config hetzelfde bestand. .. is de map erboven, . de huidige map.

anna@web1:~$ pwd
/home/anna
anna@web1:~$ cd /etc/ssh
anna@web1:/etc/ssh$ ls
moduli  ssh_config  ssh_config.d  sshd_config  sshd_config.d  ssh_host_ed25519_key  ssh_host_ed25519_key.pub ...
anna@web1:/etc/ssh$ cd ..
anna@web1:/etc$ cd
anna@web1:~$

cd zonder iets erachter brengt je terug naar je thuismap.

Bestanden bekijken

ls -l laat meer zien dan alleen namen:

anna@web1:/etc/ssh$ ls -l sshd_config ssh_host_ed25519_key ssh_host_ed25519_key.pub
-rw-r--r-- 1 root root 3248 Aug 12 10:01 sshd_config
-rw------- 1 root root  399 Nov  2 14:20 ssh_host_ed25519_key
-rw-r--r-- 1 root root   91 Nov  2 14:20 ssh_host_ed25519_key.pub

Van links naar rechts: de rechten, het aantal koppelingen, eigenaar, groep, grootte in bytes, datum en naam. Zie het verschil: de geheime host key (-rw-------) mag alleen root lezen, de publieke (-rw-r--r--) iedereen. In les 3.1 leer je deze rechten precies lezen. ls -la toont ook verborgen bestanden: namen die met een punt beginnen, zoals .ssh.

Om de inhoud te lezen:

  • cat bestand: het hele bestand in één keer, handig voor korte bestanden;
  • less bestand: bladeren met de pijltjes en spatie, zoeken met /woord, stoppen met q;
  • head -n 20 bestand en tail -n 20 bestand: de eerste of laatste regels; tail -f blijft meekijken als er regels bijkomen.

Een bestand bewerken met nano

Configuratie pas je aan in een teksteditor. nano is de eenvoudigste:

root@web1:~# nano /etc/hosts

Onderaan staan de sneltoetsen; ^ betekent Ctrl. Opslaan is Ctrl+O en Enter, afsluiten Ctrl+X, zoeken Ctrl+W. Wie al met vim werkt, mag dat gebruiken; vim staat op een minimale installatie niet altijd volledig klaar.

Drie gewoontes die later veel ellende schelen:

  1. Maak eerst een kopie: cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.
  2. Test de configuratie voordat je een dienst herstart. Veel programma's hebben daar een eigen commando voor: sshd -t, nginx -t (les 2.2 en 7.2).
  3. Verander één ding tegelijk, zodat je weet wat een fout veroorzaakte.

Hoe staat je server ervoor?

Een paar commando's die je in elke situatie gebruikt:

anna@web1:~$ uname -a
Linux web1 6.12.0-... #1 SMP ... x86_64 GNU/Linux
anna@web1:~$ uptime
 10:12:44 up 3 days,  2:10,  1 user,  load average: 0.08, 0.05, 0.01
anna@web1:~$ df -h /
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        40G  3.1G   35G   9% /
anna@web1:~$ free -h
               total        used        free      shared  buff/cache   available
Mem:           3.8Gi       412Mi       2.9Gi       1.0Mi       720Mi       3.4Gi
Swap:             0B          0B          0B
  • uname -a: welke kernel er draait.
  • uptime: hoe lang de server al aan staat en de load average over 1, 5 en 15 minuten. Ruwweg: een load die langdurig boven het aantal processorkernen ligt, betekent dat er gewacht wordt.
  • df -h: vrije schijfruimte (-h is "human readable", met G en M). Een volle schijf is een van de meest voorkomende oorzaken van een server die "zomaar" stopt.
  • free -h: geheugen. Kijk naar de kolom available, niet free: Linux gebruikt vrij geheugen als cache (buff/cache) en geeft dat terug als een programma het nodig heeft.

En je netwerk, uit les 1.2: ip -brief address.

Hulp vinden

Je hoeft niet alle opties te onthouden. Wel moet je weten waar ze staan:

  • man ssh opent de handleiding (manual page) van een commando. Bladeren als bij less, zoeken met /. man sshd_config beschrijft elk instelbaar woord in dat bestand.
  • ls --help geeft bij de meeste commando's een korte lijst van opties.
  • De Tab-toets vult namen van commando's en bestanden aan. Twee keer Tab toont de mogelijkheden. Dat scheelt typfouten in lange paden.
  • Pijltje omhoog haalt eerdere commando's terug; history toont ze allemaal.

Op een minimale installatie ontbreken handleidingen soms. Op Debian en Ubuntu installeer je ze met apt install man-db (module 4).

Pipes en grep

Commando's kun je aan elkaar knopen met een pipe (|): de uitvoer van het ene is de invoer van het volgende. grep filtert regels die een woord bevatten:

anna@web1:~$ grep PasswordAuthentication /etc/ssh/sshd_config
#PasswordAuthentication yes
anna@web1:~$ ls -l /etc | less

Regels die met # beginnen, zijn commentaar: ze doen niets en tonen vaak de standaardwaarde. In les 2.2 zie je waarom dat bij SSH verwarrend kan zijn.

Valkuilen

  • Plakken zonder lezen. Commando's van internet doen precies wat er staat, ook als dat iets anders is dan de titel van het artikel belooft. Lees elk commando voordat je het uitvoert, en zeker als je root bent.
  • rm heeft geen prullenbak. Weg is weg. Wees extra voorzichtig met rm -r (een map met alles erin) en met jokertekens zoals *.
  • Hoofdletters tellen. /etc/SSH bestaat niet; /etc/ssh wel.
  • Spaties in paden moeten tussen aanhalingstekens: cat "/srv/mijn site/index.html". Beter: gebruik geen spaties in namen op een server.

Samenvatting

  • De prompt vertelt wie je bent, op welke server en waar; # betekent root.
  • Configuratie staat in /etc, logs in /var/log, gegevens van programma's in /var/lib, thuismappen in /home.
  • Lees met cat, less, head en tail; bewerk met nano, na een kopie, en test de configuratie voordat je herstart.
  • df -h, free -h, uptime en ip -brief address laten zien hoe je server ervoor staat.
  • Hulp staat in man en --help; Tab vult aan; met | en grep filter je uitvoer.

Quiz

1. Je prompt is root@web1:/var/log#. Wat weet je nu?



2. Je staat in /etc. Welk pad wijst naar hetzelfde bestand als /etc/nginx/nginx.conf?



3. free -h toont free 120Mi en available 2.9Gi. Heeft de server te weinig geheugen?



4. Wat is het verstandigst voordat je /etc/ssh/sshd_config aanpast?



5. Waar zoek je op welke instellingen sshd_config kent?



Opdracht

Opdracht O1.4: Je server leren kennen. Voer de commando's uit de les uit op je eigen server en vul in: distributie en versie, kernel, vrije schijfruimte, beschikbaar geheugen, load, IPv4 en IPv6, en welke bestanden in /etc/ssh alleen door root te lezen zijn. Beantwoord daarna twee vragen over wat je zag.

Opdracht O1.4: Je server leren kennen

Deze opdracht doe je zelf; niemand kijkt hem na. Vink af wat je gedaan hebt en markeer de opdracht als gedaan.



Je vinkjes en aantekeningen blijven alleen in deze browser; we sturen ze nergens heen. Ben je aangemeld, dan bewaren we in Mijn cursussen alleen dat je de opdracht gedaan hebt.

Verder lezen

Even geduld…

Stel je domeinen in

Regel per domein de nameservers, de koppeling aan je hosting en wie de eigenaar wordt.

Je domeinen laden…