Les 01: Inleiding Linux
Welkom
Welkom bij de lessen voor het vak Linux. In deze Wikiwijs vind je alle bruikbare informatie en opdrachten die tijdens de lessen zullen worden verduidelijkt.
Voor de opdrachten verwijzen wij naar ItsLearning. Hier staan de opdrachten en kun je jouw uitwerking inleveren.
De feedback zal gegeven worden in de les of is te vinden op ItsLearning.
Geschiedenis
Linus Torvalds, een Finse student aan de universiteit van Helsinkin werkte met het besturingssysteem Minix. Minix was ontworpen door de Nederlandse professor Andrew S. Tannenbaum. Professor Tannembaum gaf ook les op deze universiteit. Minix voldeed niet aan de verwachtingen van Linux Torvalds en daarop besloot hij een eigen besturingssysteem te schrijven. De kernel die hij schreef aangevuld met GNU-software ging vanaf 1991 de wereld over als Linux.
Zijn eerste versie was niet echt een bruikbaar besturingssysteem, maar meer een speeltje voor hackers en programmeurs. Al snel werden er andere ontwikkelaars aangetrokken tot Linus' project en zo groeide Linux al snel uit tot een volledig productief besturingssysteem.
Linux is in feite geen volledig besturingssysteem, maar omvat alleen de kernel. De kernel zorgt er onder andere voor dat software en hardware kunnen samenwerken. Torvalds heeft alleen de kernel gemaakt en heeft als software bestaande GNU-software gebruikt. De kernel werd aangepast zodat de GNU-software hierop kon werken. Daarom wordt het besturingssysteem ook wel GNU/Linux genoemd.
In de loop der jaren is er echter steeds meer niet-GNU-software bij gekomen (zoals software onder de BSD-licentie) en is volgens sommigen de naam GNU/Linux dan ook minder van toepassing. Essentiële onderdelen als glibc, fileutils en gcc zijn echter nog steeds GNU. Het volledige systeem wordt meestal kortweg Linux genoemd. Bovendien zijn er systemen (zoals vele embedded systemen) waar boven op de Linuxkernel geen GNU-tools gebruikt worden, waardoor de naam GNU/Linux dan helemaal niet van toepassing is.
In 1992 en 1993 groeide Linux uit tot een volledig functionele kernel en kreeg het ook steeds meer aandacht. Verschillende bedrijven begonnen eigen distributies te ontwikkelen. In 1994 kwamen de eerste nummers uit van het tijdschrift Linux Journal.
Sinds versie 1.0 van de Linuxkernel in 1994 is uitgekomen, is de kernel sterk verbeterd en stabieler geworden. Linux wordt inmiddels door veel bedrijven verkozen boven andere besturingssystemen en vooral op de servermarkt. Ook voor embedded toepassingen zoals in mobiele telefoons is Linux populair en verder draaien 92% van de 500 snelste computers ter wereld op Linux. De grootste Linuxgebruikers zijn Oracle,Facebook en Google.
(Bron: http://www.linuxandubuntu.com)
Distributies
Om Linux te kunnen installeren op een thuiscomputer of server, kan men gebruikmaken van zogenaamde distributies. Zo'n distributie bestaat uit een verzameling basistoepassingen, bibliotheken en een Linuxkernel, vergezeld van een set installatieprogramma's, het X Window System en meestal een hoop extra programmatuur. Zulke distro's zijn vaak toegespitst op een bepaald toepassingsdoel. Bij sommige commerciële distributies, zoals bij Red Hat Enterprise Linux en Ubuntu, is er ondersteuning tegen betaling beschikbaar. De distributie is daarentegen meestal gratis: gebruikers kunnen optioneel helpdeskondersteuning en handleidingen aanschaffen.
(Bron: Wikipedia)
Tux
Tux
Tux is de mascotte van de Linux-kernel. Tux is een cartoonpinguïn en werd oorspronkelijk door Larry Ewing getekend met het programma GIMP.
Linus Torvalds, de bedenker en hoofdontwikkelaar van Linux, vond dat het logo van Linux een pinguïn moest zijn. Een wedstrijd werd uitgeschreven, die in 1996 gewonnen werd door Larry Ewing. Tux is een verzonnen figuur gebaseerd op een adeliepinguïn.
Toepassingen
Linux werd historisch gezien voornamelijk gebruikt als serversysteem voor bedrijven. Op desktopgebied heeft Linux nog geen sterke positie weten te veroveren: in 2012 had Linux een marktaandeel van 1,18% volgens NetMarketShare. Een belangrijke reden hiervoor is dat de meeste computers met een vooraf geïnstalleerde versie van het Windowsbesturingssysteem verkocht worden. Hierdoor is Windows het vertrouwde besturingssysteem voor de meeste eindgebruikers. Het reeds aanwezige besturingssysteem waarvoor men betaalde bij aankoop zelf vervangen of laten vervangen door een Linuxdistributie die afwijkt van de vertrouwde gebruikerservaring is een stap die slechts weinig eindgebruikers zetten. Een mogelijke reden hiervan was dat Linux niet makkelijk geconfigureerd kan worden bij gebruik van minder gangbare hardwareonderdelen. Inmiddels is dit ook sterk verbeterd.
Op servergebied heeft Linux een uitstekende positie: het marktaandeel is aanzienlijk en vooral voor websites is Linux marktleider. Het Linuxmarktaandeel is echter niet eenvoudig af te leiden vanuit de verkoopcijfers van serverhardware, omdat in de regel Windows geïnstalleerd wordt.
De installatie en verwijdering van software wordt in de meeste distributies afgehandeld door speciaal voor dit doeleinde ontwikkelde software: de pakketbeheersoftware. Dit stelt een gebruiker in staat om een keuze te maken uit duizenden pakketten die specifiek voor de betreffende distributie geconfigureerd zijn.
Linux wordt veel gebruikt in combinatie met Apache, MySQL en PHP, en Perl of Python. Deze combinatie van software wordt LAMP genoemd en is de basis van veel internetservers door de eenvoudige verkrijgbaarheid en open structuur.
Omwille van de lage kosten, hoge configureerbaarheid en beschikbaarheid op diverse platformen, wordt Linux ook meer en meer gebruikt op embedded systemen; men spreekt dan van embedded Linux. Mogelijke toepassingen zijn te vinden binnen settopboxen voor televisie, mobiele telefoons, routenavigatiesystemen en mobiele apparaten zoals pda's. Linux wordt zo een concurrent van Symbian voor mobiele telefoons, en een alternatief voor Windows Mobile en Palm OS op handheld devices. Ook Googles besturingssysteem Android (voor smartphones en tablets) is op Linux gebaseerd. Chromebook, dat op Chrome OS met Linux-kernel draait, domineert de Amerikaanse onderwijsmarkt. Antivirussoftware op een Chromebook is niet nodig - Google heeft Chrome OS en Chromebooks ontworpen zodat ze de virussen zoals op Windows praktisch niet kunnen krijgen.
Ook op supercomputers wordt Linux steeds populairder. Op de TOP500-lijst van supercomputers van juni 2012 draaide 90% van de snelste computers op Linux.
(Bron: Wikipedia)
Opdracht 1 Linux
Maak opdracht 1 Linux.
In deze opdracht ga je opzoek naar verschillende distributies, Linux toepassingen en achtergrond informatie over Linux.
Als je gereed bent met de opdracht lever je deze in op ItsLearning.
Les 02: Installatie
Tijdens deze les gaan we Linux installeren in een virtuele machine. Hiervoor gebruiken we VMware of virtualbox.
Installatie VMware workstation Pro
Om Linux te kunnen laten draaien op je laptop hebben we een hypervisor nodig. Wij hebben ervoor gekozen om VMware te gebruiken.
Installeer VMware op je laptop.
VMware download
Download van Microsoft Image : VMware workstation pro versie 16.*
Installatie Linux
Wij hebben ervoor gekozen om Ubuntu te gebruiken tijdens de Linux lessen. Hiervoor moet je Ubuntu desktop downloaden.
Ubuntu is een Linuxdistributie voor desktopcomputers, laptops, servers, tablets en smartphones. Dit besturingssysteem is beschikbaar in een groot aantal talen, waaronder het Nederlands. De makers van Ubuntu leggen de nadruk op gebruiksvriendelijkheid en toegankelijkheid voor gebruik thuis, op school en op het werk. Er bestaat ook een servereditie onder de naam Ubuntu Server.
Ubuntu is gebaseerd op de Linuxdistributie Debian, maar onderscheidt zich hiervan door twee keer per jaar nieuwe versies uit te brengen. De nummers daarvan verwijzen naar het jaar en de maand van de verschijningsdatum.
Ubuntu desktop
Download het installatie bestand voor Ubuntu Desktop
Virtuele machine aanmaken in VMware
Voor het aanmaken van de virtuele machine heb je het iso-bestand (installatie bestand) van Linux nodig. Zorg dat je weet waar deze staat.
1. Klik in VMware op "File" (links boven), "New Virtual Machine".
2. Klik op "Custom (advanced)", daarna klik op "Next".
3. Klik op "Next".
4. Klik op "Installer disc image file", "Browse" en zoek je iso-bestand van Linux, Klik op "Next".
5. Vul je naam, username en wachtwoord in dat je wilt gebruiken (gebruik hiervoor een makkelijk te onthouden wachtwoord, bijvoorbeeld "Loempia01 of Welcome01"), klik op "Next".
6. Geef je virtual machine een naam (Bijvoorbeeld linux), "Browse" naar de locatie waar de VM moet komen te staan, kies hier voor een map op je hardeschijf waar voldoende ruimte is (het liefst op je SSD hardeschijf).
7. Selecteer het aantal processoren en cores(2 - 2) is voldoende.
8. Selecteer hoeveel geheugen dat je wilt gebruiken op je VM (Linux is 2GB voldoende).
9. Selecteer het netwerk type, laat hem hier op NAT staan.
10. Klik op "Next", "Next".
11. Select a Disk, selecteer "Create a new virtual disk" en klik op "Next".
12. Size 40GB, selecteer "Store virtual disk as a single file", klik op "Next".
13. Disk file name zo laten staan, klik op "Next".
14. Vinkje bij "Power on this virtual machine after creation" en klik op "Finish".
Nu zal de virtuele machine opgestart worden en de installatie van Linux beginnen. Nu is het tijd om achterover te gaan hangen en te kijken hoe Linux zijn werk doet ;-).
YouTube video
Linux installatie
Deze video demonstreert hoe Linux geïnstalleerd kan worden in een VM.
Opdracht 2 Linux
Zorg voor een volledige installatie van Ubuntu Desktop.
Hiervoor staat een opdracht op ItsLearning, maak van je installatie screen-shots en lever deze in op ItsLearning.
Les 03: Bestandssysteem
Voordat we aan de slag gaan met het bestandssysteem van Linux staan we even stil bij de CLI (Command Line Interface) en de GUI (Graphical User Interface).
CLI
Werken op de CLI (Theorie)
Op een Linux server zal vaak geen grafische omgeving aanwezig zijn. Dit om verschillende redenen; omdat het niet nodig is; omdat het extra recourses gebruikt (onnodig); omdat het systeem minder stabiel kan worden. Je moet dus handig worden met het werken op de Command Line Interface (CLI). De CLI gaat uit van de commando's die de gebruiker geeft. Gebruikers hebben hierdoor meer controle over het besturingssysteem dan bij GUI. Een GUI is meer visueel ingesteld en zorgt hiervoor voor een makkelijkere besturing van het systeem door middel van knoppen en multitask mogelijkheden.
Het voordeel hiervan is dat de gebruiker veel gedetailleerdere opdrachten kan geven dan met een GUI mogelijk is en dat ook constructies zoals lussen en conditionele statements (if-then-else) mogelijk zijn. Aan de andere kant heeft een CLI een steilere leercurve dan een GUI, omdat de CLI parate kennis bij de gebruiker vereist. Hoewel je webbased ook het een en ander kan doen (bijvoorbeeld met het programma webmin), moet je jezelf zoveel mogelijk laten wennen om te werken in de tty2 (Ctrl+Alt+F2).
Linux kent vele honderden commando's en deze commando's bestaan veelal uit drie delen; een korte naam/ afkorting (cp voor copy of mv voor move); een optie (bijvoorbeeld cp -d om een directory te kopieren); de informatie (zoals bijvoorbeel de mapnaam cp -d mapnaam).
Werken op de CLI is heel erg wennen, maar uiteindelijk zal de snelheid, de stabiliteit en de opties je over halen. Werken op de CLI heeft heel veel voordelen, Microsoft heeft dit ook ingezien en een voorbeeld aan genomen: de Powershell.
GUI
De grafische gebruikersinterface (GUI) is de belangrijkste manier waarop we communiceren met onze computers. Windows, Mac OS en Linux en hebben een GUI - gebaseerde interfaces. De GUI verscheen voor het eerst op commerciële computers tijdens de jaren 1980, en door het midden van de jaren 1990 weinig mensen nog steeds gebruikt besturingssystemen met command line interfaces, zoals MS - DOS. De GUI vervangen de command line interface omdat interactie met een computer met behulp van een muis heeft een aantal voordelen ten opzichte van getypte commando's.
Een GUI is intuïtief, een persoon die nooit een computer heeft gebruikt voordat u eenvoudige navigatie uitvoeren met een GUI na korte instructie. Gebruikers hoeven alleen maar op het item ze willen communiceren met. Klik met de rechtermuisknop op een item om een contextmenu te openen en de andere dingen die je ermee kunt doen. Een command line interface is meer obscure en vereist memoriseren . Een beginnende computergebruiker zou niet weten dat het commando " DIR " geeft de bestanden in een map, tenzij je haar verteld.
Tips voor de CLI
Gouden tips :
- Na een commando altijd een spatie
- Gebruik de TAB-toets (autocompletion)
- Iemand die veel Linux gebruikt herken je aan de versleten TAB-toets;
- Microsoft gebruikt dit ook;
- Cisco gebruikt dit ook.
- Wen jezelf aan om te werken in tty3 (<Ctrl>+<Alt>+<F3>)
- Om terug te gaan naar de GUI (<Ctrl>+<Alt>+<F2>)
- Is een beetje distributie afhankelijk
- schakelen tussen tty kan mbv de F-toetsen
- Linux is HOOFDLETTERGEVOELIG
- Een map in Linux wordt een directory genoemd
- Linux ziet bestanden als text en heeft geen extensie nodig
- Gebruik bestand extensies alleen voor de leesbaarheid van bestanden
Help-pagina's
HELP
Volgens mij begin je nu wel te merken dat Linux vrij complex is. In het begin waren er 9 boeken die je kon aanschaffen, deze boeken zijn nu geintergreerd in het besturingssysteem. Dit noemen we de man pages.
De man pages kunnen lang en soms onoverzichtelijk zijn, maar ze bevatten alle relevante informatie, deze man pages kun je op de volgende manier opvragen:man ls
geeft informatie over het commando ls. Een andere manier om hulp te krijgen bij bepaalde commando's is de optie --help. De manier om met deze optie hulp te vragen is: ls --help
(let op de spatie en twee streepjes).
Beide commando's helpen je bij het zoekennaar hulp. Dit is echter wanneer je het commando al weet. Binnen Linux is er nog een manier om hulp te krijgen bij een taak waar weer een commando voor nodig is. Je kan deze opdracht gebruiken als je wel de richting weet waarin je wil zoeken. Dit commando is: apropos .
ALs voorbeeld zou je kunnen denken aan de volgende manier van gebruik: apropos backup
. Je ziet dat als je dit in een terminal intypt je verschillende commandos te zien krijgt die met het onderwerp te maken hebben.

Wanneer je een idee hebt welk commando je kan gebruiken kun je deze weer verder onderzoeken met de manual page of de optie --help.
Bestandssysteem Linux
Linux zijn bestandssysteem is anders dan de Windows bestandssysteem. Laten we vooral eens kijken naar de verschillen.
Het Linuxbestandssysteem is een bestandssysteem voor Linux dat meestal geformatteerd is in ext2, ext3 of ext4. Het bestandssysteem wordt geladen door de Linuxkernel via de module ext4.
De Linuxkernel is de kernel (kern) van besturingssystemen uit de Linuxfamilie.
Zoals je op de afbeelding kunt zien is de bestandsstructuur anders dan op je laptop in Windows. In linux begint het bestandssysteem met een / en niet met een c:/ of d:/.
Het begin punt van het bestandssysteem noemen we de root. De root-directory wordt aangegeven met een / en is daarmee het beginpunt.
Waarschijnlijk als je je CLI opstart kom je in de /home directory. Je ziet op je terminal/shell waarschijnlijk je naam "patrick@ubuntu:~$" en een knipperende cursor. Je ziet als welke gebruiker je op de CLI zit, je ziet na de @ de naam van de computer/server. De ~ geeft aan dat je in je home directory zit.
Om naar een andere directory te gaan gebruiken we het commando cd en na cd de plek waar je heen wilt gaan. Bijvoorbeeld ik wil naar de root directory, dan gebruik ik het commando cd /
Om te zien welke directory's en bestanden er op deze locatie zijn gebruik ik het commando ls of ls -l
YouTube video
Linux CLI
Deze video neemt je mee op de CLI (Command Line Interface). Doe gerust de commando's gelijk na, zet de video af en toe even stil om de commando's zelf te proberen.
Opdracht 3 Linux
In deze opdracht gaan we voor het eerst werken op de CLI.
Gebruik hiervoor de opdracht die op ItsLearning staat.
Lever je opdracht in als je gereed bent op ItsLearning en vraag om feedback.
Les 04: Streams/Pipes/redirect
Streams, pipes en redirects
Wanneer er gesproken wordt over een Linux-stream dan zijn het zijn de gegevens die in een Linux-shell van het ene proces naar het andere proces gaan.
Streams kunnen door verschillende Linux verbindingen van opdracht naar opdracht gaan om beheerstaken uit te voeren. Tekens in Linux-streams zijn ofwel standaardinvoer (STDIN) of -uitvoer (STDOUT) of standaard errors (STDERR)
Kortom, wanneer we spreken van een stream is het dus de stroom data die gegenreerd wordt door een gebruiker of een programma.
Wanneer je werkt op de CLI in Linux moet je bekend zijn met de volgende technieken: Streams, Pipes en Redirects. Maar voordat we ons daarin gaan verdiepen maken we eerst kennis met de begrippen: STDIN, STDOUT en STDERR (standard inpute, standard output, standard error).
De STDIN: (Standaard input) is een opdracht die jij in kan voeren op je toetsenbord, maar het kan ook een bestand zijn (met allemaal namen en adressen) waarmee je een MySQL database kan vullen. Wanneer we een STDIN in het commando nodig hebben, gebruiken we de <
STDOUT: (Standaard output) dit is de bestemming waar de opdracht zijn uitvoer naartoe stuurt. Vaak is dit het venster waar de opdracht wordt ingevoerd, maar het zou net zo goed een bestand kunnen zijn. Wanneer we een STDOUT in het commando nodig hebben, gebruiken we de >
STDERR: (Standaard Error) dit is een standaard erro. dit is de lokatie waar errors bij de uitvoering van een commando heengestuurd kunnen worden. Dit is vaak het venster waar het commando wordt uitgevoerd, maar kan net zo goed een bestand zijn. Vaak wordt er voor de locatie van de STDERR gebruik gemaakt van /dev/null, dit kun je vergelijken met de prullenbak in Windows alleen kan je hier geen bestanden mee uithalen. WEG is WEG! Wanneer we een STDERR in het commando nodig hebben, gebruiken we de 2>
Wannneer je werkt met STDIN, STDOUT en STDERR is het dus mogelijk om opdrachten ergens anders heen te sturen, dit wordt redirecten genoemd.
Het redirecten met de STDIN wordt niet heel veel meer gebruikt. Je moet wel weten dat er gebruik gemaakt wordt van een SDTIN wanneer je het symbool < ziet
Nu je weet hoe Linux omgaat met redirecten van streams gaan we kijken wat pipes ( | ) zijn. Pipes in Linux gebruiken we als de uitkomst van een bepaald commando doorgestuurd moet worden naar een ander commando. Wanneer een Linux-commando nu heel veel data genereert zou u dit kunnen filteren met het commando 'grep'. Het commando 'grep'is uitermate geschikt om te filteren wanneer een commando veel data genereert of data uit grote tekstbestanden te filteren.
Als voorbeeld kijken we naar een commando dat veel output genereert 'ps aux'. Dit commando laat alle lopende processen op het systeem zien.
- a : - Deze optie drukt de actieve processen van alle gebruikers af.
- u : - Deze optie toont de kolom gebruiker of eigenaar in uitvoer.
- x : - Deze optie drukt de processen af die niet vanaf de terminal zijn uitgevoerd.
Wanneer je uit de hele lijst met processen alleen wilt weten welke processen en door een bepaalde gebruiker zijn gestart dan kan je het commando ps aux pipen naa het commando grep en op deze manier filteren. Dit pipen gebeurt op de volgende manier:
ps aux | grep *gebruiker*
Wat Linux dan weer zo krachtig maakt is dat de output geredirect kan worden naar een ander bestand. Dit is zeer zeker de moeite waard om mee te experimenteren, bijvoorbeeld:
ps aux | grep *gebruiker* > processenGebruiker.txt
Wanneer je werkt met pipes is het ook handig om te werken met tee' s in deze pipes. Dit zijn zogenaamde t-splitsingen.De uitwerking van een commando kan eigenlijk twee kanten op. Zo zou je bijvoorbeeld een log kunnen uitlezen en bepaalde informatie (bijvoorbeeld gebruikers) weg kunnen laten schrijven in een bestand en locaties waar deze gebruikers in willen lggen in een ander bestand.
Maken van een tee in Linux
Opdracht streams pipes en redirects
Deze opdracht ga je werken met stream, redirects en pipes
De opdracht is te vinden op Itslearning en na het maken lever je jouw gemaakte opdracht daar ook weer in.
Les 05: Handige commando's
Diverse commando's
Handige commando's voor het werken met tekstbestanden en werken op de cli zijn:
- who
- koppelen van deze commando's
- nummeren en tellen
- head en tail
- sort
- cut
De video neemt je mee langs deze commando's. Kijk deze en zoek ook eventueel op google de commando's voor extra hulp.
Diverse handige commando's
Opdracht handige commando's
De opdracht staat op ItsLearning. Deze maken en inleveren.
Les 06: Commandline editors
Text editors
Waarom een teksteditor?
Zoals we al geleerd hebben zijn bijna alle bestanden in Linux tekst based bestanden, elke configuratie in Linux is op tekst gebasseerd. Je kunt daarmee alle configuraties als tekstbestand aanpassen. De applicatie die de configuratie nodig heeft haalt de informatie uit het tekstbestand.
Daarnaast gebruikt Linux geen extensies, dus we hoeven geen .txt of .exe achter een bestand te zetten. Dit doen we vaak wel om het leesbaar te houden en bestanden uit elkaar te houden. Bijvoorbeeld een bestand met .sh is een script bestand, bestanden met .tar of .zip zijn archief of gecomprimeerde bestanden. Hierbij geven we aan met welke applicatie het bestand gecomprimeerd is.
Visual studio code
We beginnen met Visual Studio Code als eerste teksteditor. Visual Studio Code is een broncode-editor ontwikkeld door Microsoft voor Windows, Linux en macOS. Het bevat ondersteuning voor debugging, ingebouwde Git-controle, syntax highlighting, intelligente code-aanvulling, codefragmenten en code refactoring.
Visual studio code is een hele mooie en krachtige applicatie. We kunnen het gebruiken in de grafische omgeving om code/tekst te editten. Maar we kunnen ook gelijk onze code testen op de commandline, met de ingebrouwde terminal dat visual studio code ingebouwd heeft. Dit maakt de overstap naar volledig commandline editten vaak wat makkelijker.
Om visual studio code te gebruiken moeten we deze eerst installeren op onze Ubuntu desktop. Ga hiervoor naar Ubuntu software en zoek naar visual studio code.
Om visual studio code te openen ga je naar alle software. Open visual studio code en plaats hem in je favorieten.
Om te zien hoe visual studio code werkt, bekijk de video.
vi of vim
Vim werd in 1991 beschikbaar gesteld en is gratis, open source software. Vim is zowel beschikbaar als een commandline interface als een zelfstandig programma met een GUI en is een teksteditor die een modale versie is van de vi-editor die in de jaren 70 voor Unix is gemaakt; Vim staat voor vi verbeterd.
Waarom vi of vim?
Vi staat standaard in elke Linux kernel geïnstalleerd. Dus zelfs op de kleinste kernels staat een teksteditor. Je kunt jezelf verwennen met een teksteditor als nano, maar het kan zo maar eens zijn dat je op een Linux distributie komt waar geen nano geïnstalleerd staat en je met vi om moet gaan.
Om de verbeterde variant van vi te gebruiken moeten we vim eerst installeren. Gebruik hiervoor het volgende commando:
sudo apt-get install vim
Basic commands:
:help [keyword]
- Zoekt in helpdocumentatie voor elk trefwoord dat u invoert
:e [file]
- Opent een bestand, waarbij [file] de naam is van het bestand dat u wilt openen
:w
- Slaat het bestand op waar u aan werkt
:w [filename]
- Hiermee kunt u uw bestand opslaan met de naam die u heeft opgegeven
:wq
- Sla je bestand op en sluit Vim
:q!
- Sluit af zonder eerst het bestand waar u aan werkte op te slaan
i - insert mode, hiermee kun je typen in het bestand
Esc - van de insert mode terug naar de command mode
Snel naar regels gaan:
gg
- Zet de cursor aan het begin van het bestand
G
- Plaats de cursor aan het einde van het bestand
:nummer
- Naar regel nummer (bijvoorbeeld :3, cursor gaat naar regel 3)
/woord
- Zoekfunctie naar het eerste woord
Kopiëren en plakken:
d - Verwijder de huidige selectie
dd - Verwijder de huidige regel
y - Kopieer de huide selectie
yy - Kopieer de huidige regel
p - Plak de laatste tekstselectie
v - Zet blok selectie aan, met de pijltoetsen blokken selecteren
u - Maak de laatste bewerking ongedaan
nano
GNU nano is een eenvoudig te gebruiken teksteditor voor de opdrachtregel voor Unix- en Linux-besturingssystemen. Het bevat alle basisfunctionaliteit die je van een gewone teksteditor mag verwachten. Waar vi of vim een steile leercurve hebben en vaak intimiderend zijn is nano gebruiksvriendelijk en vaak de eerste keus voor beginnende Linux gebruikers die op de commandline bestanden moeten bewerken.
Nano-teksteditor is vooraf geïnstalleerd op de meeste Linux-distributies. Om te controleren of het op je systeemtype is geïnstalleerd:
nano --version
Mocht het niet geïnstalleerd zijn:
sudo apt-get install nano
Bestanden openen met nano
nano {bestandsnaam}
Dit opent een nieuw editorvenster en je kunt beginnen met het bewerken van het bestand.
In tegenstelling tot vi is nano een modeloze editor, wat betekent dat je de tekst direct na het openen van het bestand kunt beginnen met typen en bewerken.
Om een woord te zoeken, drukt je op Ctrl+w
, voer de zoekterm in en druk op Enter
. De cursor gaat naar de eerste overeenkomst. Druk om naar het volgende woord te gaan op Alt+w
.
Kopiëren en plakken:
Om tekst te selecteren, verplaatst je de cursor naar het begin van de tekst en druk je op Alt+a
. Dit zal een selectieteken plaatsen. Verplaats de cursor met de pijltoetsen naar het einde van de tekst die je wilt selecteren.
Kopieer de geselecteerde tekst naar het klembord met de Alt+6
. Ctrl+k
zal de geselecteerde tekst knippen.
Om de tekst te plakken, verplaats je de cursor naar de plek waar je de tekst wilt plaatsen en druk je op Ctrl+u
.
Opslaan en afsluiten:
Om de wijzigingen die je in het bestand heeft aangebracht op te slaan, druk je op Ctrl+o
. Als het bestand nog niet bestaat, wordt het gemaakt zodra je het opslaat.
Druk op om nano af te sluiten Ctrl+x
. Als er niet-opgeslagen wijzigingen zijn, wordt je gevraagd of je de wijzigingen wilt opslaan.
YouTube video
YouTube video
Video over werken met tekst editors
Opdracht 6 Linux
Hiervoor staat een opdracht op ItsLearning, maak de opdracht zo goed als mogelijk. Pak de theorie erbij al je er niet uit komt.
Lever je opdracht weer in met eventuele screen-shots.
Les 07: (root)users
Dit hoofdstuk zal gaan over de gebruikers binnen Linux, hoe kun je zien welke gebruikers aanwezig zijn op het systeem en hoe maak je gebruikers aan.
Wat is de "root" gebruikers en hoe zorg je ervoor dat admin gebruikers dezelfde rechten krijgen als "root".
Gebruikers (users)
Linux-distributies worden geleverd met ingebouwde ondersteuning voor meerdere gebruikersrollen en profielen. Door verschillende gebruikersaccounts en groepen te gebruiken, is het mogelijk om hetzelfde systeem zich anders te laten gedragen voor verschillende gebruikers of om toegang en privileges te beperken tot bepaalde gebruikers.
Wat is een gebruiker?
Een "gebruiker" is een entiteit die rechten heeft voor toegang tot en wijziging van een Linux-systeem in volledige of beperkte mate. Er kunnen veel gebruikers zijn in een typisch Linux-systeem. In feite worden tijdens de installatie van een op Linux gebaseerd besturingssysteem zoals Ubuntu automatisch uw standaardgebruiker met login en wachtwoord aangemaakt, evenals veel gebruikers op systeemniveau.
Verschil "systeem"gebruiker en "normale"gebruiker
Normale gebruikers en systeemgebruikers zijn in wezen hetzelfde. Sommige mensen gebruiken ze voor organisatorische doeleinden door ze te classificeren op basis van toegewezen gebruikers-ID's (UID's), aangezien systeemgebruikers en normale gebruikers gewoonlijk verschillende ID-bereiken hebben.
UID's
Linux besturingssystemen identificeren een gebruiker aan de hand van een waarde die een gebruikers-ID wordt genoemd , vaak afgekort tot gebruikers-ID of UID . De UID, samen met de groepsidentificatie (GID) en andere toegangscontrolecriteria, wordt gebruikt om te bepalen tot welke systeembronnen een gebruiker toegang heeft.
Wat is een rootuser of rootgebruiker?
Root is het superuser-account in Unix en Linux. Het is een gebruikersaccount voor administratieve doeleinden en heeft doorgaans de hoogste toegangsrechten op het systeem.
Gewoonlijk wordt het rootgebruikersaccount aangeroepen root
. In Unix en Linux is elk account met gebruikers-ID 0 echter een root-account, ongeacht de naam. Het komt vrij vaak voor dat bepaalde systeembeheerders hun eigen root-accounts op een systeem hebben, met hun eigen wachtwoorden.
UID's normale gebruikers
Waar gebruikers-ID 0 voor de root gebruikers is, is het gewoonlijk dat binnen Ubuntu en andere Linux distributies de UID's van gewone gebruikers boven de 1000 zitten. Daartussen zitten systeem gebruikers van tools. Deze zijn specifiek aangegeven en hebben als bijzonderheid erbij staat dat ze geen login hebben.
sudo
Tools zoals sudo kunnen worden gebruikt om geselecteerde gebruikers de mogelijkheid te geven om geselecteerde opdrachten als root uit te voeren. Alle beheerprogramma's voor geprivilegieerde toegang bieden ook deze mogelijkheid. Al deze tools kunnen ook de commando's die als root worden uitgevoerd loggen om verantwoording af te leggen over wat er als root wordt gedaan.
root-toegang
Root-toegang betekent iets uitvoeren met root-privileges. In op Linux gebaseerde systemen betekent dit dat je iets kunt doen met de gebruikers-ID 0, dwz als root.
Root-toegang hebben betekent over het algemeen dat u zich kunt aanmelden bij een root-account op de server, of dat u opdrachten als root op de server kunt uitvoeren, bijvoorbeeld door een hulpprogramma voor escalatie van bevoegdheden te gebruiken, zoals sudo.
Root bevoegdheden
Het root-account heeft root-privileges . Dit betekent dat het alle bestanden op het systeem kan lezen en schrijven, bewerkingen kan uitvoeren zoals elke gebruiker, de systeemconfiguratie kan wijzigen, software kan installeren en verwijderen en het besturingssysteem en / of firmware kan upgraden. In wezen kan het vrijwel alles op het systeem doen.
Het verdient doorgaans de voorkeur om speciale serviceaccounts te gebruiken voor het uitvoeren van applicaties en voor het beheren van verschillende subsystemen van besturingssystemen. Toegang tot het root-account moet worden beperkt tot het absolute minimum aantal mensen en gebruikers.
Weergeven van gebruikers
- Gebruikers worden opgeslagen in het bestand /etc/passwd
- Wachtwoorden worden versleuteld opgeslagen in /etc/shadow
Lijst met alle gebruikers
Er zijn twee mogelijkheden:
Optie 1. Open het bestand etc/passwd door de volgende opdracht te typen:
cat etc/passwd
Optie 2. Database-items die zijn geconfigureerd in het bestand /etc/nsswitch.conf bevatten de passwd database met alle gebruikersnamen en inloggegevens.
Gebruik de volgende opdracht om deze gegevens te extraheren:
getent passwd
Zowel optie 1 als optie 2 zullen alle gebruikers en hun inloggegevens weergeven.
Elke regel vertegenwoordigt één gebruiker en heeft zeven (7) velden.
De velden worden gescheiden door : (dubbele punten) en elke regel bevat de volgende informatie:
1. Gebruikersnaam
2. Het gecodeerde wachtwoord (weergegeven door x , in het /etc/shadow bestand)
3. Gebruikers-ID-nummer (bekend als UID)
4. Gebruikersgroep-ID (bekend als GID)
5. Volledige gebruikersnaam
6. Gebruiker homedirectory
7. De login-shell (standaard ingesteld op /bin/bash)
Alleen Linux-gebruikersnamen weergeven
Als u niet alle informatie over elke gebruiker nodig heeft, kunt u alleen de gebruikersnamen op het systeem vermelden. Er zijn twee manieren om alleen het eerste veld (de gebruikersnaam) van elke gebruiker te zien.
Optie 1 : gebruik de awk
of cut
opdracht.
Om alleen gebruikersnamen weer te geven, kunt u een van de volgende twee (2) opdrachten gebruiken:
awk -F: '$1 { print $1 }' /etc/passwd
cut -f 1 -d: /etc/passwd
Optie 2 : de getent
opdracht gebruiken met awk
en cut
.
getent
Voer de volgende opdracht uit om de gebruikersnaam zonder aanvullende informatie te lezen en weer te geven :
getent passwd | awk -F: '$1 { print $1 }' /etc/passwd
U kunt ook de opdracht gebruiken:
getent passwd | cut -f 1 -d: /etc/passwd
Zoeken naar bestaande Linux-gebruikers
Met het getent
commando kunt u ook controleren of er een gebruiker op het systeem aanwezig is.
Elk van de volgende twee opdrachten geeft u die informatie:
getent passwd | grep username
getent passwd username
Maken en verwijderen van gebruikers
Wat is het verschil tussen Adduser en Useradd?
Adduser versus Useradd
|
Adduser is de opdracht om gebruikers aan het systeem toe te voegen volgens de opdrachtregelopties en configuratie-informatie in /etc/adduser.conf.
|
Useradd is een hulpprogramma op laag niveau voor het toevoegen van gebruikers. |
Kenmerken |
Het commando adduser maakt de gebruiker aan en stelt de basismappen van het account en andere instellingen in. |
Het commando useradd maakt gewoon de gebruiker aan. |
Directory maken |
Het commando adduser maakt automatisch een homedirectory aan in het huis (/home /user). |
Het commando useradd maakt geen homedirectory aan in de /home, indien niet gespecificeerd met -m. |
Syntaxiscomplexiteit |
De opdrachtsyntaxis voor adduser is niet ingewikkeld zoals in useradd. |
Het useradd-commando heeft enige complexiteit. |
useradd --help
-D Defaults
-m Creates a home directory
-s Defines the shell for the user
-e Date on which the user account will be disabled
-b Base directory for the home directory of the user
-u UID -g Initial group number
-G Additional groups by name
-c Comment
Belangrijk! useradd maakt geen wachtwoord aan, deze zul je zelf later moeten toevoegen voor de gebruiker met het commando passwd (naamvandetoegevoegdegebruiker).
adduser gaat middels een aantal vragen het aanmaken van een gebruikers makkelijker maken, hier wordt wel gevraagd voor het invoeren van het wachtwoord.
Verwijderen van een gebruiker
Het commando voor het verwijderen van een gebruiker is userdel met de optie -r verwijder je ook de homedirectory.
Aanpassen van gebruikers
Usermod
In Unix / Linux-distributies wordt het commando ' usermod ' gebruikt om attributen van een reeds aangemaakt gebruikersaccount via de opdrachtregel te wijzigen of te wijzigen.
Na het aanmaken van gebruikersaccounts, in sommige scenario's waarin we de attributen van een bestaande gebruiker moeten wijzigen, zoals de homedirectory van de gebruiker, de inlognaam, de inlogshell, de vervaldatum van het wachtwoord, enz.
De basissyntaxis van de opdracht is:
usermod [opties] gebruikersnaam
Voorwaarden
- We moeten bestaande gebruikersaccounts hebben om de usermod-opdracht uit te voeren.
- Alleen de superuser (root) mag de usermod-opdracht uitvoeren.
- Het usermod-commando kan op elke Linux-distributie worden uitgevoerd.
- Moet basiskennis hebben van usermod-commando met opties
Het usermod -commando is eenvoudig te gebruiken met veel opties om wijzigingen aan te brengen aan een bestaande gebruiker. Laten we eens kijken hoe we de usermod-opdracht kunnen gebruiken door enkele bestaande gebruikers in Linux te wijzigen met behulp van de volgende opties.
- -c = We kunnen een commentaarveld toevoegen voor het gebruikersaccount.
- -d = Om de homedirectory voor een bestaand gebruikersaccount te wijzigen.
- -e = Met deze optie kunnen we het account in een bepaalde periode laten vervallen.
- -g = Verander de primaire groep voor een gebruiker.
- -G = Om aanvullende groepen toe te voegen.
- -a = Om iemand van de groep toe te voegen aan een secundaire groep.
- -l = Om de inlognaam te wijzigen van noorderpoort naar noorderpoort_admin.
- -L = Om het gebruikersaccount te vergrendelen. Hierdoor wordt het wachtwoord vergrendeld, zodat we het account niet kunnen gebruiken.
- -m = het verplaatsen van de inhoud van de homedirectory van een bestaande homedir naar een nieuwe directory.
- -p = Om een niet-gecodeerd wachtwoord te gebruiken voor het nieuwe wachtwoord. (NIET beveiligd).
- -s = Maak een gespecificeerde shell voor nieuwe accounts.
- -u = Gebruikt voor toegewezen UID voor het gebruikersaccount tussen 0 en 999.
- -U = Om de gebruikersaccounts te ontgrendelen. Hiermee wordt de wachtwoordvergrendeling verwijderd en kunnen we het gebruikersaccount gebruiken.
Switchen tussen gebruikers
Op voorwaarde dat u het wachtwoord van een ander account kent en dat het account gebruikersaanmeldingen toestaat, kunt u van gebruiker wisselen in Linux met de opdracht "su", gewoonlijk de opdracht "switch user", "superuser" of "gebruiker wisselen" genoemd .
Het su command
Om over te schakelen naar een andere gebruiker en een sessie aan te maken alsof de andere gebruiker was ingelogd vanaf een opdrachtprompt, typ je "su -" gevolgd door een spatie en de gebruikersnaam van de doelgebruiker. Typ het wachtwoord van de doelgebruiker wanneer daarom wordt gevraagd. Als u het koppelteken weglaat, logt u in op het account van de andere gebruiker met uw omgevingsvariabelen, waardoor de resultaten kunnen afwijken van wat de gebruiker zou ervaren bij het inloggen op het systeem. Typ "exit" en druk op "Enter" om uit te loggen bij het account en terug te keren naar de vorige gebruikerssessie.
Het root-account
Slechts een paar ervaren en vertrouwde gebruikers kunnen doorgaans inloggen als de root-gebruiker op de meeste Linux-systemen, omdat de root-gebruiker elk bestand of elke instelling op de server kan lezen, wijzigen en verwijderen. Om te voorkomen dat een hacker inlogt als "root", vereisen veel Linux-systemen dat een root-sessie wordt gestart vanuit een andere gebruikerssessie met het "su" -commando. Als je "su -" typt zonder gebruikersnaam en op "Enter" drukt, gaat het systeem ervan uit dat je wilt inloggen als de root-gebruiker en wordt je gevraagd om het root-gebruikerswachtwoord.
YouTube video
Video Linux | users
Deze video gaat over de gebruikers binnen Linux, hoe je deze aan kunt passen en hoe je gebruikers aanmaakt en verwijderd.
Opdracht 7 Linux
Opdracht 7 (Root)users
Opdracht 7 staat gereed op ItsLearning. Maak de opdracht met de theorie van de WikiWijs, bekijk eventueel de video als je de les gemist hebt en vul je antwoorden zo compleet als mogelijk in. Voor het uitvoeren van commando's is het handig om print-screens te maken van je handelingen als deze gelukt zijn.
Na het uitvoeren van de opdracht lever je de opdracht in en vraag je om feedback.
Les 08: Softwarebeheer
Welkom bij de les dat gaat over software beheer binnen Linux. Op de GUI kunnen we via software applicaties installeren en verwijderen, hierin merken we niet wat er op de achtergrond gebeurt.
We gaan vooral kijken hoe we op de CLI onze applicaties en software kunnen beheren, installeren, up-to-date houden en het verwijderen van software.
We gaan vooral in op de Ubuntu variant van software/packetbeheer. Dit doen we met de tool APT, voor andere distributies wordt bijvoorbeeld de tool YUM gebruikt. Dit is een andere tool voor andere distributies, maar het principe blijft hetzelfde. Tools waarmee we software/applicaties kunnen beheren.
APT (Advanced Packaging Tool)
apt
is een opdrachtregelprogramma voor het installeren, bijwerken, verwijderen en anderszins beheren van deb-pakketten op Ubuntu, Debian en gerelateerde Linux-distributies. Het combineert de meest gebruikte commandos van de apt-get
en apt-cache
tools met verschillende standaardwaarden van sommige opties.
apt
is ontworpen voor interactief gebruik. Gebruik bij voorkeur apt-get
en apt-cache
op je CLI omdat deze achterwaarts compatibel zijn tussen de verschillende versies en meer opties en functies hebben.
De meeste apt
opdrachten moeten worden uitgevoerd als een gebruiker met sudo
rechten.
Pakketindex bijwerken ( apt update
)
De APT-pakketindex is in feite een database die records bevat van beschikbare pakketten uit de repositories die in uw systeem zijn ingeschakeld.
Voer de onderstaande opdracht uit om de pakketindex bij te werken. Dit haalt de laatste wijzigingen uit de APT-repositories:
sudo apt update
Werk altijd de pakketindex bij voordat je een upgrade uitvoert of nieuwe pakketten installeert.
Pakketten upgraden ( apt upgrade
)
Het regelmatig bijwerken van uw Linux-systeem is een van de belangrijkste aspecten van algehele systeembeveiliging.
Om de geïnstalleerde pakketten te upgraden naar hun nieuwste versies, voer je het volgende uit:
sudo apt upgrade
De opdracht upgrade geen pakketten die moeten worden verwijderd van geïnstalleerde pakketten.
Als je een enkel pakket wilt upgraden, geef je de pakketnaam door:
sudo apt upgrade package_name
Het is altijd een goed idee om automatische beveiligingsupdates te configureren.
Volledige upgrade ( apt full-upgrade
)
Het verschil tussen upgrade
en full-upgrade
is dat de laatste de geïnstalleerde pakketten zal verwijderen als dat nodig is om het hele systeem te upgraden.
sudo apt full-upgrade
Wees extra voorzichtig bij het gebruik van deze opdracht.
Pakketten installeren ( apt install
)
Het installeren van pakketten is net zo eenvoudig als het uitvoeren van de volgende opdracht:
sudo apt install package_name
Als je meerdere pakketten met een commando wilt installeren, specificeer ze dan als een door spaties gescheiden lijst:
sudo apt install package1 package2
Pakketten verwijderen ( apt remove
)
Om een geïnstalleerd pakket te verwijderen, type je het volgende:
sudo apt remove package_name
U kunt ook meerdere pakketten specificeren, gescheiden door spaties:
sudo apt remove package1 package2
De remove
opdracht verwijdert de opgegeven pakketten, maar het kan enkele configuratiebestanden achterlaten. Als je het pakket inclusief alle configuratiebestanden wilt verwijderen, gebruik dan in purge
plaats van remove
:
sudo apt purge package_name
Verwijder ongebruikte pakketten ( apt autoremove
)
Elke keer dat een nieuw pakket dat afhankelijk is van andere pakketten op het systeem wordt geïnstalleerd, worden de pakketafhankelijkheden ook geïnstalleerd. Wanneer het pakket wordt verwijderd, blijven de afhankelijkheden op het systeem. Deze overgebleven pakketten worden door niets anders meer gebruikt en kunnen worden verwijderd.
Gebruik de volgende opdracht om de onnodige afhankelijkheden te verwijderen:
sudo apt autoremove
Pakketten weergeven ( apt list
)
Met het list
commando kun je een lijst maken van de beschikbare, geïnstalleerde en upgradebare pakketten.
Gebruik het volgende commando om alle beschikbare pakketten weer te geven:
sudo apt list
Het commando zal een lijst van alle pakketten afdrukken, inclusief informatie over de versies en architectuur van het pakket. Om erachter te komen of een specifiek pakket is geïnstalleerd, kun je de uitvoer filteren met het grep
commando.
sudo apt list | grep package_name
Om alleen de geïnstalleerde pakketten weer te geven, type je:
sudo apt list --installed
Het kan handig zijn om een lijst te krijgen van de pakketten die geupgraded kunnen worden voordat je de pakketten daadwerkelijk gaat upgraden:
sudo apt list --upgradeable
Pakketten zoeken ( apt search
)
Met dit commando kun je naar een bepaald pakket zoeken in de lijst met beschikbare pakketten:
sudo apt search package_name
Indien gevonden, retourneert het commando de pakketten waarvan de naam overeenkomt met de zoekterm.
Pakketinformatie ( apt show
)
De informatie over de pakketafhankelijkheden, de installatiegrootte, de pakketbron, enzovoort, kan handig zijn voordat je een nieuw pakket verwijdert of installeert.
Gebruik het show
commando om informatie over een bepaald pakket op te halen :
sudo apt show package_name
Conclusie
Weten hoe je pakketten moet beheren, is een essentieel onderdeel van het Linux-systeembeheer.
apt
is een pakketbeheerder voor op Debian gebaseerde distributies. Voor meer informatie over de apt
opdracht open je de terminal en type je man apt
.
Repositories
Een Linux-repository is een (online)opslaglocatie van waaruit je systeem OS-updates en applicaties ophaalt en installeert. Elke repository is een verzameling software die wordt gehost op een externe server en bedoeld is om te worden gebruikt voor het installeren en bijwerken van softwarepakketten op Linux-systemen. Wanneer je opdrachten uitvoert zoals "sudo apt update" of "sudo apt upgrade", haalt u mogelijk pakketinformatie en pakketupdates uit een aantal repositories.
Repositories bevatten duizenden programma's. Standaard repositories bieden een hoge mate van beveiliging, aangezien de meegeleverde software grondig is getest en gebouwd om compatibel te zijn met een bepaalde distributie en versie. U kunt dus verwachten dat de updates plaatsvinden zonder onverwachte "bijwerkingen".
Repositories kunnen standaard of niet-standaard zijn. Zodra een niet-standaard repository is toegevoegd aan de lijst met repositories van uw systeem, kan het systeem er software van installeren, evenals van de standaard repositories; anders kan het niet. Over het algemeen is het toevoegen van een niet-standaard repository een eenvoudige stap. De opdracht sudo apt-add-repository
op Ubuntu kan bijvoorbeeld worden gebruikt om een repository toe te voegen.
Voorbeeld:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
In dit voorbeeld wordt de locatie van de repository van Docker toegevoegd aan de lijst van repositories waar APT pakketten weg mag halen.
Je moet echter voorzichtig zijn wanneer je een niet-standaard repository toevoegt om er zeker van te zijn dat deze is getest en waarvan bekend is dat deze op uw specifieke systeem werkt.
YouTube video
Opdracht 8 Linux
De opdracht voor deze les staat op ItsLearning, deze maken en daarna inleveren op dezelfde plek.
Les 09: Toets Linux
Les 10: Herkansing/inhaal Linux 01
Les 11: Remote beheer (SSH)
Voor de komende lessen gaan we vaker kijken op de Linux-server. Hiervoor moeten we een 2de Linux VM maken met daarop Ubuntu-server. Je gaat zien dat Linux servers volledig CLI-based zijn en dat we deze vanaf onze Ubuntu-desktop gaan beheren.
In de komende stappen gaan we Ubuntu-server opzetten en ervoor zorgen dat we met SSH verbinding kunnen maken met onze server. Voor elke les gaan we met SSH verbinden met de server, dus niet werken op de standaard terminal dat in VM geopend wordt op het moment dat je hem opstart.
Linux server
We gaan een Ubuntu 20.04 server maken en wat basis instellingen en configuraties toepassen. Belangrijk is het maken van een "Snapshot" als je alle configuraties gedaan, zodat je deze server meerdere malen kunt gebruiken.
Download Ubuntu-server van de officiële website en installeer dit in een virtuele machine.
https://ubuntu.com/download/server
Kies voor "option 2" hier kan je het iso bestand downloaden.
Basisconfiguratie
Wanneer je voor het eerst een nieuwe Ubuntu 20.04-server maakt, moet je enkele belangrijke configuratiestappen uitvoeren als onderdeel van de basisinstallatie. Deze stappen zullen de veiligheid en bruikbaarheid van je server verhogen, en zal je een solide basis geven voor vervolgacties.
Stap 1. Aanmaken gebruiker met sudo rechten
Tenzij je eigen gebruiker in de sudo groep zit moet je een nieuwe gebruiker aanmaken. Eerst gaan we controleren of onze eigen gebruiken in de sudo groep zit en hierdoor opdrachten mag uitvoeren met root rechten.
cat /etc/group | grep sudo
Je zult zien dat je gebruiker die je hebt aangemaakt tijdens de installatie in de sudo groep zit en root rechten heeft voor het uitvoeren van opdrachten.
We gaan een test gebruiker aanmaken om er zeker van te zijn dat iedereen voor aanvang minimaal 1 gebruiker heeft met root rechten.
Zodra je bent aangemeld, zijn we gereed om het nieuwe gebruikersaccount toe te voegen. In de toekomst zullen we inloggen met dit nieuwe account in plaats van met onze eigen gebruiker.
In dit voorbeeld wordt een nieuwe gebruiker gemaakt met de naam student, maar je kunt deze vervangen door een gebruikersnaam die je bevalt:
sudo adduser student
Er worden een paar vragen gesteld, te beginnen met het accountwachtwoord.
Voer een sterk wachtwoord in en vul desgewenst aanvullende informatie in. Dit is niet vereist en je kunt gewoon ENTER
in elk veld klikken dat je wil overslaan.
Nu hebben we een nieuw gebruikersaccount met normale accountrechten. Soms moeten we echter administratieve taken uitvoeren. Deze gebruiker moet dan ook in de sudo groep komen.
sudo usermod -aG sudo student
Stap 2. Basis firewall instellingen
Ubuntu 20.04-servers kunnen de UFW-firewall gebruiken om ervoor te zorgen dat alleen verbindingen met bepaalde services zijn toegestaan. Met deze applicatie kunnen we heel eenvoudig een standaard firewall opzetten.
Toepassingen kunnen hun profielen na installatie registreren bij UFW. Met deze profielen kan UFW deze applicaties op naam beheren.
sudo ufw app list
Als het goed is staat OpenSSH als enige applicatie in de lijst. Zoniet, dan moet je OpenSSH installeren, want die gaan we nodig zijn om verbinding naar de server te krijgen.
We moeten ervoor zorgen dat de firewall SSH-verbindingen toestaat, zodat we de volgende keer weer kunnen inloggen. We kunnen deze verbindingen toestaan door te typen:
sudo ufw allow OpenSSH
Daarna kunnen we de firewall inschakelen door te typen:
sudo ufw enable
Typ y
en druk op ENTER
om door te gaan. U kunt zien dat SSH-verbindingen nog steeds zijn toegestaan door te typen:
sudo ufw status
Stap 3. SSH toegang voor je "gewone" gebruiker
Nu we een gebruiker hebben voor dagelijks gebruik, moeten we ervoor zorgen dat we rechtstreeks naar het account kunnen met SSH.
Eerst moeten we weten wat ons IP adres is van de server. Hiervoor kun je 2 opdrachten gebruiken.
ip a
hostname -I
Je kunt nu een SSH sessie opbouwen vanaf je Ubuntu Desktop. Hiervoor gebruik je de volgende opdracht.
ssh student@192.168.182.130
Vervang het IP-adres door je eigen IP-adres!!!!!
Er wordt gevraagd of je zeker bent van het verbinden, type hier yes
. Vul vervolgens het wachtwoord in van de gebruiker student en de SSH verbinding wordt opgezet.
Om de beveiliging van uw server te verbeteren, raden we u ten zeerste aan SSH-sleutels in te stellen in plaats van wachtwoordverificatie te gebruiken. Volg hiervoor het volgende tabblat.
SSH-keys
Stap 1. Maken van een SSH sleutelpaar
De eerste stap is het maken van een sleutelpaar op de clientcomputer (meestal je computer)
ssh-keygen
Standaard zullen recente versies van ssh-keygen
een 3072-bits RSA-sleutelpaar maken, dat voldoende veilig is voor de meeste gevallen (je kunt optioneel de -b 4096
vlag doorgeven om een grotere 4096-bits sleutel te maken).
Als je ervoor kiest om de sleutel op schijf te overschrijven, kun je niet meer verifiëren met de vorige sleutel. Wees heel voorzichtig bij het selecteren van ja, aangezien dit een destructief proces is dat niet ongedaan kan worden gemaakt.
Aangezien dit waarschijnlijk de eerste keer is dat je sleutels aanmaakt kies voory
Hier kun je optioneel een veilige wachtwoordzin invoeren, wat sterk wordt aanbevolen. Een wachtwoordzin voegt een extra beveiligingslaag toe om te voorkomen dat onbevoegde gebruikers inloggen. Aangezien dit een testomgeving is gaan wij dit met enter
doorheen.
Hierna zal er een output komen dat je sleutelpaar is aangemaakt.
Stap 2. Kopiëren van de openbare sleutel naar je Ubuntu-server
De snelste manier om uw openbare sleutel naar de Ubuntu-host te kopiëren, is door een hulpprogramma met de naam ssh-copy-id
. Vanwege zijn eenvoud wordt deze methode ten zeerste aanbevolen, indien beschikbaar.
De ssh-copy-id
tool is standaard opgenomen in veel besturingssystemen, dus het kan zijn dat je hem beschikbaar hebt op je lokale systeem. Om deze methode te laten werken, moet u al op een wachtwoord gebaseerde SSH-toegang tot uw server hebben.
Om het hulpprogramma te gebruiken, specificeert u de externe host waarmee u verbinding wilt maken, en het gebruikersaccount waartoe u op wachtwoord gebaseerde SSH-toegang hebt. Dit is het account waarnaar uw openbare SSH-sleutel wordt gekopieerd.
De syntaxis is:
ssh-copy-id username@remote_host
Goed kijken welk wachtwoord je in moet vullen, eerste voor de gebruiker student. Als je op de sleutel een wachtwoord hebt gezet, dan moet je die daarna invoeren.
Mogelijk zie je het volgende bericht:
(stap2,5) kopieren van ssh-keys
Het hulpprogramma ss-copy-id is niet op alle systemen beschikbaar. U zult op een andere manier de zojuist gegenereerde sleutel moeten kopieren. We gaan hiervoor gebruik maken van Powershell, deze opent u als volgt:
- klik op start
- zoek naar Powershell
- klik met de rechter muisknop op Windows Powershell
- Selecteer de optie om Powershell uit te voeren al administrator
In Powershell gebruikt u het volgende commando
type $env:USERPROFILE\.ssh\id_rsa.pub | ssh
{IP-ADDRESS} "cat >> .ssh/authorized_keys"

Vervolgens kunt u een ssh verbinding maken naar de server

Stap 3. SSH verbinding maken
Maak opnieuw verbinding met de gebruiker student om te zien dat er nu zonder wachtwoord verificatie wordt ingelogd.
De sleutel is naar de home directory van de gebruiker student gekopieërd. Deze staat in ~/.ssh/authorized_keys.
Stap 4. Wachtwoordverificatie uitzetten op je Ubuntu-server
Als je in staat was om in te loggen op je account met SSH zonder wachtwoord, heb je met succes SSH-key-gebaseerde authenticatie geconfigureerd voor je account. Uw wachtwoordgebaseerde authenticatiemechanisme is echter nog steeds actief, wat betekent dat uw server nog steeds wordt blootgesteld aan brute-force-aanvallen.
Zodra u heeft bevestigd dat uw externe account beheerdersrechten heeft, logt u in op uw externe server met SSH-sleutels. Kan je gebruiker sudo
opdrachten uitvoeren? Dan kun je wachtwoordverificatie uitzetten in het configuratiebestand van SSH.
ervolgens het configuratiebestand van de SSH-daemon:
sudo nano /etc/ssh/sshd_config
Zoek in het bestand naar een richtlijn met de naam PasswordAuthentication
. Deze regel kan worden becommentarieerd met een #
aan het begin van de regel. Maak het commentaar op de regel ongedaan door de #
, te verwijderen en de waarde in te stellen op no
. Dit zal uw mogelijkheid om in te loggen via SSH met accountwachtwoorden uitschakelen.
Sla het bestand op en sluit het als u klaar bent door op te drukken CTRL+X
, vervolgens Y
om het opslaan van het bestand te bevestigen en ten slotte ENTER
nano af te sluiten. Om deze wijzigingen daadwerkelijk te activeren, moeten we de sshd
service opnieuw starten :
sudo systemctl restart ssh
Open uit voorzorg een nieuw terminalvenster en test of de SSH-service correct werkt voordat u uw huidige sessie afsluit:
ssh username@remote_host
Zodra u heeft gecontroleerd of uw SSH-service correct werkt, kunt u alle huidige serversessies veilig sluiten.
Snapshot maken van je Ubuntu-server
Maak nu je eerste snapshot. De basisconfiguratie voor de komende lessen is gereed en kunnen we voor elke individuele les gebruiken.
Voor elke les zul je terug moeten naar de basisconfiguratie met de zojuist ingestelde configuratie. Dan heb je voor elke les een schone server waar:
- SSH is ingesteld
- UFW SSH toestaat
- Gebuiker met root en/of sudo rechten
YouTube video
Dit is de link naar de YouTube video voor deze les:
Opdracht SSH
De opdracht voor deze les staat gereed op ItsLearning. Opdracht maken en de vragen beantwoorden en/of screen-shots inleveren dat de opdrachten gemaakt zijn.
Les 12: Gebruikers en groepen
In Linux is er een concept van gebruikers (degenen die het systeem gebruiken), en dan is er het concept van groepen, wat in feite een logisch mechanisme is om een verzameling gebruikers te beheren. Om je een idee te geven: groepen maken het eenvoudig om gebruikers te beheren met bijvoorbeeld dezelfde beveiligings- en toegangsrechten. Het is de moeite waard om te weten dat een gebruiker deel kan uitmaken van verschillende groepen. Elke gebruiker zit in minimaal 1 groep, deze groep heeft de naam van de gebruiker.
In deze les gaan we kijken naar de groepen waar gebruikers in kunnen zitten, hoe we dit beheren en hoe we ervoor zorgen dat sommige gebruikers toegang hebben tot bestanden en anderen niet.
groups
In linux kun je groepen op meerdere manieren beheren. We gaan eerst kijken naar de groups opdracht.
Groups maakt het mogelijk om snel te zien aan welke groepen een gebruiker is gekoppeld. Hiervoor gebruiken we de volgende opdrachten.
groups --help
groups --version
Laten we nu onze eigen gebruiker onderzoeken en zien in welke groep de zit.
groups patrick
Zoals de output laat zien is de gebruiker lid van verschillende groepen. Veel van deze groepen zijn system-groups en hebben betrekking op applicaties die op deze Ubuntu draaien.
Daarnaast zien we dat deze gebruiker lid is van de sudo groep. Hiermee mag deze gebruiker gebruik maken van de applicatie sudo en heeft het gepriviligeerde rechten.
Groepen maken
In Linux worden groepen gebruikt om gebruikersaccounts te organiseren en te beheren. Het primaire doel van de groepen is een set toegangsrechten definiëren zoals lezen, schrijven en uitvoeren toestemming voor een bepaalde bron die worden gedeeld onder de gebruikers in de groep.
We zullen het hebben over het maken van nieuwe groepen in Linux met behulp van de groupadd
opdracht.
De algemene syntaxis voor de groupadd
opdracht is als volgt:
groupadd [OPTIONS] GROUPNAME
Alleen de root of een gebruiker met sudo- rechten kan nieuwe groepen maken.
Wanneer deze wordt aangeroepen, wordt groupadd
een nieuwe groep gemaakt met de opties die zijn opgegeven op de opdrachtregel plus de standaardwaarden die zijn opgegeven in het /etc/login.defs
bestand.
Een van de dingen die gedifineerd is zijn de group-id's. Net als een gebruiker heeft ook de group een id nummer deze noemen we GID (Group ID).
Een groep aanmaken in Linux
Om een nieuw groep aan te maken, groupadd
gevolgd door de nieuwe groepsnaam.
Als je bijvoorbeeld een nieuwe groep met de naam testgroup
wilt maken, voert u het volgende uit:
sudo groupadd testgroup
Met de opdracht wordt een vermelding voor de nieuwe groep in de /etc/group
en /etc/gshadow
bestanden toegevoegd.
Zodra de groep is gemaakt, kun je beginnen met het toevoegen van gebruikers aan de groep.
Een groep maken met een specifiek GID
In Linux- en Unix-achtige besturingssystemen worden groepen aangeduid met hun naam en een unieke GID (een positief geheel getal).
Wanneer een nieuwe groep wordt gemaakt, wijst het systeem standaard de volgende beschikbare GID toe uit de reeks groeps-ID's die in het login.defs
bestand zijn gespecificeerd .
Gebruik de -g
( --gid
) optie om een groep aan te maken met een specifieke GID.
Als je bijvoorbeeld een groep met de naam mygroup
GID 1010
wilt maken, typ je:
sudo groupadd -g 1010 mygroup
Een systeemgroep aanmaken
Er is geen echt technisch verschil tussen het systeem en reguliere (normale) groepen. Gewoonlijk worden systeembestanden gebruikt voor bepaalde speciale systeembedieningsdoeleinden, zoals het maken van back-ups of het uitvoeren van systeemonderhoud.
Systeemgroepen GID's worden gekozen uit het bereik van systeemgroep UD's gespecificeerd in het login.defs
bestand, wat anders is dan het bereik dat wordt gebruikt voor gewone groepen.
Gebruik de optie -r
( --system
) om een systeemgroep te maken. Als je bijvoorbeeld een nieuwe systeemgroep met de naam mysystemgroup
wilt maken, voer je het volgende uit:
sudo groupadd -r mysystemgroup
Een systeemgroep met wachtwoord maken
Het toevoegen van een wachtwoord aan een groep heeft geen praktisch nut en kan een beveiligingsprobleem veroorzaken aangezien meer dan één gebruiker het wachtwoord nodig heeft.
Met de optie -p
( --password
) gevolgd door een wachtwoord kun je een wachtwoord instellen voor de nieuwe groep:
sudo groupadd -p grouppassword mygroup
Groepen verwijderen
Met de groupadd
opdracht kan een nieuwe groep worden aangemaakt. Als een groep niet meer nodig is en uit het systeem moet worden verwijderd wordt er gebruik gemaakt van groupdel
.
groupdel Opdrachtsyntaxis
De algemene syntaxis voor de groupdel
opdracht is als volgt:
sudo groupdel [OPTIONS] GROUPNAME
GROUPNAME
is de naam van de groep die u wilt verwijderen.
Alleen de root of een gebruiker met sudo- rechten kan groepen verwijderen.
Het is niet mogelijk om de primaire groep van een bestaande gebruiker te verwijderen zonder eerst de gebruiker te verwijderen.
Het groupdel
commando accepteert slechts een paar opties die zelden worden gebruikt. Zie de groupdel
man-pagina voor meer informatie over de opties van het commando.
Een groep verwijderen in Linux
Om een bepaalde groep uit het systeem te verwijderen (verwijderen), roept u het groupdel
commando op gevolgd door de groepsnaam.
Als je bijvoorbeeld een groep met de naam testgroup
wilt verwijderen, voer je het volgende uit:
sudo groupdel testgroup
De bovenstaande opdracht verwijdert het groepsitem uit de /etc/group
en /etc/gshadow
bestanden.
Bij succes groupdel
drukt de opdracht geen uitvoer af.
Gebruikers toevoegen aan groepen
Er zijn twee soorten groepen in Linux-besturingssystemen:
-
De primaire groep - Wanneer een gebruiker een bestand maakt, wordt de groep van het bestand ingesteld op de primaire groep van de gebruiker. Gewoonlijk is de naam van de groep hetzelfde als de naam van de gebruiker. De informatie over de primaire groep van de gebruiker wordt in het /etc/passwd
bestand opgeslagen .
-
Secundaire of aanvullende groep - Handig als je bepaalde bestandsrechten wilt verlenen aan een groep gebruikers die lid zijn van de groep. Als je bijvoorbeeld een specifieke gebruiker aan de docker-groep toevoegt, neemt de gebruiker de toegangsrechten van de groep over en kan hij docker-opdrachten uitvoeren.
Elke gebruiker kan tot precies één primaire groep behoren en nul of meer secundaire groepen.
Alleen root of gebruikers met sudo
toegang kunnen een gebruiker aan een groep toevoegen.
Bestaande gebruiker aan een groep toevoegen
Om een bestaande gebruiker aan een secundaire groep toe te voegen, gebruik je het usermod -a -G
commando gevolgd door de naam van de groep en de gebruiker:
sudo usermod -a -G groupname username
Als je bijvoorbeeld de gebruiker testuser
aan de sudo
groep wilt toevoegen, voer je de volgende opdracht uit:
sudo usermod -a -G sudo testuser
Gebruik altijd de -a
optie (toevoegen) bij het toevoegen van een gebruiker aan een nieuwe groep. Als je de -a
optie weglaat, wordt de gebruiker verwijderd uit alle groepen die niet na de -G
optie worden vermeld.
Bij succes geeft de usermod
opdracht geen uitvoer weer. Het waarschuwt je alleen als de gebruiker of groep niet bestaat.
Bestaande gebruiker aan meerdere groepen toevoegen in één opdracht.
Als je een bestaande gebruiker met één commando aan meerdere secundaire groepen wilt toevoegen, gebruik dan het usermod
commando gevolgd door de -G
optienaam van de groep, gescheiden door ,
(komma's):
sudo usermod -a -G group1,group2 username
Gebruiker uit een groep verwijderen
Gebruik het gpasswd
commando met de -d
optie om een gebruiker uit een groep te verwijderen .
In het volgende voorbeeld verwijderen we de gebruiker username
uit de groep groupname
:
sudo gpasswd -d username groupname
Primaire groep van een gebruiker wijzigen
Gebruik de usermod
opdracht gevolgd door de -g
optie om een primaire gebruikersgroep te wijzigen :
sudo usermod -g groupname username
In het volgende voorbeeld wijzigen we de primaire groep van de gebruiker testuser
in developers
:
sudo usermod -g developers testuser
Nieuwe gebruiker aanmaken en groepen toewijzen in één opdracht
De volgende useradd
opdracht maakt een nieuwe gebruiker aan met de naam nathan
primaire groep users
en secundaire groepen admins
en developers
.
sudo useradd -g users -G admins,developers nathan
Gebruikersgroepen weergeven
Om volledige gebruikersinformatie weer te geven, inclusief alle groepen waarvan een gebruiker lid is, gebruik je bijvoorbeeld de id
opdracht gevolgd door de gebruikersnaam:
id username
Gebruik de groups
opdracht om de aanvullende groepen van de gebruiker weer te geven:
groups testuser
YouTube video
Bekijk de video voor extra uitleg over het gebruik van groepen.
Opdracht groepen
De opdrachten voor de les groepen staat op ItsLearning. Opdracht maken en inleveren.
Les 13: Rechten
Deze les is een hele belangrijke les als het gaat om toegang tot bestanden, directory's en wie wat aan mag passen enz. Dit samen noemen we rechten in Linux. Om te zien wie welke rechten heeft op bepaalde bestanden en directory's gebruiken we de opdracht ls -l
.
Laten we ingaan op wat rechten zijn, hoe we deze aanpassen en hoe we ervoor zorgen dat bepaalde bestanden niet door iedereen bekeken/aangepast mogen worden.
Rechten
Bestandseigendom is een belangrijk onderdeel van Linux dat een veilige methode biedt voor het opslaan van bestanden. Elk bestand in Linux heeft de volgende attributen:
-
Eigenaarsrechten - De eigenaarsrechten bepalen welke acties de eigenaar van het bestand op het bestand kan uitvoeren.
-
Groepsmachtigingen - De machtigingen van de groep bepalen welke acties een gebruiker, die lid is van de groep waartoe een bestand behoort, op het bestand kan uitvoeren.
-
Andere (wereld) machtigingen - De machtigingen voor anderen geven aan welke actie alle andere gebruikers op het bestand kunnen uitvoeren.
De machtigingsindicatoren
Tijdens het gebruik van de opdracht ls -l geeft het als volgt verschillende informatie weer met betrekking tot bestandsrechten:
$ls -l /home/patrick
-rwxr-xr-- 1 patrick users 1024 Nov 2 00:10 mijnbestand
drwxr-xr-- 1 patrick users 1024 Nov 2 00:10 mijndirectory
Hier vertegenwoordigt de eerste kolom verschillende toegangsmodi, dwz de toestemming die is gekoppeld aan een bestand of een map.
De machtigingen zijn onderverdeeld in groepen van drie en elke positie in de groep geeft een specifieke machtiging aan, in deze volgorde: lezen (r), schrijven (w), uitvoeren (x):
- Het eerste teken, de
-
, geeft aan dat /home/patrick/mijnbestand een bestand is, geen directory.
- Het eerste teken, de
d
, geeft aan dat /home/patrick/mijndirectory een directory is, geen bestand.
-
De eerste drie tekens (2-4) vertegenwoordigen de machtigingen voor de eigenaar van het bestand. Bijvoorbeeld -rwxr-xr-- representeert dat de eigenaar read(r), write(w) en uitvoeren(x) rechten heeft.
-
De tweede groep van drie karakters (5-7) bestaat uit de permissies voor de groep waartoe het bestand behoort. Bijvoorbeeld -rwxr-xr-- stelt dat de groep read(r) en uitvoeren(x) rechten heeft maar geen schrijfmachtiging.
-
De laatste groep van drie tekens (8-10) vertegenwoordigt de rechten voor alle anderen. Bijvoorbeeld -rwxr-xr-- vertegenwoordigt dat anderen alleen read(r) toestemming heeft.
Bestandstoegangsmodi
De machtigingen van een bestand zijn de eerste verdedigingslinie in de beveiliging van een Linux-systeem. De basisbouwstenen van Linux-machtigingen zijn de lees-, schrijf- en uitvoeringsmachtigingen, die hieronder worden beschreven:
Lezen
Geeft de mogelijkheid om de inhoud van het bestand te lezen, dwz te bekijken.
Schrijven
Geeft de mogelijkheid om de inhoud van het bestand te wijzigen of te verwijderen.
Uitvoeren
Een gebruiker met uitvoeringsrechten kan een bestand als een programma uitvoeren.
Toegangsmodi voor mappen
Toegangsmodi voor mappen worden op dezelfde manier weergegeven en georganiseerd als elk ander bestand. Er zijn een paar verschillen die moeten worden vermeld:
Lezen
Toegang tot een directory betekent dat de gebruiker de inhoud kan lezen. De gebruiker kan de bestandsnamen in de directory bekijken.
Schrijven
Toegang betekent dat de gebruiker bestanden kan toevoegen aan of verwijderen uit de directory.
Uitvoeren
Het uitvoeren van een map heeft niet echt zin, dus beschouw dit als een toestemming om door te bladeren.
Rechten wijzigen
Machtigingen wijzigen
Om het bestand of de mapmachtigingen te wijzigen, gebruik je de opdrachtchmod
(wijzigingsmodus). Er zijn twee manieren om chmod te gebruiken, de symbolische modus en de absolute modus.
Chmod gebruiken in symbolische modus
De gemakkelijkste manier voor een beginner om bestands- of mapmachtigingen te wijzigen, is door de symbolische modus te gebruiken. Met symbolische machtigingen kun je de gewenste machtigingenset toevoegen, verwijderen of specificeren met behulp van de operators in de volgende tabel.
No. |
Chmod-operator en beschrijving |
1 |
+ Voegt de aangewezen machtiging (en) toe aan een bestand of map.
|
2 |
- Verwijdert de aangewezen toestemming (en) uit een bestand of map.
|
3 |
= Stelt de aangewezen toestemming (en) in.
|
Hier is een voorbeeld met testfile. Het draaien van ls -l op het testbestand laat zien dat de permissies van het bestand als volgt zijn -
$ls -l testfile
-rwxrwxr-- 1 patrick users 1024 Nov 2 00:10 testfile
Vervolgens wordt elk voorbeeld van een chmod opdracht uit de voorgaande tabel uitgevoerd op het testbestand, gevolgd door ls –l , zodat je de permissieveranderingen kunt zien:
$chmod o+wx testfile
$ls -l testfile
-rwxrwxrwx 1 patrick users 1024 Nov 2 00:10 testfile
$chmod u-x testfile
$ls -l testfile
-rw-rwxrwx 1 patrick users 1024 Nov 2 00:10 testfile
$chmod g=rx testfile
$ls -l testfile
-rw-r-xrwx 1 patrick users 1024 Nov 2 00:10 testfile
Hier lees je hoe je deze opdrachten op één regel kunt combineren:
$chmod o+wx,u-x,g=rx testfile
$ls -l testfile
-rw-r-xrwx 1 patrick users 1024 Nov 2 00:10 testfile
Chmod gebruiken met absolute machtigingen
De tweede manier om permissies te wijzigen met het chmod commando is om een nummer te gebruiken om elke set permissies voor het bestand te specificeren.
Elke machtiging krijgt een waarde toegewezen, zoals de volgende tabel laat zien, en het totaal van elke set machtigingen geeft een nummer voor die set.
Aantal |
Octal Permission Representation |
Ref |
0 |
Geen toestemming |
--- |
1 |
Uitvoeren toestemming |
--x |
2 |
Schrijf toestemming |
-w- |
3 |
Uitvoeren en schrijven toestemming: 1 (uitvoeren) + 2 (schrijven) = 3 |
-wx |
4 |
Lees toestemming |
r-- |
5 |
Lezen en uitvoeren toestemming: 4 (lezen) + 1 (uitvoeren) = 5 |
rx |
6 |
Lezen en schrijven toestemming: 4 (lezen) + 2 (schrijven) = 6 |
rw- |
7 |
Alle rechten: 4 (lezen) + 2 (schrijven) + 1 (uitvoeren) = 7 |
rwx |
Hier is een voorbeeld met behulp van het testbestand. Het draaien van ls -l op het testbestand laat zien dat de permissies van het bestand als volgt zijn:
$ls -l testfile
-rwxrwxr-- 1 patrick users 1024 Nov 2 00:10 testfile
Vervolgens wordt elk voorbeeld van een chmod opdracht uit de voorgaande tabel uitgevoerd op het testbestand, gevolgd door ls –l , zodat je de permissieveranderingen kunt zien:
$ chmod 755 testfile
$ls -l testfile
-rwxr-xr-x 1 patrick users 1024 Nov 2 00:10 testfile
$chmod 743 testfile
$ls -l testfile
-rwxr---wx 1 patrick users 1024 Nov 2 00:10 testfile
$chmod 043 testfile
$ls -l testfile
----r---wx 1 patrick users 1024 Nov 2 00:10 testfile
Eigenaar en groep wijzigen
Bij het aanmaken van een account op Linux, wijst het een eigenaar-ID en een groeps-ID toe aan elke gebruiker. Alle genoemde rechten worden ook toegewezen op basis van de eigenaar en de groepen.
Er zijn twee opdrachten beschikbaar om de eigenaar en de groep bestanden te wijzigen:
-
chown - Het chown commando staat voor "change owner" en wordt gebruikt om de eigenaar van een bestand te veranderen.
-
chgrp - Het chgrp commando staat voor "change group" en wordt gebruikt om de groep van een bestand te veranderen.
Eigendom veranderen
Het chown commando verandert het eigendom van een bestand. De basissyntaxis is als volgt:
$ chown user file
De waarde van de gebruiker kan de naam van een gebruiker op het systeem zijn of het gebruikers-ID (uid) van een gebruiker op het systeem.
Het volgende voorbeeld zal je helpen het concept te begrijpen:
$ chown patrick testfile
$
Verandert de eigenaar van het gegeven bestand in de gebruiker patrick.
OPMERKING - De supergebruiker, of root, heeft de onbeperkte mogelijkheid om het eigendom van elk bestand te wijzigen, maar normale gebruikers kunnen het eigendom wijzigen van alleen die bestanden waarvan ze de eigenaar zijn.
Groepseigendom wijzigen
Het chgrp commando verandert het groepseigendom van een bestand. De basissyntaxis is als volgt:
$ chgrp group file
De waarde van groep kan de naam zijn van een groep op het systeem of de groeps-ID (GID) van een groep op het systeem.
Het volgende voorbeeld helpt je het concept te begrijpen:
$ chgrp groepsnaam testfile
$
Verandert de groep van het gegeven bestand in de groepsnaam groep, alle gebruikers in deze groep hebben nu toegang tot dit bestand (ligt aan de rechten).
Combineren
Het chown en chgrp kunnen we combineren:
$ chown patrick.group file
De eigenaar en groep worden nu aangepast op het bestand file.
Zoals je hierboven ziet moeten deze opdracht uitgevoerd worden met sudo rechten.
Speciale rechten
Speciale machtigingen vormen een vierde machtigingstype naast de basisgebruiker, groep en andere rechten. Zoals de naam al aangeeft, bieden deze machtigingen aanvullende toegangsgerelateerde functies bovenop wat de basistoestemmingstypen toestaan. Hieronder de impact van speciale machtigingen, samengevat in een tabel.
SPECIAL PERMISSION |
EFFECT OP BESTANDEN |
EFFECT OP DIRECTORIES |
u+s (suid) |
Bestand wordt uitgevoerd als de gebruiker die eigenaar is van het bestand, niet als de gebruiker die het bestand heeft uitgevoerd. |
Geen effect. |
g+s (sgid) |
Bestand wordt uitgevoerd als de groep die eigenaar is van het bestand. |
Van bestanden die nieuw zijn gemaakt in de directory, is de groepseigenaar ingesteld op de groepseigenaar van de directory. |
o+t (sticky) |
Geen effect. |
Gebruikers met schrijftoegang tot de directory kunnen alleen bestanden verwijderen waarvan ze de eigenaar zijn; ze kunnen bestanden van andere gebruikers niet verwijderen of forceren. |
De setuid-machtiging voor een uitvoerbaar bestand betekent dat opdrachten worden uitgevoerd als de gebruiker die eigenaar is van het bestand, niet als de gebruiker die de opdracht heeft uitgevoerd.
Voorbeeld:
Voeg het setgid-bit toe aan de directory:
$ chmod g+s directory
Stel de setgid-bit in en voeg lees- / schrijf- / uitvoerrechten toe voor gebruiker en groep, zonder toegang voor anderen, aan de directory:
$ chmod 2770 directory
YouTube video
Bekijk deze video voor meer uitleg over rechten in Linux.
Opdracht rechten
Opdracht voor deze les staat op ItsLearning. Deze opdracht maken en goed kijken hoe je de rechten instelt en bijvoorbeeld eigenaar en groepseigenaar van bestanden wijzigt, aanpast en ervoor zorgt dat anderen niet bij bestanden kunnen.
Les 14: Users/Groepen/Rechten
In deze les gaan we in op 3 onderdelen die je de lessen hiervoor hebt gehad. We gaan een combinatie maken van gebruikers(users), groepen(groups) en rechten(permissions). Dit te samen is een van de belangrijkste beheersfuncties op de Linux omgeving. We gaan in deze les een combinatie maken van het in Windows bekende AGDLP- rechten en het beheer op een Linux-server.
Best practice
Of je nu in de planningsfase bevindt of al NTFS-machtigingen heeft geïmplementeerd, het volgen van enkele best practices zorgt voor een vlotte administratie en hulp bij het snel oplossen van toegangsproblemen.
Hieronder een aantal tips die het delen van bestanden en resources makkelijk maakt. Linux is overeenkomstig met Windows als het gaat om verschillende rechten op mappen/bestanden. Normaliter zullen we voor het delen van mappen een netwerk-share aanmaken, echter gaan wij dit eerst op de server doen. In latere lessen gaan we shares maken en deze delen via het netwerk.
VERLEEN VOLLEDIGE CONTROLE OVER DE SHARE EN SPECIFIEKE NTFS-MACHTIGINGEN VOOR MAPPEN
Het is een goede gewoonte om "iedereen" volledige controlebevoegdheden te geven op de Share-machtiging en vervolgens specifieke machtigingen te definiëren op het NTFS-niveau.
DEEL MAPPEN MET GROEPEN, NIET MET GEBRUIKERS
Dit maakt de administratie eenvoudiger. Stel je voor dat u de map "Verkoop" deelt met 10 verkopers.
ORGANISEER JE BRONNEN
Om het beheer te vergemakkelijken, is het belangrijk om applicatiebestanden en databestanden in hun eigen individuele mappen te bewaren. Bovendien helpt het consolideren van mappen met dezelfde beveiligingsvereisten bij het beheren van hun toegangsrechten.
Als gebruikers bijvoorbeeld "Lezen" -machtigingen nodig hebben voor verschillende toepassingsmappen, sla je die mappen op in een enkele map. Hiermee kun je toestemming verlenen voor die grotere map, in plaats van dat voor elke toepassingsmap te doen.
GEBRUIK “READ & EXECUTE” VOOR APPLICATIEMAPPEN
Wanneer je machtigingen toewijst voor het werken met toepassingsmappen, wijs je de machtiging " Lezen en uitvoeren " toe aan de gebruikersgroep en de beheerdersgroep.
WIJS ALLEEN MINIMALE MACHTIGINGEN TOE
Wijs minimale machtigingen toe waarmee gebruikers de vereiste taken kunnen uitvoeren.
Als een gebruiker bijvoorbeeld informatie in een map moet lezen en nooit bestanden mag verwijderen of maken, wijs dan alleen de machtiging "Lezen" toe.
Hiermee voorkomt je ongeautoriseerde toegang tot kritieke gegevens, waardoor je omgeving veiliger wordt.
GEBRUIK INTUÏTIEVE NAAMGEVINGSCONVENTIE
Door intuïtieve share-namen te gebruiken, kunnen gebruikers bronnen gemakkelijk herkennen en lokaliseren. Gebruik bijvoorbeeld voor de toepassingsmap "Apps" als de sharenaam.
Hoewel dit een basispraktijk is, die vaak wordt genegeerd, kan het volgen van een intuïtieve naamgevingsconventie je behoeden voor onnodige telefoontjes of e-mails van werknemers die vragen welke de juiste map is.
DOCUMENTEER ALLES
En we bedoelen alles, zelfs de kleinste veranderingen. Het is altijd goed om iets te hebben om naar terug te gaan als je vergeet wie toegang heeft tot wat.
Omgeving
We gaan op onze Linux-server deze onderdelen toepassen. We gaan spelen met gebruikers/groepen en rechten op bepaalde directory's. Daarna inloggen met andere gebruikers en kijken of je ook iets mag doen in die directory enz.
zoals hieronder te zien is na succesvolle implementatie van onze omgeving met gebruikers - groepen - rechten. Kunnen bepaalde gebruikers in hun eigen directory's bestanden maken en uitvoeren, maar in andere mappen niet. Ze mogen in de hoofd-directory geen bestanden verwijderen omdat we gebruik hebben gemaakt van de sticky-bit op de hoofd-directory. Verklaar voor jezelf hoe dit komt, zie welke rechten toegepast zijn, enz.
Opdracht Users/Groups/Permissions
De opdracht voor deze les staat op ItsLearning. Opdracht maken en weer inleveren. Zorg ervoor dat het concept na deze les duidelijk is, zoniet vraag hiernaar bij je docent!
Les 15: Back-up
Deze les gaan we kijk naar archief en back-up bestanden. Dit gaan we doen met TAR (tape archive) en Rsync, tevens gaan we dit met CRON automatiseren.
TAR
Het tar-commando op Linux wordt vaak gebruikt om .tar.gz- of .tgz-archiefbestanden te maken, ook wel "tarballs" genoemd. Dit commando heeft een groot aantal opties, maar je hoeft maar een paar letters te onthouden om snel archieven met tar te maken. Het tar-commando kan ook de resulterende archieven extraheren.
Het tar-commando dat bij Linux-distributies wordt geleverd, heeft geïntegreerde compressie. Het kan een .tar-archief maken en het vervolgens comprimeren met gzip- of bzip2-compressie in een enkele opdracht. Daarom is het resulterende bestand een .tar.gz-bestand of .tar.bz2-bestand.
Deze extensies geven aan met wat het archief bestand is gemaakt en maakt het voor ons leesbaar om het dan op de juiste manier weer uit te pakken. Dus extensies zijn bij archief bestanden belangrijk.
Comprimeer een hele directory of een enkel bestand
Gebruik de volgende opdracht om een volledige map of een enkel bestand op Linux te comprimeren. Het comprimeert ook elke andere map in een map die je opgeeft, met andere woorden, het werkt recursief.
tar -czvf naam-van-archief.tar.gz /pad/naar/map-of-bestand
Dit is wat die schakelaars eigenlijk betekenen:
- -c: Create een archief.
- -z: Comprimeer het archief met gzip.
- -v: Toon de voortgang in de terminal tijdens het aanmaken van het archief, ook wel bekend als de " verbose" -modus. De v is altijd optioneel in deze opdrachten, maar het is nuttig.
- -f: hiermee kun je het te specificeren file naam van het archief opgeven.
Stel dat je een directory met de naam "spullen" in de huidige directory hebt en je deze wilt opslaan in een bestand met de naam archive.tar.gz. Hiervoor zou je de volgende opdracht kunnen uitvoeren:
tar -czvf archive.tar.gz spullen
Of, laten we zeggen dat er een directory is op /usr/local/something op het huidige systeem en je wilt het comprimeren naar een bestand met de naam archive.tar.gz. Nu geven we het absolute pad op, vanaf de root directory tot het bestand/map. Je zou hiervoor de volgende opdracht kunnen uitvoeren:
tar -czvf archive.tar.gz /usr/local/something
Comprimeer meerdere mappen of bestanden tegelijk
Hoewel tar vaak wordt gebruikt om een enkele map te comprimeren, kun je het ook gebruiken om meerdere mappen, meerdere individuele bestanden of beide te comprimeren. Geef een lijst met bestanden of mappen op in plaats van een enkele. Stel dat je bijvoorbeeld de map /home/ubuntu/Downloads, de map /usr/local/stuff en het bestand /home/ubuntu/Documents/notes.txt wilt comprimeren. Je voert hiervoor de volgende opdracht uit:
tar -czvf archive.tar.gz /home/ubuntu/Downloads /usr/local/stuff /home/ubuntu/Documents/notes.txt
Maak een lijst van zoveel mappen of bestanden als je een back-up wilt maken.
Sluit mappen en bestanden uit
In sommige gevallen wil je misschien een hele map comprimeren, maar bepaalde bestanden en mappen niet opnemen. Je kunt dit doen door een --exclude
optie toe te voegen voor elke map of elk bestand dat je wilt uitsluiten.
Stel dat je bijvoorbeeld /home/ubuntu wilt comprimeren, maar dat je de mappen /home/ubuntu/Downloads en /home/ubuntu/.cache niet wilt comprimeren. Hier is hoe je het zou kunnen doen:
tar -czvf archive.tar.gz /home/ubuntu --exclude=/home/ubuntu/Downloads --exclude=/home/ubuntu/.cache
De --exclude
optie is erg krachtig. Het accepteert geen namen van mappen en bestanden, het accepteert eigenlijk patronen. Je kunt er nog veel meer mee doen. Je kunt bijvoorbeeld een volledige map archiveren en alle .mp4-bestanden uitsluiten met de volgende opdracht:
tar -czvf archive.tar.gz /home/ubuntu --exclude=*.mp4
Gebruik van bzip2-compressie
Hoewel gzip-compressie het vaakst wordt gebruikt om .tar.gz- of .tgz-bestanden te maken, ondersteunt tar ook bzip2-compressie. Hiermee kun je bzip2-gecomprimeerde bestanden maken, vaak genaamd .tar.bz2, .tar.bz of .tbz-bestanden. Om dit te doen, vervang je gewoon de -z voor gzip in de commando's hier door een -j voor bzip2.
Gzip is sneller, maar comprimeert over het algemeen iets minder, dus je krijgt een wat groter bestand. Bzip2 is langzamer, maar comprimeert iets meer, dus je krijgt een wat kleiner bestand. Gzip komt ook vaker voor, sommige uitgeklede Linux-systemen hebben standaard gzip-ondersteuning, maar geen bzip2-ondersteuning. Over het algemeen zijn gzip en bzip2 praktisch hetzelfde en zullen beide op dezelfde manier werken.
In plaats van het eerste voorbeeld dat we hebben gegeven voor het comprimeren van de spullen-map, zou je bijvoorbeeld de volgende opdracht uitvoeren:
tar -cjvf archive.tar.bz2 spullen
Pak een archief uit
Als je eenmaal een archief hebt, kun je het extraheren/uitpakken met het tar-commando. Met de volgende opdracht wordt de inhoud van archive.tar.gz uitgepakt naar de huidige directory.
tar -xzvf archive.tar.gz
Het is hetzelfde als de opdracht voor het maken van archieven die we hierboven hebben gebruikt, behalve dat de -x
optie de schakelaar vervangt -c
. Dit geeft aan dat je met -x optie een archief uitpakt in plaats van een maken.
Mogelijk wil je de inhoud van het archief uitpakken naar een specifieke map. Je kunt dit doen door de -C
optie aan het einde van de opdracht toe te voegen. Met de volgende opdracht wordt bijvoorbeeld de inhoud van het bestand archive.tar.gz uitgepakt naar de directory /tmp.
tar -xzvf archive.tar.gz -C /tmp
Als het bestand een met bzip2 gecomprimeerd bestand is, vervang je de "z" in de bovenstaande opdrachten door een "j".
De hierboven gedemonstreerde opties van tar zijn er slecht een paar, maar wel de meest gebruikte opties. Gebruik --help om te zien wat tar nog meer kan.
Als je een grafische Linux-desktop gebruikt, kun je ook het hulpprogramma voor bestandscompressie of bestandsbeheer gebruiken dat bij je bureaublad is geleverd om .tar-bestanden te maken of uit te pakken. In Windows kun je .tar-archieven uitpakken en maken met het gratis hulpprogramma 7-Zip .
Rsync
rsync is een protocol dat is gebouwd voor Linux-achtige systemen en dat ongelofelijke veelzijdigheid biedt voor het maken van back-ups en het synchroniseren van gegevens. Het kan lokaal worden gebruikt om een back-up te maken van bestanden naar verschillende mappen of kan worden geconfigureerd om via internet te synchroniseren met andere hosts.
Het kan zijn dat rsync niet op de host/server geïnstalleerd is, hiervoor gebruiken we het volgende opdracht:
sudo apt install rsync
Rsync gebruiken voor lokale back-ups
In het eerste deel van deze les maken we een back-up van de bestanden van Directory1 naar Directory2. Beide mappen staan op dezelfde harde schijf, maar dit zou precies hetzelfde werken als de mappen op twee verschillende schijven zouden bestaan. Er zijn verschillende manieren waarop we dit kunnen aanpakken, afhankelijk van wat voor soort back-ups je wilt configureren. Voor de meeste doeleinden is de volgende opdracht voldoende:
rsync -av --delete /Directory1/ /Directory2/
De bovenstaande opdracht synchroniseert de inhoud van Directory1 naar Directory2 en laat geen verschillen tussen de twee achter. Als rsync vindt dat Directory2 een bestand heeft dat Directory1 niet heeft, zal het dit verwijderen. Als rsync een bestand vindt dat is gewijzigd, gemaakt of verwijderd in Directory1, zal het dezelfde wijzigingen weerspiegelen in Directory2.
Let op! Rsync zorgt ervoor dat Directory2 identiek is als Directory1.
Er zijn veel verschillende opties die je voor rsync kunt gebruiken om het aan je specifieke behoeften te personaliseren. Dit is wat de bovengenoemde opdracht rsync vertelt om te doen met de back-ups:
- -a = recursief (recursief in mappen), koppelingen (symlinks kopiëren als symlinks), perms (behouden permissies), tijden (behouden wijzigingstijden), groep (behouden groep), eigenaar (behouden eigenaar), bewaren apparaatbestanden, en bewaar speciale bestanden.
- -v = verbose. Je kunt precies zien van welke back-up rsync een back-up maakt. Denk hier eens over na: wat als je harde schijf defect raakt en bestanden begint te verwijderen zonder je medeweten, dan voer je de rsync-opdracht uit en het pusht die wijzigingen naar je back-ups, waardoor alle instanties van een bestand worden verwijderd.
- - -delete = Dit vertelt rsync om alle bestanden te verwijderen die in Directory2 staan en niet in Directory1.
Tip van Flip: Let op de slashes aan het einde van de mappen in het rsync-commando die zijn nodig, onthoud dit!
Rsync gebruiken voor externe back-ups
rsync kan op verschillende manieren worden geconfigureerd voor externe back-ups, maar we zullen de meest praktische (ook de gemakkelijkste en meest veilige) methode bespreken om rsync via SSH te tunnelen. De meeste servers en zelfs veel clients hebben al SSH en het kan worden gebruikt voor uw rsync-back-ups. We zullen je het proces laten zien om van de ene Linux-machine een back-up te maken naar een andere op een lokaal netwerk. Het proces zou exact hetzelfde zijn als een host ergens op het internet was, houd er rekening mee dat poort 22 (of welke poort je ook SSH hebt geconfigureerd) zou moeten worden doorgestuurd op alle netwerkapparatuur aan de kant van de server.
Zorg ervoor dat SSH en rsync zijn geïnstalleerd op de server (de computer die de back-ups zal ontvangen).
sudo apt install ssh rsync
Behalve het installeren van SSH en rsync op de server, hoeft je alleen maar de repositories op de server in te stellen waar je een back-up van de bestanden wilt maken, en ervoor te zorgen dat SSH is vergrendeld. Zorg ervoor dat de gebruiker die je gebruikt voor dit, een complex wachtwoord heeft, en het kan ook een goed idee zijn om de poort waarop SSH luistert om te schakelen (standaard is 22). Daarnaast is het gebruik van SSH-sleutels een best-practice, in plaats van wachtwoorden.
We zullen hetzelfde rsync-opdracht uitvoeren dat we deden voor het gebruik van rsync op een lokale computer, maar voegen de nodige toevoegingen toe voor het tunnelen van rsync via SSH naar een server op mijn lokale netwerk. Voor gebruiker “student” die verbinding maakt met “192.168.182.130” en dezelfde opties gebruikt als hierboven (-av - -delete), zullen we het volgende uitvoeren:
rsync -av --delete -e ssh /Directory1/ student@192.168.182.130:/Directory2/
Als je SSH luistert op een andere poort dan 22, moet je het poortnummer specificeren, zoals in dit voorbeeld waar poort 2222 wordt gebruikt:
rsync -av --delete -e 'ssh -p 2222' /Directory1/ student@192.168.182.130:/Directory2/
Cron
Automatisering van tar/rsync back-ups
Cron kan op Linux worden gebruikt om de uitvoering van opdrachten, zoals tar/rsync te automatiseren. Met Cron kunnen we ons Linux-systeem nachtelijke back-ups laten maken, of hoe vaak je ze ook wilt laten draaien.
Om het cron-tabelbestand te bewerken voor de gebruiker waarmee je bent ingelogd, voer je het volgende uit:
crontab -e
Je moet bekend zijn met vi om dit bestand te kunnen bewerken. Typ "I" voor invoegen en begin met het bewerken van het cron-tabelbestand.
Cron gebruikt de volgende syntaxis: minuut van het uur, uur van de dag, dag van de maand, maand van het jaar, dag van de week, opdracht.
In het begin kan het een beetje verwarrend zijn, dus laten we een voorbeeld geven. Met de volgende opdracht wordt de opdracht rsync elke nacht om 22.00 uur uitgevoerd:
0 22 * * * rsync -av --delete /Directory1/ /Directory2/
De eerste "0" geeft de minuut van het uur aan en "22" geeft 22:00 uur aan. Omdat we willen dat dit commando/opdracht dagelijks wordt uitgevoerd, laten we de rest van de velden achter met asterisken en plakken we het rsync-commando.
Nadat je klaar bent met het configureren van Cron, drukt je op escape, en typ je ": wq" (zonder de aanhalingstekens) en druk je op enter. Hiermee worden je wijzigingen in vi opgeslagen.
Cron kan veel dieper ingaan dan dit, probeer zelf eens onderdelen met Cron te automatiseren. De meeste mensen willen gewoon een eenvoudige wekelijkse of dagelijkse back-up, en wat we hebben laten zien, kunt je gemakkelijk bereiken. Zie de man-pagina's voor meer informatie over Cron.
Opbouw Cron:
# Example of job definition:
# .---------------- minute (0-59)
# | .------------- hour (0-23)
# | | .---------- day of month (1-31)
# | | | .------- month (1-12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0-6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * command to be executed
Voorbeeld:
Voert sample-command.sh om 07:30, 09:30, 13:30 en 15:30 uit.
30 07, 09, 13, 15 * * * sample-command.sh
Tijden in Cron:
De tijdsnelkoppelingen van één woord kunnen worden gebruikt om de vijf velden te vervangen die gewoonlijk worden gebruikt om tijden op te geven. Het @ -teken wordt gebruikt om snelkoppelingen naar cron te identificeren. De onderstaande lijst, afkomstig van de crontab (5) man-pagina, toont de snelkoppelingen met hun equivalente betekenis.
- @reboot: één keer uitvoeren na opnieuw opstarten.
- @yearly: voer één keer per jaar uit, dwz. 0 0 1 1 *
- @annually: Run één keer per jaar, dwz. 0 0 1 1 *
- @monthly: één keer per maand uitvoeren, dwz. 0 0 1 * *
- @weekly: Run één keer per week, dwz. 0 0 * * 0
- @daily: Run één keer per dag, dwz. 0 0 * * *
- @hourly: Run één keer per uur, dwz. 0 * * * *
Deze snelkoppelingen kunnen in elk van de crontab-bestanden worden gebruikt.
YouTube video
De onderstaande video laat zien hoe je back-ups kan maken met tar en rsync.
Opdracht back-ups
De opdracht voor deze les staat op ItsLearning. Opdracht maken en probeer je back-ups te automatiseren met Cron.
Les 16: Bash scripting
Bash/shell-scripts zijn platte-tekstbestanden die een reeks opdrachten bevatten die na elkaar door een shell worden uitgevoerd. Bash is de standaardshell in de meeste moderne Linux-distributies en we zullen de programmeermogelijkheden ervan gebruiken om eenvoudige scripts te maken. Naarmate je ervaring opdoet, kunnen we wat we hebben geleerd gebruiken om robuustere programma's te ontwikkelen.
Systeembeheerders gebruiken vaak shellscripts om routinetaken te automatiseren. Als vuistregel geldt dat als een taak periodiek moet worden uitgevoerd (zelfs als het maar één keer per maand is), deze moet worden geautomatiseerd.
Opbouw bash-script
De eerste regel in een shellscript moet de shell (ook bekend als interpreter) aangeven die zal worden gebruikt om het uit te voeren. Voor Bash betekent dit
#! /bin/bash
De bovenstaande regel moet worden gevolgd door de opdrachten die door de shell moeten worden uitgevoerd, één per regel. Hoewel de voorkeuren tussen systeembeheerders kunnen variëren, bevatten effectieve en goed onderhouden shellscripts vaak de volgende secties:
Header
De scriptkop is een gedeelte met commentaar waarin de ontwikkelaar items kan opnemen zoals:
- Beschrijving/doel van het script
- Revisiegeschiedenis
- Licentievoorwaarden en/of copyrightmelding
De shell negeert blanco en becommentarieerde regels. De eerste zijn alleen bedoeld als informatie voor de auteur, andere recensenten en mensen die het programma gebruiken. Om commentaar te geven op een regel, plaatst je gewoon een # -teken aan het begin. Een gemeenschappelijke koptekst ziet er als volgt uit:
# ======================================================================
# SCRIPT NAME: testscript.sh
# PURPOSE: Demonstrate simple Bash programming concepts
# REVISION HISTORY:
# AUTHOR DATE DETAILS
# --------------------- --------------- --------------------------------
# Patrick H 2021-02-04 Initial version
# LICENSE: Noorderpoort
# ======================================================================
Body
De hoofdtekst van het script is waar de reeks opdrachten wordt geplaatst, één per regel. Een commando kan rechtstreeks door de shell worden uitgevoerd of de uitvoer kan worden opgeslagen in een container die bekend staat als variabele.
Je kunt variabelen zien als vakken waarin we een vaste waarde (zoals tekst of een getal) of de uitvoer van een commando kunnen opslaan, voor later hergebruik.
Als best practice gebruiken systeembeheerders vaak opmerkingen in de hoofdtekst om aan te geven wat een bepaalde regel code moet doen. Dit dient tevens als herinnering voor hem/haarzelf en anderen die later aan hetzelfde bestand zullen werken.
Om de uitvoer van een commando in een variabele op te slaan, plaatst je het commando tussen haakjes en zet je het voor met het dollarteken. Dus in MYVAR = $(commando), bevat de variabele MYVAR de uitvoer van een commando, waarbij het commando elk commando kan zijn dat wordt uitgevoerd door de shell. Om de inhoud van MYVAR in het script te gebruiken, voeg je $MYVAR toe waar het nodig is. Bijvoorbeeld:
echo "Starting to run the script..."
# VARIABLE ASSIGNMENT
# Show hostname:
HOST=$(hostname)
# User executing the script:
CURRENTUSER=$(whoami)
# Current date:
CURRENTDATE=$(date +%F)
# Host IP address:
IPADDRESS=$(hostname -I | cut -d ' ' -f1)
# SHOW MESSAGES
echo "Today is $CURRENTDATE"
echo "Hostname: $HOST ($IPADDRESS)"
echo "User info for $CURRENTUSER:"
grep $CURRENTUSER /etc/passwd
Laten we alles samenvoegen (#! /bin/bash, header en body) en opslaan als testscript.sh. Maak vervolgens het bestand uitvoerbaar en voer het uit:
chmod a+x testscript.sh
./testscript.sh
De volgende afbeelding toont de uitvoer van het script:
Zoals je in de bovenstaande afbeelding kunt zien, stelt de ingebouwde echo Bash ons in staat om variabelen en vaste tekst tussen dubbele aanhalingstekens in te sluiten. De inhoud van de opgegeven variabele (n) zal dus samen met de tekst deel uitmaken van de uitvoer.
Totaal plaatje script compleet
Voorbeeld scripts
1. Hello world
Het programma "Hello world" is het allereerste programma dat een programmeur schrijft terwijl hij een nieuwe taal leert. Het is een programma dat de " Hello world" als output afdrukt. Je kunt dus als volgt een bestand helloword.sh maken met de editor (vim of nano):
$ nano helloworld.sh
Kopieer nu onderstaande regels naar 'helloworld.sh' en sla het op.
#! /bin/bash
echo "Hello world"
Nu kun je de opdracht uitvoeren:
$ bash helloworld.sh
Een andere methode is om het bestand eerst uitvoerbaar te maken:
$ chmod a+x helloworld.sh
En voer nu het bestand uit met behulp van de onderstaande opdracht.
$ ./helloworld.sh
2. Met behulp van Echo Command
Echo- opdracht is de meest voorkomende en meest gebruikte opdracht in Linux. Het wordt gebruikt om tekst af te drukken of uit te voeren in de bash. Het heeft veel opties die verschillende bewerkingen uitvoeren.
Syntaxis:
echo [options] [ARGUMENTS]
Hier zijn de opties:
-n
wordt gebruikt om een volgende nieuwe regel te onderdrukken
-e
wordt gebruikt om backslash-escape tekens te interpreteren
-E
wordt gebruikt om de interpretatie van de escape-tekens uit te schakelen, en het is de standaardoptie voor het echo-commando.
Maak een nieuw bestand echo.sh en voeg de onderstaande regels eraan toe.
#! /bin/bash
echo "Student Linux"
echo -n "Ik ben een Linux-gebruiker"
echo -e "\nGood \t Day \t All"
Hier is \n een escape-teken voor een nieuwe regel en \t is een escape-teken voor de horizontale tab.
3. Opmerkingen gebruiken
Opmerkingen zijn opmerkingen van een programmeur over het doel van de code of logica. Het is een goede gewoonte om opmerkingen toe te voegen, zodat iedereen in de toekomst code kan begrijpen door alleen opmerkingen te lezen. Opmerkingen maken deel uit van de code, maar worden genegeerd door de compiler. In het bash-script wordt elke regel die begint met # als commentaar beschouwd. Bijvoorbeeld:
#! /bin/bash
# dit is een commentaar
echo "Commentaarvoorbeeld"
Hier is '# dit is een opmerking' een opmerking, en wanneer we deze scriptcompiler uitvoeren, negeert deze de regel.
Opmerkingen kunnen zijn:
- Enkele regel commentaar
- Meerdere regels commentaar
We gebruiken '#' voor commentaar van één regel en: 'inhoud' voor commentaar met meerdere regels. Controleer het onderstaande commando voor zowel enkele als talrijke opmerkingen in een bash-script.
#! /bin/bash
: '
Dit script berekent de
som van 2 en 8.
'
((som=2+8))
# resultaat is een echo met som
echo "som is $som"
4. Variabelen gebruiken
Variabelen zijn benoemde symbolen die worden gebruikt om waarden tijdelijk op te slaan. Het kan een tekenreeks of numerieke waarde zijn die we op elke plaats in het script kunnen gebruiken. Je kunt variabelen maken en er waarden aan toewijzen. Variabelenamen moeten beschrijvend zijn, zodat je het doel kunt begrijpen waarmee je die variabele hebt gemaakt.
We hebben drie soorten variabelen in bash-scripts:
1. Speciale variabelen:
De volgende zijn de andere unieke vooraf ingestelde variabelen:
- $#: aantal opdrachtregelparameters dat aan het script is doorgegeven.
- $@: Alle parameters die naar het script zijn verzonden.
- $?: De eindstatus van het laatste uit te voeren proces.
- $$: de proces-ID van het huidige script.
- $USER: De gebruiker die het script uitvoert.
- $HOSTNAME: De hostnaam van de machine die het script uitvoert.
- $SECONDS: het aantal seconden dat het script is uitgevoerd.
- $RANDOM: Retourneert een willekeurig getal.
- $LINENO: Geeft het huidige regelnummer van het script terug.
2. Omgevingsvariabelen:
Gebruik de volgende opdracht om de actieve omgevingsvariabelen in je Bash-sessie te zien:
env | less
:q
ga je uit env.
3. Door de gebruiker gedefinieerde variabelen:
Door de gebruiker gedefinieerde variabelen zijn variabelen die door ons in ons script worden ingesteld. We hebben bijvoorbeeld de variabele 'jaar' om het huidige jaar op te slaan, zoals hieronder.
jaar=2020
En we kunnen later gebruiken
echo $jaar
je kunt zien dat we met $
naar de waarde verwezen.
Dus maak nu een bestand variables.sh en voeg de onderstaande regels erin toe.
#! /bin/bash
website=www.noorderpoort.nl
year=2021
# Gebruikersnaam ophalen van speciale variabelen
name=$USER
echo "Welkom op $website"
echo -e "Hallo $name \n"
echo -e "Jaar = $year \n"
echo "Wordt uitgevoerd op $HOSTNAME"
5. Gebruikersinvoer krijgen
Het verkrijgen van gebruikersinvoer is cruciaal voor het interactief maken van een script, dus voor dit doel gebruiken we in bash-script het 'read'-commando.
#! /bin/bash
echo "Wat is je leeftijd?"
read leeftijd
echo "Je leeftijd is $leeftijd"
6. Opdrachtargumenten gebruiken
We kunnen ook gebruikersinvoer lezen van opdrachtargumenten, net als elke andere programmeertaal. We kunnen deze argumenten vervolgens in onze scripts gebruiken als $1, $2, enzovoort, afhankelijk van het aantal argumenten dat we hebben opgegeven. Maak een bestand 'arguments.sh' en kopieer de onderstaande regels erin.
#! /bin/bash
echo "Totaal aantal argumenten: $#"
echo "Gebruikersnaam: $1"
echo "Leeftijd: $2"
echo "Volledige naam: $3"
Voer nu het scriptbestand 'arguments.sh' uit met drie extra parameters achter de naam.
bash arguments.sh patrick 29 'Patrick Linux'
7. Lussen gebruiken
Loops worden gebruikt in elke programmeertaal waarbij je dezelfde code herhaaldelijk moet uitvoeren. Er zijn twee soorten loops in bash-script while en for loops.
Herhalingslus (while)
Het wordt gebruikt wanneer je de coderegel een onbekend aantal keren moet herhalen totdat deze aan bepaalde voorwaarden voldoet. Hier is hoe het wordt gevormd:
#! /bin/bash
while [CONDITION]
do
[COMMANDS]
done
De voorwaarde wordt geëvalueerd voordat de opdrachten bij elke iteratie worden uitgevoerd, en deze wordt uitgevoerd totdat de voorwaarde naar false evalueert en de lus wordt beëindigd.
#! /bin/bash
i=0
while [ $i -le 4 ]
do
echo Number: $i
((i++))
done
For loop
De for
lus herhaalt zich over een lijst met items en voert de opgegeven reeks opdrachten uit. De Bash- for
lus heeft de volgende vorm:
#! /bin/bash
for item in [LIST]
do
[COMMANDS]
done
In het onderstaande voorbeeld zal de lus elk item herhalen en een tabel met variabele i genereren.
#! /bin/bash
i=2
for (( counter=1; counter<=10; counter++ ))
do
((result= $i * $counter))
echo "$i x $counter = $result"
done
8. Voorwaardelijke verklaringen gebruiken
Voorwaardelijke verklaringen zijn een van de fundamentele concepten van elke programmeertaal. Je neemt beslissingen op basis van bepaalde voorwaarden die zijn vervuld. In het bash-script hebben we voorwaardelijke blokken.
als verklaring (if)
In een bash-script, als de conditie een bepaalde waarde heeft, laten we eens kijken naar de basisconditie.
if Condition
then
STATEMENTS
fi
Je kunt zien of statements beginnen met het evalueren van de conditie en Run-statements tussen 'then' en 'fi', op voorwaarde dat de “if” -voorwaarde resulteert in True, anders wordt de instructie genegeerd.
#! /bin/bash
echo -n "Enter a number: "
read VAR
if [[ $VAR -gt 10 ]]
then
echo "The variable is greater than 10."
fi
In het bovenstaande voorbeeld wordt de gebruiker gevraagd een getal in te voeren, en als het getal meer is dan 10, zie je de uitvoer 'De variabele is groter dan 10.', anders zie je niets.
if else-verklaring
Nu gaan we ook een “if else” -blok toevoegen, dat wordt uitgevoerd als de voorwaarde onwaar is.
if Condition
then
STATEMENTS1
else
STATEMENTS2
fi
Dus we zullen het bovenstaande voorbeeld aanpassen.
#! /bin/bash
echo -n "Enter a number: "
read VAR
if [[ $VAR -gt 10 ]]
then
echo "The variable is greater than 10."
else
echo "The variable is equal or less than 10."
fi
Als je de code uitvoert en een getal invoert, zal het script een tekst afdrukken op basis van of het getal groter of kleiner/gelijk is aan 10.
if elif statement
Bash heeft ook een gelijkwaardige syntaxis voor 'else if'.
if Condition1
then
STATEMENTS1
elif Condition2
then
STATEMENTS2
else
STATEMENTS3
fi
Dus na het aanpassen van het bovenstaande voorbeeld:
#! /bin/bash
echo -n "Enter a number: "
read VAR
if [[ $VAR -gt 10 ]]
then
echo "The variable is greater than 10."
elif [[ $VAR -eq 10 ]]
then
echo "The variable is equal to 10."
else
echo "The variable is less than 10."
fi
9. Functies gebruiken
Net als andere programmeertalen heeft het bash-script ook het concept van functies. Hiermee kan de gebruiker een aangepast codeblok schrijven dat steeds opnieuw moet worden gebruikt.
Syntaxis:
function FunctionName ()
{
statements
}
Nu zullen we een functie 'som' maken die invoernummers van de gebruiker zal aannemen en de som van deze nummers als uitvoer zal tonen.
#! /bin/bash
function Sum()
{
echo -n "Enter First Number: "
read a
echo -n "Enter Second Number: "
read b
echo "Sum is: $(( a+b ))"
}
Sum
10. Tekenreekslengte weergeven
Het verwerken van strings is een essentieel onderdeel van bash-scripting. Bash-script heeft een eenvoudige manier om de lengte van een stringvariabele te krijgen. In het voorbeeld laten we je zien hoe je de lengte van een string in bash-script kunt krijgen.
#! /bin/bash
Str="Welcome to noorderpoort.nl"
echo "Length is: ${#Str}"
11. Strings aaneenschakelen
Bash-script biedt een moeiteloze manier om string bewerkingen af te handelen, zoals het samenvoegen van meerdere strings tot een enkele string. In het voorbeeld laten we je zien hoe je dat doet.
#! /bin/bash
string1="noorder"
string2="poort.nl"
string=$string1$string2
echo "$string is a great website."
12. Zoek en vervang tekenreeks
Bash-script heeft een handige en gemakkelijke manier om de tekst binnen een string te vinden en te vervangen. Het kan op twee manieren worden gebruikt:
${string/pattern/replacement}
Dit vervangt alleen de eerste overeenkomst binnen de opgegeven tekenreeks. Om alle overeenkomsten te vervangen, zullen we deze gebruiken zoals hieronder weergegeven:
${string//pattern/replacement}
In dit voorbeeld zullen we beide opties gebruiken om je het verschil in output te laten zien:
#! /bin/bash
Str="Path of the bash is /bin/bash"
# Finding and Replacing First match only
echo ${filename/bash/sh}
# Finding and Replacing all matches
echo ${filename//bash/sh}
13. Directory's aanmaken
Het volgende voorbeeld laat zien hoe je een directory kunt maken vanuit een shellscript. Het script krijgt de directorynaam van de gebruiker en controleert of deze al bestaat of niet. Als het bestaat, zou je een bericht "Directory Exists" moeten zien; anders wordt er een map aangemaakt.
#! /bin/bash
echo -n "Enter directory name ->"
read dir
if [ -d "$dir" ]
then
echo "Directory exists"
else
`mkdir $dir`
echo "Directory created"
fi
14. Bestanden lezen
Met Bash kun je bestanden heel effectief lezen. Het onderstaande voorbeeld laat zien hoe je een bestand kunt lezen met shellscripts. Maak een bestand met de naam 'bedrijven.txt' met de volgende inhoud.
Google
Amazon
Microsoft
Macdonald
KFC
Apple
Dit script leest het bovenstaande bestand en geeft de uitvoer weer.
#! /bin/bash
file='bedrijven.txt'
while read line; do
echo $line
done < $file
15. Bestanden verwijderen
Met behulp van een bash-script kun je ook een bestand verwijderen. In het voorbeeld wordt de gebruiker gevraagd om de bestandsnaam als invoer op te geven en deze te verwijderen als deze bestaat. Het gebruikt de Linux rm-opdracht voor het verwijderen hier.
#! /bin/bash
echo -n "Enter filename ->"
read name
rm -i $name
echo "File Deleted"
16. Serverstatistieken weergeven
Dit voorbeeld toont je een snelle serverstatistieken. Als systeembeheerder helpt dit bash-script je om belangrijke details te krijgen, zoals uptime, laatste logins, schijf- en geheugengebruik voor een Linux-machine.
#! /bin/bash
date
echo "uptime:"
uptime
echo "Currently connected:"
w
echo "--------------------"
echo "Last logins:"
last -a | head -3
echo "--------------------"
echo "Disk and memory usage:"
df -h | xargs | awk '{print "Free/total disk: " $11 " / " $9}'
free -m | xargs | awk '{print "Free/total memory: " $17 " / " $8 " MB"}'y
echo "--------------------"
Je moet het script uitvoeren als rootgebruiker.
17. System Maintenance
Dit kleine Linux shell-script upgradet en schoont het systeem automatisch op in plaats van het handmatig te doen.
#! /bin/bash
echo -e "\n$(date "+%d-%m-%Y --- %T") --- Starting work\n"
apt-get update
apt-get -y upgrade
apt-get -y autoremove
apt-get autoclean
echo -e "\n$(date "+%T") \t Script Terminated"
Je moet dit script uitvoeren als rootgebruiker.
Laatste script alleen uitvoeren als je ook echt de update/upgrade wilt uitvoeren. Bedenk goed, dit kost tijd, de services gaan offline!
Wij hopen dat bovenstaande voorbeeld scripts een goed beeld hebben gegeven over bash-scripting en vooral mee aan de slag gaan en proberen om reperterende handelingen te scripten.
YouTube video
Onderstaande video laat zien hoe bash-scripts gebruikt kunnen worden.
Opdracht bash-scripting
De opdracht voor bash-scripts staat op ItsLearning en neemt je mee om je eigen scripts te maken.
Les 17: Netwerken & Firewall
Tijdens deze les gaan we kijken naar het instellen van netwerk configuraties op de Ubuntu-server. Hiervoor ben je de Ubuntu-desktop nodig en de Ubuntu server. Daarna gaan we kijken naar de instellingen van de firewall UFW.
Statische IP-adressen instellen
Standaard staat op Ubuntu de netwerkregels op DHCP. Dit betekend elke keer dat de server aan gaat hij gaat vragen welk IP-adres hij mag gebruiken om het netwerk op te komen. Dit is voor servers niet handig, deze moeten altijd hetzelfde statische IP-adres hebben om verbinding mee te kunnen maken. Anders zijn ze onbereikbaar voor gebruikers die een dienst van deze server nodig zijn.
Volg deze stappen om verbinding te maken met het netwerk met een statisch IP-adres:
Stap 1: Zoek in /etc/netplan/ naar het configuratie bestand voor de netwerk-kaart.
Stap 2: Open /etc/netplan/00-installer-config.yaml en zoek de volgende regels:
Zoals op deze afbeelding te zien is heeft onze netwerkkaart de naam ens33 en staat dhcp4 op true. Dit betekend dat de netwerkkaart een IP-adres krijgt van de DHCP-server op het netwerk. Dit gaan wij aanpassen.
Pas op! Dit bestand heeft een .yaml formaat en dat moet je ook blijven aanhouden!
Stap 3: Wijzig de voorgaande regels om een IP-adres, subnetmasker en standaardgateway toe te voegen (vervang deze voorbeelden door de waarden binnen je eigen netwerk):
Om de configuratie actief te maken moeten we bij netplan aangeven dat de configuratie doorgevoerd moet worden, dit doen we met de opdracht netplan apply.
Dit kunnen we controleren met een ping opdracht.
Hostname aanpassen
Vaak is het handig om de hostname van de server aan te passen, dit houd eht leesbaar/werkbaar en overzichtelijk.
Wat is je hostnaam?
Je moet de opdracht hostname of hostnamectl gebruiken
hostname
Hostname aanpassen
Het wijzigen van de hostnaam is vrij eenvoudig. Om dit te doen, kunnen we het hostnamectl commando gebruiken als root of met sudo.
sudo hostnamectl set-hostname {gewenste hostname}
Open het bestand /etc/hosts en verander de oude hostnaam in de nieuwe.
sudo nano /etc/hosts
Controleer de wijziging.
hostname
Exit je SSH verbinding en verbind opnieuw en zie dat de verandering is doorgevoerd.
netwerkhulpmiddelen
We kunnen verschillende netwerktools gebruiken om taken uit te voeren, zoals het verkrijgen van informatie over andere systemen op je netwerk, toegang krijgen tot andere systemen en rechtstreeks communiceren met andere gebruikers. Netwerkinformatie kan worden verkregen met behulp van hulpprogramma's zoals ping, traceroute, host, dig, nslookup enz . Deze zijn handig voor kleinere netwerken en maken het mogelijk om rechtstreeks toegang te krijgen tot systemen op afstand om bestanden te kopiëren of de opdracht uit te voeren.
Ping:
Het ping-commando wordt gebruikt om te controleren of een systeem op afstand actief is of inactief is. In het kort wordt dit commando gebruikt om te detecteren of een systeem al dan niet op het netwerk is aangesloten.
Syntaxis:
ping www.google.com
Opmerking: in plaats van een domeinnaam te gebruiken, kun je ook een IP-adres gebruiken. Een ping- opdracht kan mislukken als ping- protocol wordt geweigerd door een netwerkfirewall.
host:
Deze opdracht wordt gebruikt om netwerkadresinformatie op te halen over een systeem op afstand dat met je netwerk is verbonden. Deze informatie bestaat meestal uit het IP-adres van het systeem, het domeinnaamadres en soms ook de mailserver.
Syntaxis:
host www.google.com
traceroute:
Dit commando wordt gebruikt om de route van computernetwerken te volgen. Je kunt volgen om de route te controleren waarmee je bent verbonden.
netstat:
Dit commando wordt gebruikt om de status van poorten te controleren of het open, gesloten, wachtende en gemaskeerde verbindingen zijn. Netwerkstatistiek (netstat) commando geeft verbindingsinformatie, routeringstabelinformatie etc. weer
Syntaxis:
$ netstat
Opmerking: Om routeringstabelinformatie weer te geven, gebruikt je ( netstat -r ).
tracepath:
tracepath voert een zeer vergelijkbare functie uit als die van het traceroute-commando. Het belangrijkste verschil tussen deze opdrachten is dat tracepath geen ingewikkelde opties vereist. Voor deze opdracht zijn geen root-rechten vereist.
Syntaxis:
tracepath www.google.com
dig:
dig (Domain Information Groper) query DNS-gerelateerde informatie zoals een record, cname, mxrecord enz. Dit commando wordt gebruikt om DNS-gerelateerde query's op te lossen.
Syntaxis:
dig www.google.com
hostname:
Deze opdracht wordt gebruikt om de hostnaam van je computer te zien. Je kunt de hostnaam permanent wijzigen in etc/sysconfig/network. Nadat je de hostnaam hebt gewijzigd, moet je de computer opnieuw opstarten.
Syntaxis:
hostname
route:
De route-opdracht wordt gebruikt om de routeringstabel weer te geven of te wijzigen. Gebruik ( -n ) om een gateway toe te voegen .
Syntaxis:
route -n
nslookup:
Je kunt de opdracht nslookup (opzoeken van naamserver) gebruiken om DNS-gerelateerde query's te achterhalen of om DNS-servers te testen en problemen op te lossen.
Syntaxis:
nslookup google.com
IP commando (oude ifconfig)
Je kunt IP-adressen, netwerkinterfaces en routeringsregels on-the-fly configureren met de Linux- ip
opdracht. We laten je zien hoe je deze moderne vervanging van de klassieker (en nu verouderde) kunt gebruiken ifconfig
.
Hoe het ip-commando werkt
Met de ip
opdracht kun je de manier aanpassen waarop een Linux-computer omgaat met IP-adressen, netwerkinterfacescontrollers (NIC's) en routeringsregels. De wijzigingen worden ook onmiddellijk van kracht - je hoeft niet opnieuw op te starten. De ip
opdracht kan veel meer dan we nu gaan behandelen.
De ip
opdracht heeft veel subopdrachten, die elk werken op een bepaald type object, zoals IP-adressen en routes. Voor elk van deze objecten zijn er weer vele opties. Het is deze rijkdom aan functionaliteit die de ip
opdracht de kracht geeft die je nodig hebt om wat delicate taken uit te voeren. Dit is geen bijlwerk - het vraagt om een set scalpels.
We kijken naar de volgende objecten:
- Address : IP-adressen en bereiken.
- Link : netwerkinterfaces, zoals bedrade verbindingen en wifi-adapters.
- Route : de regels die de routering beheren van verkeer dat
addresses
via interfaces ( links
) wordt verzonden .
IP gebruiken met adressen
Uiteraard moet je eerst de instellingen kennen waarmee je te maken hebt. Om te ontdekken welke IP-adressen je computer heeft, gebruik je de ip
opdracht bij het object address
. De standaardactie is show
, waarin de IP-adressen worden vermeld. Je kunt het ook weglaten show
en afkorten address
als "addr" of zelfs "a."
De volgende opdrachten zijn allemaal gelijkwaardig:
ip address show
ip addr show
ip addr
ip a
We zien twee IP-adressen, samen met veel andere informatie. IP-adressen zijn gekoppeld aan netwerkinterfacecontrollers (NIC's). De ip
opdracht probeert behulpzaam te zijn en biedt ook een heleboel informatie over de interface.
Het eerste IP-adres is het (interne) loopback-adres dat wordt gebruikt om binnen de computer te communiceren. De tweede is het daadwerkelijke (externe) IP-adres dat de computer heeft op het lokale netwerk (LAN).
Laten we alle informatie die we hebben ontvangen opsplitsen:
- lo : De naam van de netwerkinterface als een tekenreeks.
- <LOOPBACK, UP, LOWER_UP>: Dit is een loopback-interface. Het is
UP
, wat betekent dat het operationeel is. De fysieke netwerklaag (laag één) is ook actief.
- mtu 65536: De maximale transfereenheid. Dit is de grootte van de grootste hoeveelheid gegevens die deze interface kan verzenden.
- qdisc noqueue: A
qdisc
is een wachtrijmechanisme. Het plant de verzending van pakketten. Er zijn verschillende wachtrijtechnieken die disciplines worden genoemd. De noqueue
discipline betekent "direct verzenden, niet in de rij staan". Dit is de standaarddiscipline qdisc
voor virtuele apparaten, zoals het loopback-adres.
- state UNKNOWN: Dit kan zijn
DOWN
(de netwerkinterface is niet operationeel), UNKNOWN
(de netwerkinterface is operationeel maar er is niets aangesloten), of UP
(het netwerk is operationeel en er is een verbinding).
- group default: Interfaces kunnen logisch gegroepeerd worden. De standaardinstelling is om ze allemaal in een groep met de naam 'standaard' te plaatsen.
- qlen 1000: De maximale lengte van de transmissiewachtrij.
- link / loopback: Het MAC-adres ( Media Access Control ) van de interface.
- inet 127.0.0.1/8: Het IP-versie 4-adres. Het deel van het adres na de schuine streep (
/
) is Classless Inter-Domain Routing Notation (CIDR) dat het subnetmasker vertegenwoordigt.
- scope host: het IP-adresbereik. Dit IP-adres is alleen geldig binnen de computer (de "host").
- valid_lft: geldige levensduur. Voor een IP-adres van IP-versie 4 dat is toegewezen door Dynamic Host Configuration Protocol (DHCP), is dit de tijdsduur dat het IP-adres als geldig wordt beschouwd en in staat is om verbindingsverzoeken te doen en te accepteren.
- preferred_lft: Gewenste levensduur. Voor een IP-adres van IP-versie 4 dat is toegewezen door DHCP, is dit de hoeveelheid tijd dat het IP-adres zonder beperkingen kan worden gebruikt. Dit mag nooit groter zijn dan de
valid_lft
waarde.
- inet6 : Het IP versie 6-adres,
scope
, valid_lft
, en preferred_lft
.
De fysieke interface is interessanter, zoals we hieronder zullen laten zien:
- ens33: De naam van de netwerkinterface als een tekenreeks.
- <BROADCAST, MULTICAST, UP, LOWER_UP>: Deze interface ondersteunt broad- en multicasting , en de interface is
UP
(operationeel en verbonden). De hardwarelaag van het netwerk (laag één) is ook UP
.
- mtu 1500: De maximale overdrachtseenheid die deze interface ondersteunt.
- qdisc fq_codel: De planner gebruikt een discipline genaamd "Fair Queuing, Controlled Delay." Het is ontworpen om een eerlijk deel van de bandbreedte te bieden aan alle verkeersstromen die de wachtrij gebruiken.
- state UP: De interface is operationeel en aangesloten.
- group default: Deze interface bevindt zich in de "standaard" interfacegroep.
- qlen 1000: De maximale lengte van de transmissiewachtrij.
- link / ether: het MAC-adres van de interface.
- inet 192.168.182.128/24: Het IP-versie 4-adres. De "/24" vertelt ons dat er 24 aaneengesloten leidende bits zijn ingesteld op één in het subnetmasker. Dat zijn drie groepen van acht bits. Een acht-bits binair getal is gelijk aan 255; daarom is het subnetmasker 255.255.255.0.
- brd 192.168.182.255: Het broadcast-adres voor dit subnet.
- scope global: het IP-adres is overal op dit netwerk geldig.
- dynamisch: het IP-adres gaat verloren als de interface uitvalt.
- noprefixroute: Maak geen route in de routetabel wanneer dit IP-adres wordt toegevoegd. Iemand moet handmatig een route toevoegen als hij er een wil gebruiken met dit IP-adres. Evenzo, als dit IP-adres is verwijderd, zoek dan geen route om te verwijderen.
- enp2s1: De interface waaraan dit IP-adres is gekoppeld.
- valid_lft: geldige levensduur. De tijd waarop het IP-adres als geldig wordt beschouwd; 1089 seconden.
- preferred_lft: Gewenste levensduur. De tijd dat het IP-adres zal werken zonder enige beperking.
- inet6: Het IP-versie 6-adres,
scope
, valid_lft
, en preferred_lft
.
Alleen IPv4- of IPv6-adressen weergeven
Als je de uitvoer wilt beperken tot de IP-versie 4-adressen, kun je de -4
optie als volgt gebruiken:
ip -4 address
Als je de uitvoer wilt beperken tot de IP-versie 6-adressen, kunt je de -6
optie als volgt gebruiken:
ip -6 address
Informatie weergeven voor een enkele interface
Als je het IP-adres informatie wilt zien voor een enkele interface, kun je show
en dev
opties gebruiken, en de naam van de interface, zoals hieronder weergegeven:
ip addr show dev lo
ip addr show dev ens33
Je kunt ook de vlag -4
of gebruiken -6
om de uitvoer verder te verfijnen, zodat je alleen datgene ziet waarin je geïnteresseerd bent.
Als je de IP-versie 4-informatie met betrekking tot de adressen op de interface wilt zien ens33
, typ je de volgende opdracht:
ip -4 addr show dev ens33
Een IP-adres toevoegen
Je kunt de opties add
en dev
gebruiken om een IP-adres toe te voegen aan een interface. Je hoeft alleen maar de ip
opdracht te vertellen welk IP-adres je moet toevoegen en aan welke interface je het wilt toevoegen.
We gaan het IP-adres 192.168.182.150 toevoegen aan de ens33
interface. We moeten ook de CIDR-notatie voor het subnetmasker opgeven.
We typen het volgende:
sudo ip addr add 192.168.182.150/24 dev ens33
We typen het volgende om nog eens naar de IP-versie 4 IP-adressen op deze interface te kijken:
ip -4 addr show dev ens33
Het nieuwe IP-adres is aanwezig op deze netwerkinterface. We gaan op een andere computer (in dit voorbeeld Windows host) en gebruiken de volgende opdracht om te zien of we ping
het nieuwe IP-adres kunnen vinden:
ping 192.168.182.150
Een IP-adres verwijderen
Om een IP-adres te verwijderen, is het commando bijna hetzelfde als het commando om er een toe te voegen, behalve dat je het vervangt add
door del
, zoals hieronder getoond:
sudo ip address del 192.168.182.150/24 dev ens33
Als we het volgende typen om te controleren, zien we dat het nieuwe IP-adres is verwijderd:
ip -4 addr show dev ens33
IP gebruiken met netwerkinterfaces
Je gebruikt het link
object om netwerkinterfaces te inspecteren en ermee te werken. Typ de volgende opdracht om de interfaces te zien die op je computer zijn geïnstalleerd:
ip link show
Om een enkele netwerkinterface te zien, voeg je de naam ervan toe aan de opdracht, zoals hieronder wordt weergegeven:
ip link show ens33
Links starten en stoppen
Je kunt de set
optie gebruiken met up
of down
om een netwerkinterface-optie te stoppen of te starten. Je moet sudo
gebruiken, zoals hieronder weergegeven:
sudo ip link set ens33 down
De staat van de netwerkinterface is DOWN
. We kunnen de up
optie gebruiken om een netwerkinterface opnieuw te starten, zoals hieronder weergegeven:
sudo ip link set ens33 up
UFW (Firewall)
Ubuntu heeft zijn eigen firewall, bekend als ufw - een afkorting van "uncomplicated firewall". Ufw is een gemakkelijker te gebruiken frontend voor de standaard Linux iptables-opdrachten. Je kunt ufw zelfs bedienen vanuit een grafische interface.
De firewall van Ubuntu is ontworpen als een gemakkelijke manier om elementaire firewall-taken uit te voeren zonder iptables te leren. Het biedt niet alle kracht van de standaard iptables-opdrachten, maar het is minder complex.
De firewall is standaard uitgeschakeld. Om de firewall in te schakelen, voer je de volgende opdracht uit vanaf een terminal:
sudo ufw enable
Je hoeft de firewall niet per se eerst in te schakelen. Je kunt regels toevoegen terwijl de firewall offline is, en deze vervolgens inschakelen nadat je klaar bent met configureren.
Werken met regels
Stel dat u SSH-verkeer op poort 22 wilt toestaan. Om dit te doen, kunt u een van de volgende opdrachten uitvoeren:
sudo ufw allow 22 (Staat zowel TCP- als UDP-verkeer toe - niet ideaal als UDP niet nodig is.)
sudo ufw allow 22/tcp (staat alleen TCP-verkeer op deze poort toe.)
sudo ufw allow ssh (controleert het bestand /etc/services op je systeem voor de poort die SSH vereist en staat dit toe. Veel veelgebruikte services worden in dit bestand vermeld.)
Ufw gaat ervan uit dat je de regel voor inkomend verkeer wilt instellen, maar je kunt ook een richting opgeven. Om bijvoorbeeld uitgaand SSH-verkeer te blokkeren, voer je de volgende opdracht uit:
sudo ufw reject out ssh
Je kunt de regels die je hebt gemaakt bekijken met de volgende opdracht:
sudo ufw status
Om een regel te verwijderen, voeg je het woord delete toe vóór de regel. Om bijvoorbeeld te stoppen met het weigeren van uitgaand ssh-verkeer, voer je de volgende opdracht uit:
sudo ufw delete reject out ssh
De syntaxis van ufw maakt redelijk complexe regels mogelijk. Deze regel weigert bijvoorbeeld TCP-verkeer van IP 12.34.56.78 naar poort 22 op het lokale systeem:
sudo ufw deny proto tcp from 12.34.56.78 to any port 22
Voer de volgende opdracht uit om de firewall terug te zetten naar de standaardstatus:
sudo ufw reset
Toepassingsprofielen
Sommige applicaties die open poorten vereisen, worden geleverd met ufw-profielen om dit nog gemakkelijker te maken. Voer de volgende opdracht uit om de toepassingsprofielen te zien die beschikbaar zijn op uw lokale systeem:
sudo ufw app-list
Bekijk informatie over een profiel en de bijbehorende regels met de volgende opdracht:
sudo ufw app info (Naam app)
Sta een applicatieprofiel toe met de opdracht allow:
sudo ufw allow (Naam app)
Meer informatie
Logboekregistratie is standaard uitgeschakeld, maar je kunt logboekregistratie ook inschakelen om firewallberichten naar het systeemlogboek af te drukken:
sudo ufw logging on
Voor meer informatie, voer het man ufw commando uit om de man-pagina van ufw te lezen.
YouTube video
Onderstaande video laat zien hoe netwerken werken binnen Linux.
Opdracht Netwerk&Firewall
De opdracht voor deze les staat op ItsLearning. Deze maken en weer inleveren.
Les 18: Praktijkopdracht module Linux basis
De praktijkopdracht is als afsluiting van de module Linux-basis. Deze opdracht gaat alle onderwerpen nog een keer bijlangs en gebruik de opgedane kennis om deze te maken. Uiteraard mag je Wiki gebruiken als naslagwerk.
Opdracht staat op ItsLearning, succes met het maken van deze opdracht en inleveren als je hem gereed hebt.
Les 19: Toets Linux
Les 20: Herkansing/inhaal Linux 02