previous.png
Cursus Linux       Basis       Basis vaardigheden   
gnu.png


up.png Basis Vaardigheden down.png

Wanneer men een nieuw besturings systeem moet leren kennen kan dat een behoorlijk indrukwekkende ervaring zijn. Alles is nieuw en het is lastig als leek te bepalen wat de hoofdzaken en wat de bijzaken zijn. Dit hoofdstuk heeft de bedoeling om de student zo snel als mogelijk op weg te helpen, zonder direct al te veel details te moeten zien. Veel onderwerpen in dit hoofdstuk worden alleen maar op een praktische wijze behandeld zonder direct uit te leggen wat de diepere betekenis ervan is. Een gevolg is dat het onderwerp in kwestie meer dan 1 keer behandeld wordt, namelijk, nu om het te kunnen gebruiken en later in detail. LINUX biedt een hele reeks prachtige grafische interfaces , toch wordt er niet of zo weinig mogelijk gebruik van gemaakt. Dit is omdat LINUX in de bedrijfs wereld bijna altijd als server is ingezet (een server heeft geen grafische interface nodig, heeft meestal zelfs geen scherm). Daarom wordt in dit hoofdstuk en verder in de gehele cursus de nadruk gelegd op het werken met de opdracht regel.

Wat leren we in dit hoofdstuk:

up.png 1 Opstarten : lilo en grub down.png

Wanneer een LINUX computer wordt aangezet moet hij erachter komen welk besturings systeem geladen moet worden. Voor dit doel wordt gebruik gemaakt van een bootloader die in het MBR van de computer genesteld is. Deze bootloader verwijst op zijn beurt naar de locatie waar de kernel staat die gestart moet worden.

LINUX gebruikt voor dit doel de bootloader 'lilo'. Tegenwoordig op de meer recente versies van LINUX wordt vooral 'grub' (Great Unified Bootloader) gebruikt. Beiden worden later meer in detail behandeld.
Zowel 'lilo' als 'grub' voorzien het volgende :

Naast 'lilo' en 'grub' bestaat er ook nog zoiets als 'loadlin'. Deze bootloader wordt gebruikt om een LINUX op te starten die geïnstalleerd bovenop een DOS system. De LINUX in kwestie is hier dan een DOS bestand. Aangezien er nog weinig DOS systemen zijn, zal deze wijze van werken niet veel meer toegepast worden We gaan er dan ook niet dieper op in.

Tijdens het opstarten van LINUX worden er een hele reeks boodschappen op het scherm afgebeeld (sommige systemen laten slechts een samenvatting van deze boodschappen zien). Deze boodschappen informeren over het vorderen van het linux boot process, meer in detail, het initialiseren van drivers, het detecteren van hardware, het installeren van services, enzo... Met behulp van de opdracht dmesg kan men deze boodschappen bekijken nadat het systeem opgestart is.

up.png 2 Inloggen down.png

LINUX is ontworpen als systeem waar met meerdere gebruikers tegelijk op kan gewerkt worden. Vaak zal een aantal van deze gebruikers via ssh over het netwerk inloggen, bovendien is het mogelijk om meerdere sessies tegelijkertijd op 1 pc of computer actief te hebben. Elke gebruiker heeft van de systeem beheerder een set restricties gekregen, die ervoor zorgen dat iedere gebruiker in zijn eigen werkruimte op het systeem kan werken. D.w.z. gebruiker A ziet niet de bestanden van gebruiker B.

Om deze reden dient een gebruiker zichzelf te melden op het systeem. Of met andere woorden in te loggen bij middel van zijn login-naam en bijbehorend wachtwoord. Het systeem zal hierom vragen direct nadat het is opgestart. Dit kan zowel vanaf een grafische prompt als vanaf een command line prompt gebeuren. Dit kan ook gebeuren vanaf een command line met behulp van de opdracht 'login'. In vroegere tijden werd ingelogd via een zogenaamde domme terminal over een seriële poort van de pc. Zelfs nadat men is ingelogd in de grafische omgeving kan men via een terminal emulator programma, op de command line opnieuw inloggen met de opdracht login of su.
Samengevat kan men inloggen over:

Zodra men de huidige sessie beëindigd (uitloggen) zal LINUX terugkeren naar de inlog prompt. Nadat men successvol is ingelogd kan men gebruik maken van de gebruikers account waarmee men is ingelogd. Een account omvat alle bestanden, rechten, en resources die aan een bepaalde gebruiker zijn toegekend (door de systeem administrator).
Op een nieuw ingericht systeem bestaan meestal slechts een beperkt aantal gebruikers.

  1. systeem administrator, de gebruikers account aangemaakt tijdens de installatie procedure
  2. systeem accounts, meerdere systeem accounts verbonden aan systeem services vb.: lp (line printer), man (manual pages) enzo ...
  3. root account , er is steeds 1 root account met alle rechten
  4. service accounts, meerdere accounts verbonden aan externe services vb.: ftp (file access)

De HOME directory is één van de zaken die gekoppeld zijn aan een account. Elke gebruiker heeft een home directory. Meestal is dit een sub-directory van de systeem directory /home, waarbij de naam van de home directory ook de naam van de account is. De gebruiker heeft op deze home directory alle rechten. De systeem accounts hebben meestal geen home directory, of de home directory bevindt zich op een andere plaats. Normaal zal de gebruiker zijn home directory gebruiken voor het opslaan van zijn bestanden, instellingen.

Linux is zoals reeds aangegeven een systeem waarop met meerdere gebruikers tegelijkertijd gewerkt kan worden. Vroeger gebeurde dit doordat iedere gebruiker op een terminal werkte die op een of andere wijze met het centrale UNIX systeem verbonden was. Dit betekend dat op een computer meerdere beeldschermen met bijbehorend toetsenbord verbonden waren. Een dergelijke beeldscherm/toetsenbord combinatie werd domme terminal genoemd. Daarnaast was er ook een terminal direct met de computer verbonden, deze werd dan gebruikt om de computer te onderhouden en te beheren. Domme terminals worden op LINUX systemen niet meer gebruikt. (alhoewel dat nog altijd mogelijk is).

up.png 2.1 Virtuele consoles (ctrl-alt-F1, F2, ...) down.png

Wel bestaat de mogelijkheid om meerdere sessies tegelijkertijd open te houden, in de praktijk via het netwerk, of via virtuele consoles. Om een virtuele console te openen, gebruikt men de toets-combinaties ctrl-alt-F1 tot en met F6, waarbij iedere F toets een virtuele console ter beschikking stelt. Met ctrl-alt-F7 keert men terug naar de grafische omgeving. Op iedere virtuele console kan men inloggen met de eigen account, maar men kan ook inloggen met een andere account. Of in andere woorden, er kunnen meerdere gebruikers tegelijkertijd ingelogd zijn op een LINUX systeem.

up.png 3 Werken met LINUX opdrachten down.png

De shell is het programma dat ervoor zorgt dat opdrachten door de computer begrepen en uitgevoerd worden.
Alle LINUX opdrachten hebben een paar eigenschappen gemeen.
Bekijk de details van de ls opdracht.

eigenschap commentaar voorbeeld
naam een opdracht heeft een naam ls
hoofdletter gevoelig de naam van een opdracht is meestal in kleine letters ls
argumenten een opdracht heeft nul of meerdere argumenten gescheiden door 'white space', opties of parameters ls -a alles
parameters een opdracht heeft nul of meerdere parameters, de gegevens ls alles
opties een opdracht heeft nul of meerdere opties ls -a alles
default opties De opties van een opdracht hebben meestal een standaard waarde  
optie letter De optie van een opdracht kan dikwijls via 1 letter worden voorgesteld ls -l
optie letters Meerdere optie letters kunnen gecombineerd worden tot 1 optie ls -al == ls -a -l
geen optie teken Een opdracht optie wordt meestal begonnen met een '-' teken
voor sommige opdrachten is dit niet nodig
ps aux

up.png
Later in de individuele opdrachten zullen telkens de mogelijke opties en parameters besproken worden.

Wat moet je nu onthouden:

Om een opdracht uit te voeren typ je de naam van de opdracht op de command line. Vervolgens tik je een spatie en daarna de opties. Soms vraagt een opdracht dat opties aangeduid worden door een '-'. Na de opties tik je de parameters, iedere parameter gescheiden met een spatie. Om de opdracht naar de shell te sturen, en dus uit te voeren gebruik je de enter toets. Is de totale lengte van de opdracht en de opties en de parameters langer dan 1 lijn dan kan je de lijn verlengen met het continue teken, namelijk '\'.

up.png 4 Bekijken en manoeuvreren in de directory structuur down.png

LINUX is georganiseerd zoals een boomstructuur met als hoogste (laagste) punt de 'root' directory, voorgesteld door '/'. Een volledig of absoluut path weergeven begint altijd met een '/'. Voorbeeld , het absolute path naar de home directory van de gebruiker : /home/ubuntu (als de gebruiker ubuntu is)

remark.png Er is dus zowel een root directory als een root user, ze hebben niets met elkaar te maken.
De HOME directory van de root user is '/root'.

Standaard directories voor alle linux distributies, zijn onder andere usr, bin, sbin de meeste ervan staan direct onder de root directory. Hierover later meer.

Opdrachten die rechtstreeks met de directory te maken hebben
Opdracht betekenis
ls Met 'ls' bekijkt men de inhoud van een directory
cd Met 'cd' wijzigd men de huidige directory
pwd Met 'pwd' wordt de huidige directory naam afgebeeld

up.png 4.1 De huidige directory down.png

Iedere sessie die op een Linux systeem draait maakt gebruik van een huidige directory. Dit kunnen zowel een ingelogde gebruiker zijn, een grafisch programma, een process, of een service. De huidige directory is de directory die gebruikt wordt voor iedere opdracht zolang er geen speciaal directory path wordt aangeduid. De huidige directory kan men zien met behulp van de opdracht 'pwd'. Natuurlijk moet men in staat zijn een opdracht in te geven, bij services, processen en grafische programma's kan dit bijna nooit op een directe wijze omdat men niet beschikt over de command line.

remark.png Een hacker zal een linux process (bv. een web server) trachten te laten crashen met als enig doel om een (de onderliggende) command line te bekomen, vanuit deze command line kan de hacker het systeem verder compromitteren.

up.png 4.2 De opdracht 'ls' down.png

Met de opdracht 'ls' verkrijgt men een lijst van de inhoud van een directory. Deze opdracht maakt gebruikt van speciale tekens om bepaalde effecten te verkrijgen. Deze tekens zijn algemeen (d.w.z. ze worden ook nog door andere opdrachten dan 'ls' gebruikt).
De volgende tabel toont een aantal van deze tekens :

Tekens met een speciale betekenis (wildcards)
teken betekenis voorbeeld
* De asterisk wordt gebruikt als joker teken voor een aantal willekeurige tekens
  • ls * , toon de bestanden in de huidige directory
  • ls *.* , toon alle bestanden waar een '.' in de naam voorkomt
  • ls a*, toon de bestanden waar een a in de naam voorkomt
? het vraagteken wordt gebruikt als joker teken voor 1 teken ls t?st, toont test, tast, tost, tust, enzo...
[] een serie tekens die één voor één getest worden ls wor[dt], toont word en wort
~ refereert naar de home directory ls ~ , toon de bestanden in de home directory
- staat voor de vorige directory ls -, toon de bestanden in de vorige directory

up.png 4.3 De opdracht 'cd' down.png

Met behulp van de 'cd' opdracht selecteert men een nieuwe huidige directory. De cd opdracht kent hiervoor verschillende vormen.

opdracht betekenis
cd /home Selecteer de /home directory als huidige directory (absoluut path)
cd Desktop Selecteer de Desktop directory als huidige directory (relative path)
cd - Selecteer de vorige directory als de huidige directory
cd .. selecteer de parent directory als de huidige directory
cd 'cd' zonder argumenten, selecteer de gebruikers home-directory als de huidige directory

up.png 5 Het verschil tussen een relatief en een absoluut path down.png

Bij het aanduiden van een directory of een bestand duidt men altijd een path aan. Zelfs als men niet bewust een path aangeeft zal de shell zelf een path samenstellen (in dit geval een relatief path).

up.png 5.1 Een relatief path down.png

Een relatief path wordt berekend vanaf de huidige directory.
Bijvoorbeeld het bestand Desktop is een directory en bevindt zich in de 'home' directory van de gebruiker.
Dus het relatieve path van deze directory is gewoon Desktop, tenminste wanneer de pwd de home directory van de gebruiker is.

up.png 5.1 Een absoluut path down.png

Een absoluut path begint altijd met de aanduiding van de root directory '/'.
Vervolgens geeft men het volledige path naar het bestand in kwestie aan.
Bijvoorbeeld /home/ubuntu/Desktop is het absolute path voor het Desktop bestand, een directory die in iedere home directory beschikbaar is.
(in linux is een directory een bestand zoals ieder ander bestand).

up.png 6 Bekijken van inhoud van bestanden en output van opdrachten down.png

Deze paragraaf bevat een aantal opdrachten die alle te maken hebben met het bekijken van output. Om de inhoud van een bestand te zien moet men het bestand openen en de inhoud ervan als output behandelen.
De volgende tabel bevat een aantal opdrachten waarmee men de inhoud van een bestand kan bekijken.
Ieder van deze opdrachten leest het bestand en de inhoud ervan wordt afgebeeld op het output device, in dit geval dus het scherm.

opdracht beschrijving
less Het programma less wordt gebruikt om output scherm voor scherm te bekijken
cat Toont de inhoud van een bestand op het scherm, waarna men weer op de prompt terechtkomt
tac Toont de inhoud van een bestand op het scherm in omgekeerde volgorde, waarna men weer op de prompt terechtkomt
head Toont de eerste 10 regels van een bestand
tail Toont de laatste 10 regels van een bestand
more Dit is de voorganger van less. Toont de inhoud van een bestand scherm per scherm

up.png 7 Zoeken naar bestanden en tekst down.png

Er zijn drie opdrachten die kunnen worden gebruikt in het zoeken naar bestanden.

find Opzoeken van bestanden volgens gegeven criteria De opties van find maken het mogelijk een bestand terug te vinden op basis van de bestandsnaam. Maar men kan ook andere criteria gebruiken zoals grootte, aanmaak datum, en eigenaar.
grep zoeken naar bestanden die een gegeven tekst bevatten zgrep wordt gebruikt om te zoeken in gecomprimeerde bestanden
rgrep om te zoeken in een directory structuur
locate gebruikt een database om snel een bestand te vinden
de database moet wel speciaal aangemaakt zijn
met behulp van updatedb wordt de database aangemaakt
opletten : niet alle distributies installeren deze tool
whereis Gebruikt het zoekpad om een opdracht en de bijbehorende man pages terug te vinden zie later voor de behandeling van het zoekpad

up.png 8 Beheren van bestanden down.png

In deze paragraaf besteden we kort aandacht aan opdrachten om bestanden te beheren.

cp Met behulp van de copy opdracht 'cp' kan men bestanden copieren
mv Met behulp van de move opdracht 'mv' kan men bestanden verplaatsen
rm Met behulp van de remove opdracht 'rm' kan men bestanden verwijderen
mkdir Maak een directory
rmdir Verwijder een lege directory

up.png 9 Redirection en Piping down.png

Kenmerkend voor LINUX opdrachten is dat ze aan elkaar kunnen gekoppeld worden. Zo kan men de output van de ene opdracht met de input van de volgende opdracht verbinden. De twee technieken die hiervoor gebruikt worden zijn redirection en piping. Met piping wordt bedoeld dat de input van een opdracht afkomstig is van een andere opdracht. Met redirection wordt bedoeld dat de output van een opdracht naar een niet standaard plaats gestuurd wordt. Door de beide technieken op de juiste wijze te gebruiken, kunnen opdrachten en bestanden aan elkaar gekoppeld worden en kan men complexe opdrachten in één opdracht lijn uitvoeren.

up.png 9.1 De standaard kanalen down.png

Wanneer een opdracht actief is gebruikt deze de 3 zogenaamde standaard kanalen. Deze kanalen worden respectievelijk stdin, sdtout, en stderr genoemd. Deze kanalen worden dynamisch toegekend op het moment dat de opdracht actief wordt.
Zowel piping als redirection maken gebruik van de standaard kanalen om hun werking te verzekeren.

up.png 9.2 Piping down.png

Piping wordt gebruikt om de output van een opdracht als input van een volgende opdracht te schakelen. Het is bv handig wanneer de output meer dan één scherm is om met behulp van piping de output naar de opdracht less. 'less' zorgt ervoor dat de output scherm voor scherm tevoorschijn komt.

Voorbeeld 1: geef de inhoud van de directory /usr weer, ls -R /usr.
De output van deze opdracht, de inhoud van de directory /usr, schiet over het scherm en men heeft niet de gelegenheid om gegenereerde output te lezen.
Met behulp van piping kan men deze output koppelen aan de less opdracht zoals in het volgende voorbeeld dat ervoor zorgt dat de inhoud scherm per scherm wordt afgebeeld.

Voorbeeld 2: geef de inhoud van de directory /usr weer, ls -R /usr | less.
Wanneer piping wordt ingezet gebeuren er eigenlijk twee dingen. Om te beginnen produceert de eerste opdracht zijn output. Dan houdt de eerste opdracht op met werken en geeft zijn output door aan de tweede opdracht. Vervolgens produceert de tweede opdracht zijn output.
Dus in het vorige voorbeeld gebeurd het volgende :

  1. De 'ls /usr' opdracht produceert meerdere schermen direct na elkaar
  2. deze schermen (de output van de opdracht) wordt gepiped naar de opdracht less
  3. de input van 'less' (dus de schermen) worden nu scherm per scherm getoond

Als resultaat kan men nu wel de inhoud van de directory /usr aflezen van het scherm.

Piping is een krachtige feature, men kan meerdere opdrachten aan elkaar koppelen door meerdere keren het piping symbool te gebruiken. Bv. de vorige opdracht kan ook gesorteerd scherm per scherm weergegeven worden.

Voorbeeld (3): geef de inhoud van de directory /usr weer ==> ls -R /usr | sort | less

up.png 9.3 Redirection down.png

Iets wat erg veel op piping lijkt is redirection. Met behulp van redirection stuurt men de output van een opdracht naar een bestand. Aangezien alle apparaten die voorkomen op een LINUX computer aangesproken worden door het bijbehorende bestand aan te spreken, kan men heel veel dingen doen met redirection. Naast het doorsturen van de output naar een bestand kan men een bestand ook gebruiken als input van een opdracht. De volgende tabel toont de verschillende tekens die men gebruikt in redirection :

Redirection symbols
symbool betekenis voorbeeld resultaat
> Stuurt het resultaat naar een bestand ls > inhoud. stuurt de output van de 'ls' opdracht naar het bestand 'inhoud'
als 'inhoud' niet bestaat wordt het aangemaakt
als 'inhoud" bestaat wordt het overschreven
2> Stuurt de error meldingen naar een bestand ls 2> inhoud. stuurt de error meldingen van de 'ls' opdracht naar het bestand 'inhoud'
als 'inhoud' niet bestaat wordt het aangemaakt
als 'inhoud" bestaat wordt het overschreven
< Neemt een bestand als input sort < inhoud Sorteer het bestand inhoud
>> Stuurt het resultaat naar een bestand
het resultaat wordt achteraan toegevoegd
ls >> inhoud stuurt de output van 'ls' naar het bestand 'inhoud'
als 'inhoud' reeds bestaat wordt de output achteraan toegevoegd. als 'inhoud' niet bestaat wordt het aangemaakt

Zoals boven vermeld worden alle rand apparaten (devices) op een LINUX systeem aangesproken via een bijbehorend bestand. Met behulp van redirection kan men dus de output van opdrachten naar een rand apparaat sturen. De volgende tabel toont enkele voorbeelden van rand apparaten.

Rand apparaten
bestands naam apparaat
/dev/tty1 Is het beeldscherm waarop men aan het werken is als men geen gebruik maakt van X
/dev/pts/0 Is het eerste shell venster dat vanuit X wordt geopend
/dev/hda Is de eerste ATA harddisk (of cdrom device)
/dev/hda1 Is de eerste partitie op de eerste ATA harddisk
/dev/null het zogenaamde zwarte gat, null device
/dev/lp0 de printer
/dev/sda Is de eerste SATA harddisk
/dev/sda1 Is de eerste partitie op de eerste SATA harddisk

In al de volgende gevallen gebruikt men redirection om een bepaald resultaat te behalen.

Voorbeeld Commentaar
ls -R /usr > /dev/lp0 Stel dat men de inhoud van /usr niet op het beeld scherm wil zien maar een listing op de printer wil hebben. In dat geval gebruikt men redirection om de output van 'ls' door te sturen naar het printer device.
cat /dev/hda > /dev/hdb Met behulp van redirection kan men nog meer spectaculaire resultaten bereiken. Stel dat de PC beschikt over twee identieke IDE harde schijven dan kan men met behulp van redirection een copy maken van de ene schijf naar de andere.
ls -R /usr 2> /dev/null LINUX opdrachten produceren behalve de verwachte output ook nog error meldingen. Deze error meldingen kan men met behulp van redirection afzonderen. Zie bovenstaande tabel. Men kan dus de uitvoer van een opdracht dusdanig filteren dat er geen error meldingen in voorkomen. Voorbeeld : de opdracht zorgt ervoor dat foutmeldingen naar het null device worden gestuurd.
ls -R /usr 2> /dev/null > inhoud Men kan zelfs in dezelfde opdracht lijn de normale uitvoer en de fout meldingen elk een eigen kant opsturen. Voorbeeld : deze opdracht stuurt de normale uitvoer van de 'ls' opdracht naar het bestand 'inhoud', echter de foutmeldingen van de opdracht worden naar het null device gestuurd. (en komen dus niet voor in het bestand 'inhoud')
ls -R /usr 1&2> 'inhoud' De beide uitvoer combineren is ook mogelijk zoals in het voorbeeld.

up.png 10 Basis taken uitvoeren down.png

De basis taken vormen een verzameling activiteiten die door een unix/linux administrator worden uitgevoerd met als doel dagelijks onderhoud voor het unix/linux systeem te voorzien. Om dit te verwezenlijken (en de student zo snel als mogelijk enigszins wegwijs te maken) worden hier een aantal basis opdrachten besproken.

up.png 10.1 Instellen van een wachtwoord down.png

Wanneer men de eerste keer inlogt op een LINUX systeem doet men dit met de id en wachtwoord dat men van de systeem beheerder heeft gekregen. De eerste taak die dan moet uitgevoerd worden is het wijzigen van het wachtwoord. Dit doet men door op een command line de opdracht passwd toe te passen.
Hieronder staat een afbeelding van een 'passwd' dialoog.

passwd.png

up.png 10.2 Inloggen onder een andere naam down.png

Wanneer men als beheerder van een UNIX/LINUX systeem met de normale gebruikers account bent ingelogd zal dikwijls de behoefte ontstaan om onder een andere naam in te loggen. Bijvoorbeeld als 'root' om alle rechten op het systeem te bekomen, of als een andere gebruiker om de rechten van deze gebruiker te bekomen. Men zou een nieuwe console kunnen opstarten, maar deze is niet altijd beschikbaar. Met de opdracht su kan men zichzelf voordoen als een andere gebruiker.

Met su gebruikers-naam volgt er een dialoog waarmee men het wachtwoord van de betreffende gebruiker kan ingeven, vervolgens start er een nieuwe (sub)shell terwijl men dan de gebruiker in kwestie is.

Indien men su gebruikt zonder argumenten, zoals in su, wordt aangenomen dat men superuser wil worden. De daarop volgende wachtwoord dialoog vraagt dus het wachtwoord van de gebruiker 'root'. Bij het succesvol invullen van het wachtwoord wordt er een (sub)shell gestart terwijl men de user 'root' is.

Een alternatief voor de opdracht 'su' is de opdracht sudo. Met 'sudo' kan een eenmalige opdracht onder de rechten van een andere gebruiker worden uitgevoerd. Meestal wordt geen gebruiker meegegeven, in dit geval zal net als onder 'su' aangenomen worden dat men de gebruiker 'root' bedoeld. Wat volgt is een wachtwoord dialoog, en bij het succesvol invullen van het wachtwoord, zal de opdracht uitgevoerd worden met de rechten van de opgegeven gebruiker. Bijvoorbeeld : sudo find /*, zal de 'find /*' opdracht uitvoeren als root, indien het juiste wachtwoord wordt gegeven.

up.png 10.3 Security down.png

De 'root' gebruiker heeft in tegenstelling tot alle andere gebruikers alle rechten op het systeem. Als unix/linux administrator heeft men zeer dikwijls de root rechten nodig :

warning.png Het is als beheerder zeer verleidelijk om als 'root' in te loggen en constant als root te werken.
Dit is een zeer onveilige situatie :

up.png 11 Het LINUX bestand systeem down.png

LINUX gebruikt een standaard directory structuur die door de meeste distributies gerespecteerd wordt. Net als bij andere operating systemen is de directory structuur onder LINUX een hiërarchische boomstructuur. De volledige directory tree kan uit meerdere delen bestaan, waarbij elk deel voorkomt op een eigen disk en/of partitie. Bovenaan in de boomstructuur staat de 'root' directory (aangeduid door '/') Alle bestanden en directories op een linux systeem vallen onder deze root directory. (Er zijn dus geen aparte drive letters voor iedere aparte disk of partitie). Deze gehele directory structuur kan voorkomen onder 1 disk of partitie, maar vaak zal de structuur meerdere partities bevatten, waarbij iedere partitie op een andere disk kan staan. Elk van deze partities wordt in de directory structuur geïmporteerd met behulp van de mount opdracht. Later leren we meer over mount.

up.png 11.1 Standaard directories down.png

Net zoals op een windows computer een aantal standaard directories voorkomt (zoals Windows, Mijn Documenten, Programma bestanden) zo kent LINUX een indeling in standaard directories. We geven hier een overzicht van wat men op de meeste systemen tegenkomt :

Linux Standaard Directories
naam betekenis
/bin In de directory /bin komen opdrachten die nodig zijn bij het opstarten van de computer. Gebruikers mogen doorgaans gewoon gebruik maken van de bestanden in deze directory. De directory /bin komt direct onder de root voor omdat direct na het opstarten de bestanden beschikbaar moeten zijn.
/sbin In de directory /sbin staan systeem bestanden die voornamelijk voor het beheer van het systeem gebruikt worden. Men moet hier denken aan opdrachten zoals fdisk, shutdown, en de bootloader lilo. Gebruikers zonder beheers rechten mogen in principe geen gebruik maken van de bestanden in deze directory.
/etc In deze directory staan de configuratie bestanden van het systeem. In feite zijn dit de cruciale bestanden waardoor LINUX weet hoe het met het systeem moet omgaan. In deze directory komen bijvoorbeeld de configuratie bestanden 'passwd' en 'shadow' voor, waarin de gegevens over de gebruikers worden bijgehouden. Ook veel bestanden waarmee de beveiliging van het systeem wordt geregeld staan in deze directory. Daarnaast bevinden zich in een subdirectory rc.d de startup scripts voor LINUX. Wanneer deze directory wordt verwijderd wordt normaal opstarten van de computer onmogelijk.
/lib In de directory /lib staan de belangrijkste gedeelde library bestanden. Deze bevatten programma code die door meerdere programma's gebruikt kan worden. Vergelijk maar met de fameuze .DLL bestanden onder windows
/dev In de directory /dev staan de device-bestanden. Deze worden gebruikt om contact te maken met apparaten (devices) op de computer. Elk apparaat heeft een overeenkomstig bestand in de directory /dev waardoor het besturings systeem dit apparaat kan benaderen. Dit komt omdat elk device bestand een unieke identificatie bij de kernel heeft in de vorm van een major- en minor-nummer. Dankzij deze device bestanden heeft de kernel een unieke methode om met de verschillende rand apparaten te communiceren. Het leuke zit daarbij in dat de LINUX kernel niet beslist op de hoogte moet zijn van het specifieke apparaat waarmee moet gecommuniceerd worden, maar alleen hoeft te weten over welk soort apparaat het gaat.
/var In de directory /var staan variabele bestanden. Voornamelijk cache bestanden, log bestanden, enzo...
/usr De directory /usr bevat alles wat gerelateerd is aan de gebruiker.
/usr/bin Hier staan de opdrachten en programma's die door de meeste gebruikers gebruikt mogen worden.
/usr/lib De library bestanden behorend bij /usr/bin.
/usr/etc Configuratie bestanden behorend bij /usr/bin.
/usr/man Man pages behorend bij /usr/bin.
/usr/info Info pages behorend bij /usr/bin.
/usr/doc Documentatie bestanden voor geïnstalleerde programmas
/usr/X11R6 Bestanden die te maken hebben met het X-windows systeem
/usr/var De directory /var bevat voornamelijk bestanden van een variabele grootte, die meestal door het systeem gebruikt worden en die door de tijd heen nogal eens willen groeien. Men kan hierbij denken aan bestanden waarin print opdrachten geparkeerd worden voordat ze worden doorgestuurd naar de printer, elektronische post, systeem log files, enzo... Juist omdat deze bestanden nogal eens ongecontroleerd groeien wordt de /var directoy zeer dikwijls op een aparte partitie of medium geplaatst.
/home De directory /home wordt gebruikt voor de homedirectories van de gebruikers die op het systeem gedefinieerd zijn. Elke gebruiker heeft onder /home directory een subdirectory waarin hij zijn bestanden kan opslaan. Het is min of meer standaard om home directories onder /home aan te maken. Men is echter volledig vrij en man kan een home directory ook ergens anders plaatsen. Ook hier weer is het een goede zaak om de /home directory op een apart medium te plaatsen.
/boot In de directory /boot staan bestanden die nodig zijn voor het opstarten van LINUX. Hier bevindt zich onder andere de kernel die geactiveerd wordt tijdens dit opstarten. Deze directory is van essentieel belang om het systeem te kunnen starten. Daarnaast is het op sommige (oudere) systemen nodig dat de bestanden in deze directory aan het begin van de harde schijf staan. Om deze reden wordt voor de directory /boot dikwijls een aparte partitie aangemaakt aan het begin van de schijf (beneden cylinder 1024).
/opt Een directory die niet altijd gebruikt wordt. Het doel van deze directory is de omvangrijkere programma's zoals OpenOffice, of KDE, apart te houden van de kleinere programma's en opdrachten die voorkomen onder /usr.
/proc Een heel ander soort directory is de /proc. Meestal bestaat deze directory niet als een echte directory op de hard disk. Deze directory wordt namelijk gebruikt als een interface naar datastructuren die door de kernel in het werkgeheugen gebruikt worden. Het doel van het bestands systeem proc is om het mogelijk te maken snel informatie over processen op te vragen. een bestand in /proc is dus een pointer naar het werkgeheugen van de computer. Het aardige hier is dat in bepaalde gevallen het mogelijk is om instellingen rechtstreeks in het werkgeheugen te wijzigen door direct in een bestand van de /proc directory te schrijven.

Onder /proc komen nog een aantal subdirectories voor waarvan de naam een getal is. Elk actief process gebruikt zo een directory. Het getal is het process-identificatie nummer dat aan elk process verbonden is, waarover later meer. Elk van deze directories bevat een aantal subdirectories, onder andere 'cmdline' dewelke de command line bevat waarmee het process is opgestart.

up.png 11.2 Bestand namen down.png

Men heeft veel vrijheid bij het bepalen van de tekens voor het maken van bestandsnamen. Het is alleen af te raden om tekens te gebruiken die een speciale betekenis hebben voor de shell. (! @ # $ % ^ ! * () [] `´ \/ | ; <>). Bovendien mag een bestandsnaam geen spatie bevatten. Gebruikt men wel de speciale tekens of een spatie dan dient men de naam steeds tussen aanhalingstekens te gebruiken.

De standaard LINUX bestand systemen ext3 en Reiser staan namen toe tot een lengte van 256 bytes. Als men echter wil dat de namen ook bruikbaar zijn op andere UNIX systemen kan zich best houden aan een maximum van 14, deze lengte wordt door elke UNIX versie ondersteund. Dit kan nuttig zijn als men een LINUX directory shared en vervolgens linkt in een ander LINUX systeem. Wanneer dit laatste geen lange bestandsnamen ondersteund wordt de naam afgekapt op 14 karakters. Dezelfde problematiek speelt tussen UNIX/LINUX en windows systemen.
Moderne Linux distributies ondersteunen allemaal bestandsnamen met een lengte van 256 karakters. Dit laatste is ook het geval met windows systemen , zie de eigenschappen van NTFS en FAT32. Men dient dus voorzichtig te zijn indien men geconfronteerd wordt met verouderde systemen. Indien mogelijk worden deze zo snel mogelijk geupdate.

warning.png
Ten slotte : UNIX/LINUX bestandsnamen zijn hoofdletter gevoelig, dit is een belangrijk verschil met windows systemen.

up.png 11.3 Soorten bestanden down.png

Op een linux system komen verschillende soorten bestanden voor. Elk van deze bestanden heeft zijn eigen kenmerken, die in deze paragraaf worden besproken. De volgende tabel bevat een lijst van de soorten bestanden

Type Eigenschappen
Gewone bestanden De meeste bestanden die op een LINUX systeem voorkomen zijn 'gewone' bestanden. Om een discussie over het begrip bewoon te vermijden, noemen we hier elk bestand dat gegevens bevat een gewoon bestand. Deze gegevens kunnen uit van alles bestaan : ASCII-tekst, een afbeelding, uitvoerbare code, of data van wat voor soort ook. Binnen deze bestanden maakt LINUX alleen onderscheid tussen uitvoerbare of niet uitvoerbare bestanden. Een uitvoerbaar bestand is een bestand dat uitvoerbare code bevat en met de execute permissie uitvoerbaar is gemaakt; hierover later meer. Als men wil weten wat voor soort gegevens er in een bestand voorkomen , kan men gebruik maken van de opdracht file; deze opdracht herkent de inhouds patronen die in een bestand gebruikt worden en kan op basis daarvan aangeven wat voor soort bestand het is.
Directories Een directory is eigenlijk een bijzondere vorm van een gewoon bestand. Directories zijn namelijk inhouds tafels met daarin de plaats van andere bestanden op het medium. Ook is de directory altijd het startpunt waarnaar wordt gerefereerd om een bestand te benaderen. De belangrijkste directory is '/' omdat dit het startpunt van de volledige directory structuur is.
Links Een link is een verwijzing naar een ander bestand. Er zijn twee soorten links: hard links en soft links. Later wordt dit meer in detail besproken.
Sockets en Fifo's Soms moeten processen op een LINUX computer met elkaar communiceren. Hiervoor wordt gebruikt gemaakt van sockets en fifo's. Dit zijn bestanden die dynamisch worden aangemaakt en ook dynamisch worden verwijderd. Men komt ze meestal niet tegen, maar ze bestaan wel degelijk.
device bestanden zie hiervoor

up.png 12 Nog meer basis opdrachten down.png

Om de parate kennis van LINUX nog wat te vergroten volgt hier een kort overzicht van elementaire LINUX-opdrachten met een korte omschrijving.

cal Geeft een eenvoudige calender weer
clear Clear screen : het scherm leegmaken
date Weergave en instellen van datum en tijd
df DiskFree : weergave vrije ruimte op disk
du Geeft de ruimte weer die door specifieke bestanden en directories wordt ingenomen
free Toont hoeveel werkgeheugen er nog vrij is
logname Geeft aan onder welke naam je bent ingelogd
uname Geeft info over het systeem
wc Telt het aantal woorden, tekens of regels in een bestand
wall Stuurt een boodschap naar alle ingelogde gebruikers

up.png 13 Afsluiten down.png

Wanneer men klaar is met het werken met LINUX, kan men niet zomaar de PC uitzetten. LINUX schrijft namelijk niet altijd alle gegevens direct weg naar de schijf, maar bewaart ze tijdelijk in werk geheugen om ze op een geschikt moment weg te schrijven. Dit process wordt caching genoemd. Hierdoor loopt men het risico om gegevens kwijt te raken wanneer men zomaar de computer uitzet. Daarnaast moeten alle gebruikers de gelegenheid krijgen om zichzelf af te melden, zodat ze hun werk kunnen opslaan. Daarom is er een speciale opdracht om de computer af te zetten, namelijk shutdown.
De volgorde van gebeurtenissen eens de shutdown opdracht gegeven is als volgt:

  1. geef alle gebruikers de gegeven boodschap
    indien geen boodschap gegeven een standaard boodschap
  2. na de boodschap is het niet langer mogelijk om in te loggen of verder te werken
  3. het systeem wacht de opgegeven tijd
  4. Alle actieve processen krijgen een signaal dat het systeem gaat afsluiten de processen kunnen hun data opslaan en zichzelf proper afsluiten
  5. Het systeem wordt stilgelegd

shutdown -r min

De optie -r (van restart) wordt gebruikt om het systeem na de shutdown opnieuw op te starten. Wil men het systeem volledig stilleggen gebruik dan '-h' (van halt). Met de parameter sec kan men het aantal seconden opgeven, shutdown zal de opgegeven tijd 'sec' wachten alvorens de het systeem down te zetten. In plaats daarvan kan men onmiddelijk een shutdown genereren door als de 'sec' parameter de optie 'now' te gebruiken.
In de volgende tabel zijn verschillende vormen van shutdown en hun alternatieven aangegeven:

opdracht commentaar alternatief
shutdown -r now
alias=reboot
Shutdown zonder delay en herstart de computer reboot
shutdown -h now
alias=poweroff
Shutdown zonder delay en zet de computer uit halt, ctrl-alt-del

up.png Samenvatting down.png

In dit hoofdstuk heb je geleerd van welke elementaire opdrachten je gebruik kunt maken bij het beheren van een LINUX computer. Voor een beheerder is het heel belangrijk om deze taken te kunnen uitvoeren via de command line, immers de te beheren computers in een bedrijf zijn voor 99% unix en/of linux servers, waar een grafische omgeving niet aan te pas komt. In het voorbije hoofdstuk hebben we geleerd dat men vanaf de opdracht regel zeer veel krachtige opdrachten ter beschikking heeft. We hebben gezien dat LINUX beschikbaar is in een aantal distributies, die min of meer hetzelfde zijn. We hebben kennis gemaakt met opdrachten om in het bestands systeem te kunnen manoeuvreren.

up.png Literatuur down.png



previous.png Gratis Hosting
Cursus Linux       Basis       Basis vaardigheden   
Last modified: Thu Jun 18 12:23:15 2015