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:
| Map | Wat erin staat |
|---|---|
/etc | Configuratie: SSH (/etc/ssh), webserver (/etc/nginx), gebruikers (/etc/passwd) |
/var/log | Logbestanden (naast de journal, les 6.2) |
/var/lib | Gegevens van programma's, bijvoorbeeld databases en Docker |
/home | Thuismappen van gewone gebruikers, zoals /home/anna |
/root | Thuismap van root |
/usr | Geïnstalleerde programma's en bibliotheken |
/tmp | Tijdelijke bestanden, wordt opgeruimd |
/srv of /var/www | Gebruikelijke 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.pubVan 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 metq;head -n 20 bestandentail -n 20 bestand: de eerste of laatste regels;tail -fblijft 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/hostsOnderaan 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:
- Maak eerst een kopie:
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak. - 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). - 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 0Buname -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 (-his "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 kolomavailable, nietfree: 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 sshopent de handleiding (manual page) van een commando. Bladeren als bijless, zoeken met/.man sshd_configbeschrijft elk instelbaar woord in dat bestand.ls --helpgeeft 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;
historytoont 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 | lessRegels 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.
rmheeft geen prullenbak. Weg is weg. Wees extra voorzichtig metrm -r(een map met alles erin) en met jokertekens zoals*.- Hoofdletters tellen.
/etc/SSHbestaat niet;/etc/sshwel. - 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,headentail; bewerk metnano, na een kopie, en test de configuratie voordat je herstart. df -h,free -h,uptimeenip -brief addresslaten zien hoe je server ervoor staat.- Hulp staat in
manen--help; Tab vult aan; met|engrepfilter je uitvoer.
Quiz
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.
available telt ook het cachegeheugen mee dat Linux vrijgeeft. Het .pub-bestand is het publieke deel dat elke client ziet; het bestand zonder .pub is geheim (600, root), want wie het heeft kan zich als jouw server voordoen.
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
- Schijfruimte van je VPS vergroten
- SSH-toegang en de Terminal in DirectAdmin: welke pakketten en hoe je inlogt
- Debian-referentie, hoofdstuk 1 (handleiding voor de commandoregel): https://www.debian.org/doc/manuals/debian-reference/ch01.en.html
- Filesystem Hierarchy Standard 3.0: https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html
