Secure Shell

Netwerk

Start dit hoofdstuk met een nieuwe reservekopie van de Basisimage.

Online gaan met de Raspberry Pi is een kwestie van simpelweg een ethernet-kabel in de poort van de Pi pluggen en het andere uiteinde verbinden met net zo'n poort op je router. Zet je Pi aan, klik op het wereldbolicoontje van de Web Browser en je ziet het internet verschijnen. In de ethernetpoort zitten twee lampjes. De linker is groen en brandt zodra een full-duplex LAN-verbinding gedetecteerd is. De Pi is dan in staat gelijktijdig gegevens te versturen en te ontvangen. Als dat lampje knippert, wordt er data uitgewisseld. Het rechter lampje is amber bij een 1 GB, groen bij een 100 MB en uit bij een 10 MB LAN-verbinding.

De wifi-optie

Start de Pi op. Klik op het netwerkpictogram in het systeemvak.

Indien je geen WiFi Land hebt ingesteld, kan je geen WiFi verbinding opzetten. Dus eerst in het Raspberry pi Configuratie programma of met sudo raspi-config het Wifi Land instellen. Daarna moet de Raspberry Pi herstarten om de aanpassing te activeren.

Klik op het netwerk waarmee je verbinding wilt maken. Bijna alle thuisnetwerken gebruiken een netwerksleutel die op de router zelf opgeslagen is. Typ het Wachtwoord in het tekstvak en klik op . De bijbehorende verbinding wordt tot stand gebracht en uiteindelijk verschijnt er een nieuw IP-adres voor de wifi-verbinding. De IP-adressen kan je weergeven door het netwerkpictogram in het systeemvak met de muis aan te wijzen.

Verbinding controleren

Je kunt eenvoudig nagaan of de Pi een valide netwerkverbinding heeft. Start de LXTerminal met een klik op zijn pictogram in de balk bovenaan het scherm.
LXTerminal
Typ de volgende opdracht en druk Return om het uit te voeren:

pi@raspberrypi:~ $ ip a
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: eth0:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 2c:cf:67:23:67:27 brd ff:ff:ff:ff:ff:ff
    inet 192.168.129.54/23 brd 192.168.129.255 scope global dynamic noprefixroute eth0
       valid_lft 6201sec preferred_lft 6201sec
    inet6 2a02:a03f:e02a:8901:122d:5426:18c2:8565/64 scope global dynamic noprefixroute 
       valid_lft 86396sec preferred_lft 71996sec
    inet6 fe80::b91a:31bc:2687:dd96/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: wlan0:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 2c:cf:67:23:67:28 brd ff:ff:ff:ff:ff:ff
    inet 192.168.129.59/23 brd 192.168.129.255 scope global dynamic noprefixroute wlan0
       valid_lft 6957sec preferred_lft 6957sec
    inet6 2a02:a03f:e02a:8901:f82:687d:1862:cc8/64 scope global dynamic noprefixroute 
       valid_lft 86396sec preferred_lft 71996sec
    inet6 fe80::3f7c:9243:1428:bb97/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

Je krijgt dan een lijst met getallen te zien waarvan de regels die beginnen met inet, het IP-adres van de verbinding bevatten. Gewoonlijk is dat iets als 192.168.1.2, wat aangeeft dat de netwerk-verbinding werkt. Zie je zo'n adres niet verschijnen, dan kan er iets mis zijn aan de routerkant. Op de router moet een DHCP-server draaien en zodra de Pi wordt aangesloten, krijgt hij een IP-adres. Draait die server niet, dan krijgt geen enkel aangesloten apparaat toegang tot het netwerk. Ga vanaf een ander apparaat naar de webinterface van de router en log in op 192.168.1.1 of wat het IP-adres van uw router ook mag zijn, om te kijken of de DHCP-server ingeschakeld is. Ten slotte voer je de volgende opdracht in de terminal uit:

pi@raspberrypi:~ $ ping google.com
PING google.com(ams16s37-in-x0e.1e100.net (2a00:1450:400e:805::200e)) 56 data bytes
64 bytes from ams16s30-in-x0e.1e100.net (2a00:1450:400e:805::200e): icmp_seq=1 ttl=113 time=13.4 ms
64 bytes from ams16s30-in-x0e.1e100.net (2a00:1450:400e:805::200e): icmp_seq=2 ttl=113 time=14.3 ms
64 bytes from ams16s30-in-x0e.1e100.net (2a00:1450:400e:805::200e): icmp_seq=3 ttl=113 time=13.0 ms
64 bytes from ams16s30-in-x0e.1e100.net (2a00:1450:400e:805::200e): icmp_seq=4 ttl=113 time=13.2 ms
^C
--- google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 12.970/13.473/14.264/0.486 ms

Wacht een paar seconden en druk dan op Ctrl+c om te stoppen. Je ziet dan dat er een aantal pakketten zijn verzonden en ontvangen.

Toegang met SSH

Op afstand met een volledige grafische omgeving werken is cool, maar heeft ook zijn nadelen. Het werkt bijvoorbeeld niet bijzonder snel en ook niet zo makkelijk. Het voelt allemaal een beetje stroperig aan. Bovendien is die manier van werken niet zo veilig als je zou willen.

Als je op een makkelijke en veilige manier vanaf een andere computer toegang wilt tot je Raspberry Pi, zul je er achter komen dat je daar het best SSH voor kunt gebruiken.

SSH staat voor Secure Shell. Het is een cryptografisch netwerkprotocol dat ontworpen is voor veilige datacommunicatie via de opdrachtregel. Beginners zullen wellicht tegenwerpen dat het veel gemakkelijker is om de Raspberry Pi met de grafische omgeving op afstand te beheren, maar als je met een aantal basistechnieken van de opdrachtregel (commandline of CLI) overweg kunt, zul je merken dat je een aantal taken veel gemakkelijker via SSH op afstand kunt uitvoeren.

Het is prettig om te weten dat SSH standaard al goed geconfigureerd is - je hoeft er niet veel aan te doen om het werkend te krijgen.

SSH activeren

SSH is in Raspberry Pi OS standaard uit geschakeld, je kunt SSH als volgt activeren:

Inloggen

Windows gebruikers kunnen met het programma Windows Terminal gebruiken. Dit is de opvolger van de Opdrachtprompt en standaard in Windows 11 geïnstalleerd. Windows gebruikers die Windows Terminal nog niet op hun systeem hebben staan, bijvoorbeeld Windows 10 gebruikers, kunnen deze via de Windows Store installeren.

Onder Linux en macOS heb je geen extra software nodig. Open een terminalvenster en voer de volgende opdracht uit:

dany@main:~$ ssh pi@raspberrypi.local
The authenticity of host 'raspberrypi.local (192.168.129.54)' can't be established.
ED25519 key fingerprint is SHA256:7CUSHGCGOjL1b+Jf0mXE6pNk3WEGSoMU+Yz6CqsWq/E.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'raspberrypi.local' (ED25519) to the list of known hosts.
pi@raspberrypi.local's password: 
Linux raspberrypi 6.6.28+rpt-rpi-2712 #1 SMP PREEMPT Debian 1:6.6.28-1+rpt1 (2024-04-22) aarch64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon May 20 09:48:37 2024 from 192.168.129.55

Je kunt de hostname (raspberrypi.local) ook vervangen door het IP adres van de Raspberry Pi. Het gebruik van IP adressen heeft een paar nadelen:

Een hostname bestaat standaard uit twee delen: de computernaam en de netwerknaam (domain), gescheiden door een punt. In raspberrypi.local is de computernaam raspberrypi en de netwerknaam local. De computernaam wordt op de Raspberry Pi ingesteld en kan je vrij kiezen, zolang je maar geen twee dezelfde computernamen in hetzelfde netwerk gebruikt. Meestal bepaalt jouw router (netwerkcentrale) de lokale netwerknaam (domain, zie Wikipedia). Indien de hostname raspberrypi.local niet werkt, probeer je de punt en netwerknaam (domain) weg te laten. M.a.w. als je raspberrypi gebruikt, gaan de meeste routers ervan uit dat je binnen hetzelfde netwerk naar je Raspberry Pi zoekt. Mocht dit ook niet werken probeer dan de volgende domeinen: .home en .lan (meer info op Wikipedia).

Indien SSH merkt dat er iets is veranderd, bijvoorbeeld door een herinstallatie, krijg je de volgende waarschuwing:

dany@main:~$ ssh pi@raspberrypi.local
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ED25519 key sent by the remote host is
SHA256:7CUSHGCGOjL1b+Jf0mXE6pNk3WEGSoMU+Yz6CqsWq/E.
Please contact your system administrator.
Add correct host key in /home/dany/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/dany/.ssh/known_hosts:32
  remove with:
  ssh-keygen -f "/home/dany/.ssh/known_hosts" -R "raspberrypi.local"
Host key for raspberrypi.local has changed and you have requested strict checking.
Host key verification failed.

En wordt de verbinding automatisch afgebroken. Om de Raspberry Pi terug vrij te geven voor een opnieuw op te bouwen SSH-verbinding, voer je de volgende opdracht uit:

dany@main:~$ ssh-keygen -R raspberrypi.local
# Host raspberrypi.local found: line 30
# Host raspberrypi.local found: line 31
# Host raspberrypi.local found: line 32
/home/dany/.ssh/known_hosts updated.
Original contents retained as /home/dany/.ssh/known_hosts.old

Daarna kan je terug een SSH-verbinding met je Pi opbouwen.

Uitloggen

Een SSH-verbinding verbreek je door de shell te verlaten. Daarvoor voer je de volgende opdracht uit:

pi@raspberrypi:~ $ exit
uitgelogd
Connection to raspberrypi.local closed.

De exit opdracht logt de pi gebruiker eerst uit en daarna wordt de SSH-verbinding met de Raspberry Pi automatisch verbroken.

Bestanden uitwisselen met SSH

Onder Linux kan je bestanden via een SSH-verbinding uitwisselen met de standaard bestandsbeheerder via het sftp:// protocol. Onder Windows en macOS installeer de daarvoor FileZilla. Windows gebruikers moeten even opletten. Gebruik enkel de hier opgegeven FileZilla download webpagina. FileZilla installatieprogramma's van andere webpagina's bevatten vervelende reclamesoftware. Je kunt het installatieprogramma met reclamesoftware herkennen aan de naam: FileZilla_3.67.0_win64_sponsored2-setup.exe (aan het woord sponsored). Een alternatief voor Windows gebruikers is WinSCP.

Installeer en start FileZilla.

Om bestanden via een SSH-verbinding met je Raspberry Pi uit te wisselen, typ je in het tekstvak Host de hostname (of het IP-adres) van de Pi. Als Gebruikersnaam gebruik je pi en als Wachtwoord het bij de gebruiker pi horende wachtwoord. Vergeet niet als Poort 22 (poort voor beveiligde SSH bestandsuitwisseling of kortweg SFTP) in te vullen. Standaard gebruikt FileZilla namelijk 21 (poort voor onbeveiligde FTP bestandsuitwisseling). Je kunt het tekstvak Poort leeg laten als je in het tekstvak Host het protocol sftp:// voor de hostname of het IP-adres plaatst (vb: sftp://raspberrypi.local).

FileZilla Client kan wachtwoorden onthouden. FileZilla zelf raadt aan om wachtwoorden niet op de computer op te slaan, wat zelfs voor versleutelde wachtwoorden een goede raad is.

Bij het eerste contact herkent Filezilla de Raspberry Pi niet en wordt gevraagd de Onbekende hostsleutel te vertrouwen. Klik op de knop als je zeker bent dat je verbinding wilt maken met dit apparaat.

Hostsleutel vertrouwen
FileZilla

In het bovenste deelvenster verschijnen meldingen i.v.m. de SSH-verbinding. In het linker deelvenster heb je toegang tot de mappen en bestanden op uw computer, in het rechter deelvenster heb je toegang tot de bestanden van je Pi. Standaard kom je steeds terecht in de gebruikersmap van zowel de Windows gebruiker op uw Windows computer als op je Pi. Van daaruit kun je naar elke voor deze gebruiker toegankelijke map bladeren. Bestanden en mappen kan je Uploaden van jouw computer naar de Pi of Downloaden van de Pi naar jouw computer.

Client/server

Om met SSH te kunnen werken heb je twee toepassingen nodig op twee verschillende apparaten. Op het ene toestel heb je een SSH client, op het andere een SSH server nodig. Op welk toestel de client en server staat, maakt niet uit. SSH is een standaard methode om apparaten veilig met elkaar te laten communiceren, vandaar dat alle besturingssystemen het ondersteunen. Elk Linux systeem (dus ook Raspberry Pi OS) heeft standaard zowel de client als de server aan boord. Bij macOS zijn de SSH client en server standaard aanwezig, maar is de SSH server standaard uitgeschakeld. Bij Windows is de SSH client standaard aanwezig, maar de SSH server niet.

Daar SSH via het netwerk werkt, moeten mensen met een firewall deze zo instellen dat inkomend SSH netwerkverkeer is toegelaten (poort 22).

Mensen die met verschillende systemen werken, kunnen dus met SSH een communicatie tussen de verschillende apparaten opbouwen om opdrachten en bestanden uit te wisselen. Handiger dan op alle systemen software te installeren om verschillende systeemgebonden protocollen te ondersteunen.

SSH server installeren en activeren in Windows 11

Bekijk ook de officiële richtlijnen van Microsoft.

Microsoft Windows kan gebruik maken van online accounts als gebruiker. Dit betekent dat je ook via SSH moet inloggen met het Microsoft account met bijpassende wachtwoord, een voorbeeld:

pi@raspberrypi:~ $ ssh dany.pinoy@live.com@QEMU.local
The authenticity of host 'qemu.local (192.168.129.56)' can't be established.
ED25519 key fingerprint is SHA256:NB3KoU1KR9q/XqSFcNLaNIrx9f893m2ENSjdq1nWHA0.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'qemu.local' (ED25519) to the list of known hosts.
dany.pinoy@live.com@qemu.local's password:

En je krijgt:

Microsoft Windows [Version 10.0.22631.3447]
(c) Microsoft Corporation. Alle rechten voorbehouden.

danyp@QEMU C:\Users\danyp>

Let op: aangezien je verbonden bent met een Windows systeem, kan je enkel Windows opdrachten uitvoeren.

OpenSSH server op macOS

MacOS gebruikers kunnen de handleiding Een externe computer toegang bieden tot je Mac volgen om de SSH server te activeren.

Praktijk opdracht
  1. Om bestanden van uw Raspberry Pi naar uw computer te downloaden, start je Filezilla Client.
    1. Maak een verbinding met de Raspberry Pi.
    2. Navigeer op jouw computer (linker deelvenster) naar de map C:\Users\Gebruiker\Pictures\ (pas Gebruiker aan naar de op jouw Windows computer aanwezige gebruikersnaam).
    3. Navigeer op de Pi (rechter deelvenster) naar de map /usr/share/. Tip: Om naar de bovenliggende map te navigeren, open je de map met als naam twee punten (..).
    4. Klik met de rechter muisknop op de map rpd-wallpaper en Download deze map.
    5. Start Windows Verkenner en open in de map Afbeeldingen > rpd-wallpaper een gedownloade afbeelding. De afbeeldingen worden geopend met de Foto's app van Windows. Blader door de afbeeldingen met de pijltoetsen. Het downloaden van foto's is handig als je de Raspberry Pi gebruikt als bewakingscamera of een andere toepassing waarbij je foto's neemt.
  2. Alle instellingen van je Raspberry Pi worden in tekstbestanden opgeslagen en niet in een register zoals bij Windows. Daardoor kan je instellingen voor je een gewaagde aanpassing doorvoert op een eenvoudige manier veilig stellen. Dit gaat als volgt:
    1. Navigeer in FileZilla naar de map Documents van de Windows gebruiker.
    2. Klik met de rechter muisknop in de Documents map en voer de opdracht Map aanmaken uit.
    3. Geef de nieuwe map de naam Raspberry Pi.
    4. De meeste instellingen voor de pi gebruiker worden in de map /home/pi/.config opgeslagen.
    5. Download de .config map van de pi gebruiker naar de Documents\Raspberry Pi map.
    6. Download de map /etc met de systeeminstellingen van de Pi naar de Documents\Raspberry Pi map. Daarbij krijg je rode foutmeldingen in het bovenste deelvenster. Dit is normaal, uit veiligheidsoverwegingen heeft de pi gebruiker niet overal toegang tot. M.a.w. de pi gebruiker kan bepaalde mappen en bestanden niet openen (lezen) en dus ook niet kopiëren.
    7. Download het bestand /boot/firmware/config.txt met specifieke Raspberry Pi hardware instellingen naar de Documents\Raspberry Pi map.
    8. Open Windows Verkenner en navigeer naar de Documenten\Raspberry Pi map.
    9. Open het bestand config.txt. Je kunt de voor uw Pi hardware gebruikte instellingen in dit tekstbestand bekijken. Pas deze echter nooit aan met Kladblok, maar gebruik steeds editors of configuratieprogramma's op uw Pi. De regels die beginnen met een # zijn commentaarregels of uitgeschakelde instellingen waarvoor dan de standaard instelling gebruikt wordt.
  3. Start Windows Terminal en maak een SSH-verbinding met uw Raspberry Pi.
    1. Het is belangrijk uw Raspberry Pi bij de tijd (up to date) te houden. Door bij te werken krijg je de allernieuwste software en belangrijke beveiligingsaanpassingen. Alleen een gebruiker met super rechten (Super Powers), sudo, kan de Raspberry Pi bijwerken. Alle administratieve taken die het hele systeem kunnen beïnvloeden hebben Super rechten nodig. Om de lijst met beschikbare Raspberry Pi software bij te werken, halen we aangepaste lijsten van het internet. Om tikfouten te vermijden, kan je half getypte opdrachten laten aanvullen met de Tab-toets. De volgende opdracht typ je als volgt : sudTab apt updTab.
      pi@raspberrypi:~ $ sudo apt update 
      Geraakt:1 http://deb.debian.org/debian bookworm InRelease
      Geraakt:2 http://deb.debian.org/debian-security bookworm-security InRelease      
      Geraakt:3 http://deb.debian.org/debian bookworm-updates InRelease                                        
      Geraakt:4 http://archive.raspberrypi.com/debian bookworm InRelease                                       
      Pakketlijsten worden ingelezen... Klaar                                          
      Boom van vereisten wordt opgebouwd... Klaar
      De statusinformatie wordt gelezen... Klaar 
      3 pakketten kunnen opgewaardeerd worden. Voer 'apt list --upgradable' uit om ze te zien.

      Tijdens de conversatie tussen jouw Pi en de internet server met beschikbare software zie je heel wat tekst op het scherm voorbijvliegen. Deze actie werkt de software zelf niet bij, daarvoor voer je de volgende opdracht uit die je als volgt probeert te typen:

      pi@raspberrypi:~ $ sudo apt upTabTab
      update   upgrade
      Je merkt na de eerste Tab geen reactie, bij de tweede Tab zie je alle aanvulmogelijkheden, met andere woorden je typt best nog één of meerdere letters tot Tab zelf automatisch verder kan aanvullen:
      pi@raspberrypi:~ $ sudo apt upgrade 
      Pakketlijsten worden ingelezen... Klaar
      Boom van vereisten wordt opgebouwd... Klaar
      De statusinformatie wordt gelezen... Klaar 
      Opwaardering wordt doorgerekend... Klaar
      De volgende pakketten zullen opgewaardeerd worden:
        firefox rpi-eeprom wf-panel-pi
      3 opgewaardeerd, 0 nieuw geïnstalleerd, 0 te verwijderen en 0 niet opgewaardeerd.
      Er moeten 70,5 MB aan archieven opgehaald worden.
      Na deze bewerking zal er 10,4 MB extra schijfruimte gebruikt worden.
      Wilt u doorgaan? [J/n] 

      Na een paar ogenblikken wordt op het scherm weergegeven voor welke software er een update beschikbaar is. Het bijwerken moet je nu bevestigen met j gevolgd door Return. Hoelang het bijwerken duurt, hangt af van jouw internetsnelheid, het aantal bij te werken pakketten en de snelheid van jouw Pi.

      Wilt u doorgaan? [J/n] j
      Ophalen:1 http://archive.raspberrypi.com/debian bookworm/main arm64 firefox arm64 126.0-1+rpt5 [63,5 MB]
      Ophalen:2 http://archive.raspberrypi.com/debian bookworm/main arm64 rpi-eeprom all 23.1-1 [6.546 kB]
      Ophalen:3 http://archive.raspberrypi.com/debian bookworm/main arm64 wf-panel-pi arm64 0.75 [493 kB]                
      70,5 MB opgehaald in 6s (11,3 MB/s)                                                                                
      De changelogs worden ingelezen... Klaar
      (Database wordt ingelezen ... 147626 bestanden en mappen momenteel geïnstalleerd.)
      Uitpakken van .../firefox_126.0-1+rpt5_arm64.deb wordt voorbereid...
      Bezig met uitpakken van firefox (126.0-1+rpt5) over (125.0.1-1+rpt4) ...
      Uitpakken van .../rpi-eeprom_23.1-1_all.deb wordt voorbereid...
      Bezig met uitpakken van rpi-eeprom (23.1-1) over (23.0-1) ...
      Uitpakken van .../wf-panel-pi_0.75_arm64.deb wordt voorbereid...
      Bezig met uitpakken van wf-panel-pi (0.75) over (0.74) ...
      Instellen van firefox (126.0-1+rpt5) ...
      Instellen van wf-panel-pi (0.75) ...
      Instellen van rpi-eeprom (23.1-1) ...
      Bezig met afhandelen van triggers voor desktop-file-utils (0.26-1) ...
      Bezig met afhandelen van triggers voor hicolor-icon-theme (0.17-2) ...
      Bezig met afhandelen van triggers voor gnome-menus (3.36.0-1.1) ...
      Bezig met afhandelen van triggers voor man-db (2.11.2-2) ...
      Bezig met afhandelen van triggers voor mailcap (3.70+nmu1) ...
    2. Deze twee opdrachten kan je aan elkaar knopen. Als de eerste opdracht, apt update, succesvol is uitgevoerd, wordt de tweede opdracht, apt upgrade, gestart. We voegen de -y optie toe om de opdracht automatisch zonder menselijke tussenkomst helemaal af te werken:

      pi@raspberrypi:~ $ sudo apt update && sudo apt upgrade -y
      Geraakt:1 http://deb.debian.org/debian bookworm InRelease
      Geraakt:2 http://deb.debian.org/debian-security bookworm-security InRelease        
      Geraakt:3 http://deb.debian.org/debian bookworm-updates InRelease                                          
      Geraakt:4 http://archive.raspberrypi.com/debian bookworm InRelease                                         
      Pakketlijsten worden ingelezen... Klaar                                            
      Boom van vereisten wordt opgebouwd... Klaar
      De statusinformatie wordt gelezen... Klaar 
      Alle pakketten zijn up-to-date.
      Pakketlijsten worden ingelezen... Klaar
      Boom van vereisten wordt opgebouwd... Klaar
      De statusinformatie wordt gelezen... Klaar 
      Opwaardering wordt doorgerekend... Klaar
      0 opgewaardeerd, 0 nieuw geïnstalleerd, 0 te verwijderen en 0 niet opgewaardeerd.

      Het is belangrijk je Pi regelmatig bij te werken, ten minste één keer per maand.

    3. Bij een upgrade worden geen pakketten (software) verwijderd of toegevoegd, enkel geïnstalleerde pakketten worden bijgewerkt naar recentere versies. Dit heeft als voordeel dat jouw project nooit in moeilijkheden komt door software die opeens van het systeem verdwijnt of anders werkt. Het nadeel is echter dat je de ontwikkeling van de software niet helemaal volgt, je krijgt namelijk veel minder nieuwe functies. Om het systeem vollediger bij te werken, gebruik je een full-upgrade. Let wel dit houdt risico's in, want er worden voor het systeem overbodige pakketten verwijderd en nieuwe software aan het systeem toegevoegd.
      pi@raspberrypi:~ $ sudo apt full-upgrade
      Pakketlijsten worden ingelezen... Klaar
      Boom van vereisten wordt opgebouwd... Klaar
      De statusinformatie wordt gelezen... Klaar 
      Opwaardering wordt doorgerekend... Klaar
      0 opgewaardeerd, 0 nieuw geïnstalleerd, 0 te verwijderen en 0 niet opgewaardeerd.
    4. Om het pakket piclone (het programmma SD Card Copier) te verwijderen, voer je de volgende opdracht uit:
      pi@raspberrypi:~ $ sudo apt remove piclone
      Pakketlijsten worden ingelezen... Klaar
      Boom van vereisten wordt opgebouwd... Klaar
      De statusinformatie wordt gelezen... Klaar 
      De volgende pakketten zullen VERWIJDERD worden:
        piclone
      0 opgewaardeerd, 0 nieuw geïnstalleerd, 1 te verwijderen en 0 niet opgewaardeerd.
      Na deze bewerking zal er 168 kB schijfruimte vrijkomen.
      Wilt u doorgaan? [J/n] j
      (Database wordt ingelezen ... 147626 bestanden en mappen momenteel geïnstalleerd.)
      piclone (0.29) wordt verwijderd ...
      Bezig met afhandelen van triggers voor gnome-menus (3.36.0-1.1) ...
      Bezig met afhandelen van triggers voor mailcap (3.70+nmu1) ...
      Bezig met afhandelen van triggers voor desktop-file-utils (0.26-1) ...
      Deze opdracht beperkt zich tot het verwijderen van het opgegeven pakket. Wil je de configuratiebestanden van het opgegeven pakket eveneens verwijderen, vervang in de opdracht dan remove door purge. Bij het verwijderen van pakketten blijven afhankelijke pakketten op het systeem achter. Afhankelijke pakketten zijn noodzakelijk om bepaalde software te draaien en worden indien nodig automatisch geïnstalleerd. Om na het verwijderen van een pakket, de niet meer noodzakelijke afhankelijke pakketten ook te verwijderen, gebruik je de volgende opdracht:
      pi@raspberrypi:~ $ sudo apt autoremove
      Pakketlijsten worden ingelezen... Klaar
      Boom van vereisten wordt opgebouwd... Klaar
      De statusinformatie wordt gelezen... Klaar 
      0 opgewaardeerd, 0 nieuw geïnstalleerd, 0 te verwijderen en 0 niet opgewaardeerd.
  4. Enkele basisopdrachten:
    1. Om te weten in welke map we werken, bestaat de opdracht pwd (Print Working Directory):
      pi@raspberrypi:~ $ pwd
      /home/pi
      Je ziet het volledige pad van uw gebruikersmap (home directory).
    2. Om de inhoud van een map weer te geven, gebruik je de opdracht:
      pi@raspberrypi:~ $ ls
      Bookshelf  Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos
      Mappen herken je aan de blauwe tekstkleur.
    3. Om de map Desktop te openen, gebruik je de opdracht:
      pi@raspberrypi:~ $ cd Desktop/
      pi@raspberrypi:~/Desktop $ ls
      Deze map is leeg.
    4. We kunnen terug naar de bovenliggende map met de opdracht:
      pi@raspberrypi:~/Desktop $ cd ..
      pi@raspberrypi:~ $ pwd
      /home/pi
      
    5. Om een map buiten onze gebruikersmap te openen, gebruiken we het volledige pad vanaf de basismap / (root):
      pi@raspberrypi:~ $ cd /dev/
      pi@raspberrypi:/dev $ pwd
      /dev
      pi@raspberrypi:/dev $ ls
      autofs           gpiomem0      mapper     ram13       tty    tty28  tty48     ttyprintk  vcsa7        video28
      block            gpiomem1      media0     ram14       tty0   tty29  tty49     uhid       vcsu         video29
      btrfs-control    gpiomem2      media1     ram15       tty1   tty3   tty5      uinput     vcsu1        video30
      bus              gpiomem3      media2     ram2        tty10  tty30  tty50     urandom    vcsu2        video31
      cachefiles       gpiomem4      mem        ram3        tty11  tty31  tty51     v4l        vcsu3        video32
      cec0             hwrng         mmcblk0    ram4        tty12  tty32  tty52     vcio       vcsu4        video33
      cec1             i2c-11        mmcblk0p1  ram5        tty13  tty33  tty53     vc-mem     vcsu5        video34
      char             i2c-12        mmcblk0p2  ram6        tty14  tty34  tty54     vcs        vcsu6        video35
      console          initctl       mqueue     ram7        tty15  tty35  tty55     vcs1       vcsu7        video36
      cpu_dma_latency  input         net        ram8        tty16  tty36  tty56     vcs2       vga_arbiter  video37
      cuse             kmsg          null       ram9        tty17  tty37  tty57     vcs3       vhci         watchdog
      disk             kvm           port       random      tty18  tty38  tty58     vcs4       vhost-net    watchdog0
      dma_heap         log           ppp        rfkill      tty19  tty39  tty59     vcs5       vhost-vsock  zero
      dri              loop0         pps0       rtc         tty2   tty4   tty6      vcs6       video19
      fd               loop1         ptmx       rtc0        tty20  tty40  tty60     vcs7       video20
      full             loop2         ptp0       serial0     tty21  tty41  tty61     vcsa       video21
      fuse             loop3         pts        shm         tty22  tty42  tty62     vcsa1      video22
      gpiochip0        loop4         ram0       snd         tty23  tty43  tty63     vcsa2      video23
      gpiochip1        loop5         ram1       spidev10.0  tty24  tty44  tty7      vcsa3      video24
      gpiochip2        loop6         ram10      stderr      tty25  tty45  tty8      vcsa4      video25
      gpiochip3        loop7         ram11      stdin       tty26  tty46  tty9      vcsa5      video26
      gpiochip4        loop-control  ram12      stdout      tty27  tty47  ttyAMA10  vcsa6      video27

      Deze map bevat bestanden die op onze Pi aanwezige onderdelen voorstellen (zowel fysieke als virtuele).
    6. Om snel terug naar de gebruikersmap te gaan, gebruik je de opdracht:
      pi@raspberrypi:/dev $ cd
    7. Nu we terug in onze gebruikersmap zijn, maken we een simpel tekstbestand met de opdracht:
      pi@raspberrypi:~ $ nano -B leesme.txt
    8. Nano is een zeer eenvoudige teksteditor. Je gebruikt Nano om teksten aan te maken en aan te passen, om te programmeren en configuratiebestanden aan te passen. Bij het aanpassen van teksten gebruik je best de -B optie, die maakt voor het opslaan van de aanpassingen steeds een back-up van de originele tekst. Handig bij het aanpassen van configuratiebestanden. Wij typen een eenvoudige tekst:
        GNU nano 7.2                       leesme.txt *                               
      Dit moet je lezen.
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      ^G Hulp      ^O Opslaan   ^W Zoeken    ^K Knippen   ^T Opdracht  ^C Positie
      ^X Afsluiten ^R Inlezen   ^\ Vervangen ^U Plakken   ^J Uitvullen ^_ Naar regel
      
      Onderaan het scherm staat een menubalk. Eerst moet je de tekst Opslaan met de sneltoets Ctrl+ o waarmee je een dialoogregel opent. In deze dialoogregel kan je de naam van het tekst bestand nog aanpassen. Druk Return om de tekst op te slaan. Er verschijnt een berichtregel met het aantal opgeslagen regels. Nano kan je Afsluiten met de sneltoets Ctrl+x.
    9. Om de inhoud van een tekstbestand zoals leesme.txt weer te geven, gebruik je de volgende opdracht:
      pi@raspberrypi:~ $ less leesme.txt
      Om less te verlaten druk je q. Bij langere bestanden worden de inhoud scherm per scherm weergegeven. Om de door Raspberry Pi OS ondersteunde bestandsformaten weer te geven, gebruik je de volgende opdracht:
      pi@raspberrypi:~ $ less /etc/mime.types
      ###############################################################################
      #
      #  Media (MIME) types and the extensions that represent them.
      #
      #  The format of this file is a media type on the left and zero or more
      #  filename extensions on the right.  Programs using this file will map
      #  files ending with those extensions to the associated type.
      #
      #  This file is part of the "media-types" package.  Please report a bug using
      #  the "reportbug" command of the "reportbug" package if you would like new
      #  types or extensions to be added.
      #
      #  The reason that all types are managed by the media-types package instead
      #  allowing individual packages to install types in much the same way as they
      #  add entries in to the mailcap file is so these types can be referenced by
      #  other programs (such as a web server) even if the specific support package
      #  for that type is not installed.
      #
      #  Users can add their own types if they wish by creating a ".mime.types"
      #  file in their home directory.  Definitions included there will take
      #  precedence over those listed here.
      #
      ###############################################################################
      /etc/mime.types
      
      Met de toetsen Pg Up en Pg Dn kan je per scherm bladeren, per regel blader je met de pijltoetsen op en neer.
    10. Met de volgende opdracht maak je de map spullen:
      pi@raspberrypi:~ $ mkdir spullen
      Controleer of de map is aangemaakt met de ls opdracht. Open met de cd opdracht de pas aangemaakte map. Keer daarna terug naar de gebruikersmap.
  5. Kopieer en verplaats opdrachten:
    1. Nu we een map hebben aangemaakt, kunnen we er bestanden naar kopiëren. Je kopieert (copy) de tekst leesme.txt naar de map spullen met de opdracht:
      pi@raspberrypi:~ $ cp leesme.txt spullen/
      Bekijk de inhoud van de spullen map om te controleren of onze kopieeropdracht is gelukt. Keer daarna terug naar de gebruikersmap.
    2. Het lege bestand leeg.txt maak je aan met de opdracht:
      pi@raspberrypi:~ $ touch leeg.txt
    3. Eigenlijk hoort dit bestand thuis in de map spullen. Verplaats (move) het bestand leeg.txt naar de map spullen met de opdracht:
      pi@raspberrypi:~ $ mv leeg.txt spullen/
      Open de map spullen en controleer of het bestand leeg.txt daar aanwezig is.
    4. Om de naam van een bestand te wijzigen, gebruik je de mv opdracht als volgt:
      pi@raspberrypi:~/spullen $ mv leeg.txt ledig.txt
      Controleer of de map nog steeds twee bestanden bevat, waarvan één met de naam ledig.txt.
  6. Tijd om wat op te ruimen, maar wees voorzichtig. Na het verwijderen van mappen en/of bestanden kan je deze niet terug herstellen, een prullenbak of ongedaan maken bestaat niet. Verwijderen is dus steeds definitief.
    1. Om het bestand ledig.txt definitief te verwijderen, gebruik je de opdracht:
      pi@raspberrypi:~/spullen $ rm ledig.txt
      Controleer of het bestand wel degelijk is verdwenen.
    2. Keer terug naar de gebruikersmap. Om de map spullen te verwijderen, gebruik je de volgende opdracht:
      pi@raspberrypi:~ $ rmdir spullen
      rmdir: kan 'spullen' niet verwijderen: Map is niet leeg
      Om de map eerst leeg te maken, voor je deze verwijderd, gebruik je de rm opdracht met extra opties. Met de optie r (recursief) open je de map en al zijn submappen om deze eerst leeg te maken. Met de optie f (forced) automatiseer je het verwijderen, m.a.w. val ons niet lastig met eventuele obstakels, verwijder gewoon alles. De opdracht wordt dan:
      pi@raspberrypi:~ $ rm -rf spullen/
      Controleer of de map spullen nu verdwenen is.
  7. Standaard heeft Raspberry Pi OS maar één gebruiker (pi). We kunnen onze Raspberry Pi delen met anderen, maar mogen die aan ons werk kunnen? Als dit niet het geval is, maak je extra gebruikers aan.
    1. De nieuwe gebruiker hacker maak je aan met de opdracht:
      pi@raspberrypi:~ $ sudo adduser hacker
      Toevoegen van gebruiker `hacker'...
      Toevoegen nieuwe groep `hacker' (1001).
      Toevoegen nieuwe gebruiker `hacker' (1001) met groep `hacker'.
      Aanmaken gebruikersmap `/home/hacker'...
      Kopiëren bestanden van `/etc/skel' ...
      Nieuw wachtwoord: 
      Nieuw wachtwoord herhalen: 
      passwd: wachtwoord is met succes aangepast
      De gebruikersinformatie over hacker wordt veranderd
      Voer de nieuwe waarde in of druk op Enter voor de standaardwaarde
              Volledige naam []: 
              Kamernummer []: 
              Telefoon werk []: 
              Telefoon thuis []: 
              Varia []: 
      Is deze informatie correct? [Y/n]
      Je gebruikt sudo omdat het aanmaken van een gebruiker een systeemopdracht is. Bij het aanmaken moet je voor de aan te maken gebruiker een wachtwoord blind ingeven (tweemaal om eventuele tikfouten uit te sluiten). Daarna wordt gebruikersinformatie gevraagd, dit is optioneel en kan je overslaan door Return te drukken. De laatste vraag is of de opgegeven informatie juist is. Door opnieuw Return te drukken, geef je het standaard antwoord (hoofdletter tussen haakjes, hier Y van Yes).
    2. Onze nieuwe hacker gebruiker, heeft geen Super Powers en kan dus geen systeemopdrachten uitvoeren. Om een gebruiker toegang te geven tot systeemopdrachten, moet deze lid worden van de bevoorrechte sudo groep. Om de hacker gebruiker toe te voegen aan de sudo groep gebruik je de opdracht:
      pi@raspberrypi:~ $ sudo adduser hacker sudo
      Toevoegen gebruiker `hacker' aan groep `sudo'...
      Gebruiker hacker wordt toegevoegd aan groep sudo
      Klaar.
    3. We testen onze nieuwe gebruiker door verder te werken als de gebruiker hacker. We switchen naar de gebruiker hacker met de opdracht (switch user):
      pi@raspberrypi:~ $ su hacker
      Wachtwoord: 
      hacker@raspberrypi:/home/pi $
      Na het ingeven van het bij de gebruiker hacker horende wachtwoord, werken we als gebruiker hacker.
    4. We werken echter nog steeds in de gebruikersmap van de pi gebruiker. Ga naar de gebruikersmap van de gebruiker hacker met de opdracht:
      hacker@raspberrypi:/home/pi $ cd
      Zo heeft elke gebruiker zijn eigen gebruikersmap met zijn eigen bestanden en mappenstructuur. Gebruikers met Super Powers kunnen echter alle bestanden op het systeem aanpassen en/of verwijderen, dus ook de bestanden van andere gebruikers en het systeem. Gebruikers die geen lid zijn van de groep sudo, kunnen deze bestanden meestal wel openen maar niet aanpassen of verwijderen, enkel bestanden in hun eigen gebruikersmap kunnen ze zelf beheren.
    5. Je kunt de hacker gebruiker terug afmelden met de volgende opdracht:
      hacker@raspberrypi:~ $ exit
      exit
  8. Opdrachten met tekstbestanden:
    1. We beginnen met het maken van een bestand:
      pi@raspberrypi:~ $ echo "Dit is een bestand." > mijnbestand
      De opdracht echo doet wat zijn naam reeds zegt. Probeer maar eens:
      pi@raspberrypi:~ $ echo Hallo
      Hallo
      Met het symbool > (groter-dan-teken) stoppen we de uitkomst van de voorafgaande opdracht in het hiernavolgende bestand; als dit bestand al bestaat, overschrijf het dan.
    2. Nu hebben we een bestand gemaakt en er iets ingestopt, maar dat willen we ook kunnen zien. Hiervoor gebruiken we de opdracht cat (concatenate).
      pi@raspberrypi:~ $ cat mijnbestand
      Dit is een bestand.
    3. cat kunnen we gebruiken om de inhoud van een bestand te laten zien of om bestanden aan elkaar te knopen. Dat gaan we meteen proberen en we maken daarom snel een tweede bestand aan:
      pi@raspberrypi:~ $ echo "Dit is het tweede bestand." > tweedebestand
      Nu gaan we onze bestanden aan elkaar knopen:
      pi@raspberrypi:~ $ cat mijnbestand tweedebestand > derdebestand
      en vragen de inhoud van het derde bestand op:
      pi@raspberrypi:~ $ cat derdebestand
      Dit is een bestand.
      Dit is het tweede bestand.
      We zien nu dat we beide bestanden aan elkaar geknoopt (gecat) hebben.
    4. Van een aantal van de hier gebruikte opdrachten kunnen we de werking beïnvloeden door middel van zogenaamde argumenten. Dat zijn toevoegingen aan een opdracht die er een nauwkeuriger richting aan geven. Zo kent cat het argument -n:
      pi@raspberrypi:~ $ cat -n derdebestand
           1  Dit is een bestand.
           2  Dit is het tweede bestand.
      We zien dat cat nu bij het tonen van de inhoud van het bestand de regels voorafgegaan worden door een volgnummer.
    5. Wie wil weten welke argumenten cat allemaal kent en wat hun werking is, vraagt dat eenvoudig aan cat:
      pi@raspberrypi:~ $ cat --help
      Gebruik:  cat [OPTIE...] [BESTAND...]
      
      Stuurt gegeven BESTAND(en achter elkaar) naar standaarduitvoer.
      
      Zonder BESTAND, of wanneer BESTAND '-' is, wordt standaardinvoer gelezen.
      
        -A, --show-all           hetzelfde als '-vET'
        -b, --number-nonblank    niet-blanco uitvoerregels nummeren (negeert '-n')
        -e                       hetzelfde als '-vE'
        -E, --show-ends          een $ weergeven aan het einde van elke regel
        -n, --number             alle uitvoerregels nummeren
        -s, --squeeze-blank      opeenvolgende blanco regels comprimeren tot één
        -t                       hetzelfde als '-vT'
        -T, --show-tabs          tab-tekens weergeven met ^I
        -u                       (genegeerde optie)
        -v, --show-nonprinting   notatie met ^ en M- gebruiken, behalve voor LF/TAB
            --help      deze hulptekst tonen en stoppen
            --version   programmaversie tonen en stoppen
      
      Voorbeelden:
        cat f - g   Toont de inhoud van f, dan standaardinvoer, dan de inhoud van g.
        cat         Kopieert standaardinvoer naar standaarduitvoer.
      
      Online hulp bij GNU coreutils: 
      Meld vertalingsfouten aan .
      Full documentation 
      of lokaal via: info '(coreutils) cat invocation'
    6. Voor onze volgende probeersels hebben we wat grotere bestanden nodig. We gaan een bestand maken met op de eerste regel een aaa, op de tweede regel bbb, op de derde regel ccc enz. tot en met de 26-ste regel waar we zzz inzetten. Dit bestand maken we met cat:
      pi@raspberrypi:~ $ cat > nieuwbestand
      aaa
      bbb
      ccc
      ddd
      eee
      fff
      ggg
      hhh
      iii
      jjj
      kkk
      lll
      mmm
      nnn
      ooo
      ppp
      qqq
      rrr
      sss
      ttt
      uuu
      vvv
      www
      xxx
      yyy
      zzz
      De shell toont ons een lege regel en wacht op onze invoer. We kunnen nu een aantal regels tekst typen en sluiten dit af met een einde-invoer-teken, Ctrl+D.
      Dus na cat > nieuwbestand toets je aaa in, gevolgd door een Return, dan bbb gevolgd door een Return, enz. Na de zzz en Return sluiten we af met Ctrl+d.
    7. We hebben nu een bestand met 26 regels. Die kunnen we tellen met behulp van
      pi@raspberrypi:~ $ cat -n nieuwbestand
           1  aaa
           2  bbb
           3  ccc
           4  ddd
           5  eee
           6  fff
           7  ggg
           8  hhh
           9  iii
          10  jjj
          11  kkk
          12  lll
          13  mmm
          14  nnn
          15  ooo
          16  ppp
          17  qqq
          18  rrr
          19  sss
          20  ttt
          21  uuu
          22  vvv
          23  www
          24  xxx
          25  yyy
          26  zzz
      
      Dat toont ons de inhoud van het bestand.
    8. Maar wie alleen geïnteresseerd is in het aantal regels neemt hiervoor de opdracht wc (word count):
      pi@raspberrypi:~ $ wc nieuwbestand
       26  26 104 nieuwbestand
      wat betekent dat we 26 regels, 26 woorden en 104 karakters in het bestand nieuwbestand hebben staan. Wie alleen het aantal regels wil weten, kiest voor wc -l nieuwbestand.
    9. We gebruiken dit bestand nu om een bestand van 78 regels te maken:
      pi@raspberrypi:~ $ cp nieuwbestand langbestand
      pi@raspberrypi:~ $ cat nieuwbestand >> langbestand
      pi@raspberrypi:~ $ cat nieuwbestand >> langbestand
      Met behulp van het teken >> (twee maal groter-dan-teken) voegen we de uitvoer van de voorafgaande opdracht aan het einde van het navolgende bestand toe.
    10. Wanneer we nu de inhoud van het bestand langbestand opvragen, dan past dat niet meer in ons venster. Dit kunnen we oplossen door de uitvoer van cat te pipen naar de invoer van het programma more:
      pi@raspberrypi:~ $ cat langbestand | more
      aaa
      bbb
      ...
      yyy
      zzz
      Met pipen bedoelen we de uitvoer van het ene programma gebruiken als invoer voor het andere. Met de opdracht more en de spatiebalk kunnen we nu scherm voor scherm de inhoud van dit bestand bekijken. Met de q toets (quit) verlaten we de more opdracht.
    11. Willen we alleen het begin of juist alleen het einde van dit bestand zien, dan gebruiken we de opdrachten head en tail:
      pi@raspberrypi:~ $ head langbestand
      aaa
      bbb
      ccc
      ddd
      eee
      fff
      ggg
      hhh
      iii
      jjj
      pi@raspberrypi:~ $ tail langbestand
      qqq
      rrr
      sss
      ttt
      uuu
      vvv
      www
      xxx
      yyy
      zzz
      
    12. Zijn we alleen in de eerste 3 regels geïnteresseerd, dan doen we dat met behulp van:
      pi@raspberrypi:~ $ head -3 langbestand
      aaa
      bbb
      ccc
    13. Slimmeriken hebben in de gaten dat je op de volgende wijze de 12e regel kunt opvragen:
      pi@raspberrypi:~ $ head -12 langbestand | tail -1
      lll
    14. We kunnen ook alle identieke regels bij elkaar zetten, of sorteren, met:
      pi@raspberrypi:~ $ sort langbestand | more
      aaa
      aaa
      aaa
      bbb
      bbb
      bbb
      ...
      yyy
      yyy
      yyy
      zzz
      zzz
      zzz
    15. We zien direct dat een aantal regels meerdere malen voorkomen en vragen ons af hoeveel verschillende unieke regels er zijn. Die unieke regels krijgen we te zien met:
      pi@raspberrypi:~ $ sort langbestand | uniq
      aaa
      bbb
      ccc
      ddd
      eee
      fff
      ggg
      hhh
      iii
      jjj
      kkk
      lll
      mmm
      nnn
      ooo
      ppp
      qqq
      rrr
      sss
      ttt
      uuu
      vvv
      www
      xxx
      yyy
      zzz
    16. Maar we willen natuurlijk niet tellen. Als we de uitkomst als invoer voor wc -l gebruiken, dan krijgen we dus het antwoord op onze vraag kant en klaar voorgeschoteld:
      pi@raspberrypi:~ $ sort langbestand | uniq | wc -l
      26
    17. Wanneer we willen weten of de lettercombinatie ccc in ons bestand voorkomt, dan gebruiken we hiervoor grep:
      pi@raspberrypi:~ $ grep ccc langbestand
      ccc
      ccc
      ccc
    18. Weten we niet precies in welk bestand we willen zoeken, dan kiezen we voor een jokerteken:
      pi@raspberrypi:~ $ grep ccc *
      grep: Bookshelf: Is een map
      grep: Desktop: Is een map
      grep: Documents: Is een map
      grep: Downloads: Is een map
      langbestand:ccc
      langbestand:ccc
      langbestand:ccc
      grep: Music: Is een map
      nieuwbestand:ccc
      grep: Pictures: Is een map
      grep: Public: Is een map
      grep: Templates: Is een map
      grep: Videos: Is een map
    19. Willen we alleen maar weten in welke bestand(-en) deze combinatie voorkomt, dan doen we dat door:
      pi@raspberrypi:~ $ grep -l ccc *
      grep: Bookshelf: Is een map
      grep: Desktop: Is een map
      grep: Documents: Is een map
      grep: Downloads: Is een map
      langbestand
      grep: Music: Is een map
      nieuwbestand
      grep: Pictures: Is een map
      grep: Public: Is een map
      grep: Templates: Is een map
      grep: Videos: Is een map
  9. De volgende stap (iets moeilijker):
    1. Met welke opdracht kom je te weten in welke map je werkt? ......
    2. Welke opdracht toont een lijst met de bestanden en mappen in die map? ......
    3. Welk bestand staat op de laatste plaats na het uitvoeren van de opdracht ls -a (alle bestanden in een map tonen)? ......
    4. Wat stelt de laatste kolom voor als je de opdracht ls -al uitvoert? ......
    5. Toon de inhoud van het bestand .bashrc en schrijf de laatste regel over: ......
    6. Maak de map opdrachtmap.
    7. Open de map opdrachtmap/.
    8. Ga terug naar jouw Persoonlijke map.
    9. Verwijder de map opdrachtmap/.
    10. Kopieer het bestand .bashrc naar het bestand met als naam bashconfiguratie.
    11. Tel het aantal lijnen, woorden en tekens in het bestand bashconfiguratie: ......
    12. Tel enkel het aantal lijnen in het bestand bashconfiguratie met de opdracht ......
    13. Verwijder het bestand bashconfiguratie.
    14. Kopieer het bestand .bashrc naar het bestand met de naam bashinstellingen.
    15. Toon de inhoud van het bestand bashinstellingen. Schrijf de eerste regel over: ......
    16. Met de opdracht ls -l bashinstellingen kun je de details van het bestand opvragen.
      Hoe groot is het? ......
    17. Verwijder het bestand bashinstellingen.
    18. Vraag nogmaals de details van het bestand op. Welke foutmelding krijg je? ......
  10. Je kunt gemakkelijk naar de Persoonlijke map gaan met de opdracht cd zonder argumenten.
    1. Zorg ervoor dat je in je Persoonlijke map (home-directory) werkt.
    2. Maak het bestand eerste met de tekst alpha (inhoud) aan.
    3. Maak het bestand tweede met de tekst beta aan.
    4. Maak het bestand derde met de tekst gamma aan.
    5. Voeg de drie bestanden samen tot het bestand met de naam grieks.
    6. Toon de inhoud van het bestand grieks.
  11. Zorg ervoor dat je in de Persoonlijke map werkt.
    1. Hoeveel bestanden bevat de map? ................. (probeer ook eens de dir opdracht).
    2. Gebruik nu ls met het -a argument. Hoeveel bestanden zie je nu? ............ (merk op dat de bijgekomen bestandsnamen allemaal beginnen met een .........., dit zijn verborgen bestanden.
    3. Recente linuxdistributies gebruiken kleuren om het onderscheid tussen mappen en bestanden te tonen. Indien je niet beschikt over een kleurenterminal kan het -F argument nuttig zijn. Welk verschil merk je op tussen de weergave van de opdrachten ls en ls -F? .....
    4. Met welke toetscombinatie kun je een lopende opdracht afbreken? ......
    5. Recursieve lijsten kunnen zeer nuttig zijn. Probeer de volgende opdrachten. Breek ze indien nodig af.
      ls -R /usr/
      
      ls -R1 /usr/
      Wat verschil merk je in de uitvoer? ......
  12. Gebruik de more opdracht om het bestand services te lezen: more /etc/services
    1. Merk bij het lezen de --More--(5%) prompt op onderaan de bladzijde.
    2. Druk op de Return of Enter toets. Wat gebeurt er? ......
    3. Druk éénmaal op de Spatiebalk. Wat gebeurt er? ......
    4. Typ een letter b. Wat gebeurt er? ......
    5. Gebruik de voorwaarts zoeken mogelijkheid om het woord http te vinden met de opdracht: /http (m.a.w. typ /httpReturn)
    6. Ga na welke mogelijkheden er nog zijn door hulp te vragen met de toets ?.
    7. Welke toetscombinatie doet hetzelfde als drukken op de toets b? ......
    8. More gaat verder tot het einde van het bestand of tot je q (quit) typt om het programma te verlaten.
      Typ een q om het programma te verlaten.
  13. Toon het begin van het bestand /etc/services met de opdracht head.
    1. Hoeveel regels tel je? ......
    2. Welk argument (optie) moet je tussenvoegen om de eerste 5 regels te zien? ......
    3. Toon nu hetzelfde bestand met de tail opdracht.
    4. In hoeverre is hetgeen getoond wordt verschillend? ......
    5. Gebruik de opdracht tail -f .bash_history om de aanpassingen op het einde van het bestand te volgen. Indien je een foutmelding krijgt, sluit je de SSH verbinding af en start je deze opnieuw op en probeer je nogmaals.
    6. Start een tweede SSH verbinding.
    7. Typ de volgende opdrachten en bevestig telkens met Return:
      pwd
      ls -l
      dir
      exit
      De laatste opdracht heeft de tweede SSH verbinding beëindigd.
    8. Wat merk je in het venster van de eerste SSH verbinding? ......
    9. Breek de lopende tail opdracht af.
  14. Kopieer het bestand /etc/services (in de configuratie folder) naar het bestand netwerkdiensten in jouw Persoonlijke map.
    1. Bekijk de inhoud van de map om na te gaan of de vorige opdracht gelukt is.
    2. Gebruik de kopieer opdracht cp -i /etc/services netwerkdiensten (met het interactive argument).
      Wat gebeurt er? ......
    3. Gebruik de recursieve optie (cp -r /usr/bin kopie) om een volledige submap te kopiëren naar een nieuwe submap.
      Bij het kopiëren kunnen er toegangsfouten optreden. Dit is normaal.
      Bekijk de inhoud van beide mappen om na te gaan of het heeft gewerkt.
    4. De copy opdracht aanvaardt jokers.
      1. Probeer de opdracht cp /etc/*conf kopie.
      2. Wat gebeurt er? (tip: doe een ls *conf in de map kopie).
    5. Zorg ervoor dat je in de Persoonlijke map werkt.
    6. Indien je een bestand kopieert van een andere locatie naar de huidige map en je wil de bestandsnaam behouden, kun je . (een punt) gebruiken om de huidige map aan te duiden.
      Probeer cp /etc/issue ..
  15. De mv opdracht kan gebruikt worden om bestanden te hernoemen. Gebruik de opdracht mv issue begroeting om de naam van het bestand issue te veranderen naar begroeting.
    1. Controleer de inhoud van de map om te tonen dat de opdracht heeft gewerkt.
    2. De mv opdracht wordt ook gebruikt om mappen te hernoemen. Gebruik deze opdracht om de naam van de directory kopie te veranderen naar mijnkopie en controleer of de opdracht gelukt is.
    3. Gebruik nu de mv opdracht om het bestand netwerkdiensten te verplaatsen naar de map mijnkopie.
  16. Verwijder de map "mijnkopie" met de opdracht rm -rf mijnkopie.
    1. Waarvoor zorgt het argument -f? ......
    2. Verwijder nu de volgende bestanden in jouw thuismap: begroeting, eerste, tweede, derde en grieks.
  17. Gebruik de opdracht file /bin/su om het type van het bestand su te bepalen: ......
    Gebruik de file opdracht om het type van volgend bestanden te bepalen:
    1. /etc/shadow
    2. /usr/share/man/nl/man1/*
  18. Open de map /etc/.
    1. Zoek nu met find . -name "*deny" naar bestanden waarvan de naam eindigt op deny.
      Hoeveel bestanden worden gevonden? ......
    2. Zoek enkel mappen (argument -type d) die beginnen met de letters rc.
      Hoeveel mappen worden er gevonden? ......
  19. Wees er zeker van dat je in je Persoonlijke map werkt.
    1. Creëer dan de nieuwe map Boeken met de mkdir opdracht.
    2. Creëer de volgende submappen in Boeken: Handleidingen, Tijdschriften en Literatuur.
    3. Probeer een map te creëren in een map waar je geen rechten hebt (vb: /etc).
      Welke melding krijg je? ......
  20. Linux bestandspermissies

    Windows, macOS en Linux ondersteunen ACL (Access Control Lists). ACL is een nieuwere vorm voor het toekennen van gebruikersrechten op bestanden. Het heeft als voordeel dat je permissies van meerdere gebruikers en groepen kan koppelen aan een bestand (het is flexibel). ACL onder Linux is een uitbreiding op de Linux bestandspermissies. Zelfs indien er ACL voorhanden is, kan het nog altijd nuttig zijn om kennis te hebben van de structuur van Linux toegangsrechten.

    Voor een bestand zijn er drie soorten gebruikers: owner (eigenaar), group (groep), other (rest).

    • Owner
      Staat voor de gebruiker zelf. De gebruiker kan instellen welke rechten hij of zij op de bestanden heeft.
    • Group
      Je kunt hiermee instellen welke rechten de gebruikers hebben die in dezelfde groep zitten als de gebruiker.
    • Other
      Hier kan men de toegangsrechten instellen van iedere andere gebruiker.

    Aan ieder van deze drie soorten gebruikers kun je volgende rechten toekennen: read (lees), write (schrijf) en execute (uitvoeren).

    Voorbeeld: Na het uitvoeren van de opdracht ls -l staat de volgende regel op het scherm:

    -rw-r--r-- 1 pi pi    47 22 mei 15:56 derdebestand

    De eerste kolom bevat de toegangsrechten en heeft de volgende structuur:

    • De eerste letter bepaald of we te maken hebben met een bestand (-), een directory (d) of een koppeling (l).
    • Dan volgen drie groepen van drie letters met de toegangsrechten voor respectievelijk de Eigenaar (Owner), de Groep (Group) en de Rest (Other).

    De drie letters stellen respectievelijk de volgende rechten voor:

    Recht Recht aanwezig Geen recht
    Read r -
    Write w -
    Execute x -
    Verzeker je ervan dat je in je Persoonlijke map bent.
    1. Kopieer de inhoud (argument -r) met de opdracht cp -r /etc ~/instellingen van de map /etc/ naar de map instellingen/ in uw Persoonlijke map (toegangsfouten mag je negeren).
    2. Open de map ~/instellingen/.
    3. Toon de inhoud van alle bestanden in de lange vorm (veel details) in deze map.
    4. Welke letterpositie in de eerste kolom bepaalt of je te maken hebt met een directory (letter d)? ......
    5. Welke letter bepaalt in de eerste kolom of een bestand uitvoerbaar is? ......
    6. Welke letterposities in de eerste kolom bepalen de rechten van de eigenaar? ......
    7. Welke letterpositie in de eerste kolom bepaalt de leesrechten van de groep waartoe je behoort? ......
    8. Wie is eigenaar van de meeste bestanden? ......
    9. Tot welke groep behoort de eigenaar van de meeste bestanden? ......
    10. Welke letterposities bepalen de rechten die de onbekende gebruikers hebben? ......
    11. Gebruik de opdracht ls -l issue om de toegangsrechten van issue te bekijken.
    12. Gebruik de opdracht chmod o-r issue om de rechten te wijzigen.
    13. Gebruik nogmaals de opdracht ls -l issue om de toegangsrechten van issue te bekijken en te bepalen welk toegangsrecht aangepast werd.
      Achterhaal daarmee de werking van het argument o-r in de vorige opdracht: ......
    14. Ga op de dezelfde manier te werk om de volgende rechten aan te passen en probeer telkens te achterhalen welke rechten door de argumenten werden aangepast:
      1. Gebruik het argument ugo+wx met het programma chmod op het bestand issue.
        ugo+wx: aangepaste rechten: ......
      2. Gebruik het argument g-x met het programma chmod op het bestand issue.
        g-x: aangepaste rechten: ......
    15. De opdracht chown dient om de eigenaar van een bestand te wijzigen.
      Probeer volgende opdracht chown root issue.
      Waarom [lukt dit]/[lukt dit niet]? ......

Openbare reacties op deze pagina (kunnen door alle bezoekers gelezen worden)

, vrijdag 2 juni 2023 19:28