Linux

 
  • Inleiding

    Omdat Linux een unix kloon is, is het handig om de command line interface (CLI) van Linux in de vingers te hebben. Oefenen hiermee is mogelijk zonder de grafische user interface X op te starten, of wanneer dat automatisch al gebeurd is, binnen X een zogeheten shell window te starten. Een belangrijk commando is man. Hiermee wordt een manual pagina op het scherm gezet. Gebruik dit commando als je de mogelijkheden van een nieuw commando wilt leren kennen. Tik op een commando regel: man man en je krijgt de manual page van het commando man.

    Enkele belangrijke tips voor je aan de slag gaat:

    1. Je moet eerst inloggen om met linux te kunnen werken.
    2. Om te kunnen inloggen, heb je een inlognaam en een password nodig.
    3. Linux voert je commando uit of geeft een foutmelding. Zelden wordt er om een bevestiging gevraagd (zoals: are you sure?).
    4. Als gewone gebruiker mag je niet alle commando's uitvoeren.
    5. Als gewone genruiker mag je niet overal in het filesysteem schrijven of dingen weggooien.
    6. In je eigen inlog directory, waar je dus terecht komt na inloggen, heb je meestal wel alle rechten. Deze directory wordt ook wel je HOME-directory genoemd.
    7. De superuser (gebruiker met de inlognaam root) mag vrijwel alles. Werk alleen als superuser als dat nodig is.
    8. Veel commando's werken met bestanden. In dat geval tik je de naam van het bestand achter het commando. Laat je de filenaam weg dan verwachten sommige commando's input van het keyboard. Je kunt dan wat intikken en afsluiten met Ctrl-D.
    9. Een commando dat lijkt te hangen is meestal af te sluiten met Ctrl-C.
    10. Linux (en Unix) maakt onderscheid tussen hoofd- en kleine letters. Het commando pwd is dus pwd en niet PWD of Pwd.
    Moderne linux distributies maken heel veel gebruik van de grafische inteface. Veel basis bewerkingen zijn inmiddels met grafische tools a la windows uit te voeren. Probleem bij deze aanpak is dat de gebruiker niet weet wat er nu precies onder de motorkap gebeurt. Nu kun je zeggen dat je dat ook niet wilt weten, maar problemen zijn eenvoudiger te traceren en op te lossen als je die kennis wel hebt. In plaats van het opnieuw installeren van het hele systeem kan een eenvoudige ingreep met een teksteditor het hele systeem weer netjes in het gareel brengen.
    De configuratie van Linux wordt voor het grootste deel bepaald door 'gewone' ASCII tekstfiles in de directory etc.

     

  • Files, directories, permissies

    Alle bestanden zijn terug te vinden in een enkele directory boom. De stam van deze boom is de root directory. De notatie hiervoor is / (let op: niet de backslash zoals bij windows en/of dos). Een bestand heeft een naam die ook allerlei gekke karakters mag bevatten, hoewel het niet echt aan te raden is om onduidelijke cryptische filenamen te gebruiken. Alle afzonderlijke filesystemen (verzamelingen van bestanden die bij windows aangegeven worden met een drive-letter zoals C:, D: etc.) zijn in deze boomstructuur ondergebracht. Zo vinden we de bestanden op de cd-rom dive in de directory /cdrom of /mnt/cdrom (afhankelijk van waar de cdrom in het geheel is aangekoppeld). De volgende figuur geeft een klein deel van de fileboom weer.
    PLAATJE MET LINUX BOOM
    De rechthoekjes zijn files (bestanden met data) de afgeronde rechthoekjes zijn directories. Een directory kan files een weer andere directories (zogenoemde subdirectories) bevatten (dit is dus hetzelfde als folders of mappen bij windows of macintosh).
    Een gebruiker zit op een gegeven moment in een bepaalde directory. Dit heet de working directory. Een bestand kan dan bereikt worden met de naam van dit bestand. Dus als de gebruiker in de directory leovm zit, kan linux.txt direct gevonden worden. zit de gebruiker in een andere directory dan zijn er twee mogelijkheden om de file linux.txt in leovm aan te duiden.
    1. Een absoluut pad vanaf de root directory: /home/leovm/linux.txt (absolute paden beginnen met een slash)
    2. Een relatief pad naar het bestand toe. Stel we zitten in etc, dan gaan we met .. (punt punt) een directory omhoog en kunnen dan weer afdalen naar home/leovm we krijgen dan: ../home/leovm/linux.txt

    Elke file of directory heeft permissie-bits. We kennen drie rechten read, write en execute afgekort tot rwx. Verder onderscheiden we de eigenaar van de file of directory, de groep van gebruikers waar de file bijhoort en de rest van de wereld. Stel we hebben een gebruiker leovm, deze bezit een bestand linux.txt. Voor dit bestand heeft deze gebruiker lees en schrijfrechten. Voor leovm zijn de permissies rw- (let op de x-permissie staat uit, vandaar het minteken) Stel linux.txt is ook van de group users. Dan is het mogelijk dat alle gebruikers die in de group users zitten leesrechten voor linux.txt hebben. De group-permissie staat dan op r--. Willen we bereiken dat ieder ander persoon linux.txt niet kan lezen, schrijven of uitvoeren, dan geven we als laatste permissie --- (alle rechten uitgezet). De totale permissie van linux.txt ziet er dan als volgt uit: rw-r----- Dus eerst de eigenaar, dan de group en als laatste der rest. Een user (bijvoorbeeld een persoon die toegang tot het systeem heeft) kan in meer dan een groep zitten. Alleen bij bestanden die als programma (executable of script) uitgevoerd worden hebben het x-bit aanstaan. Voor directories geldt iets speciaals. Het x-bit wordt hier gebruikt om aan te geven dat je erin mag komen.

     

  • Basisset CLI commando's

    Voer nu stap voor stap deze instructies uit op Linux systeem. We loggen in op een Linux systeem. Hierna komen ofwel in een grafische omgeving (X-windw system) of in een command line omgeveng (een zwart scherm met een commando prompt). In het laatste geval hoeft er op dit moment nog niets te gebeuren, omdat we juist in deze werkomgeving gaan oefenen. In het eerste geval moet een een zogenoemde command window (shell) opgestart worden. Dit is te vinden in de taakbalk onder aan het scherm (en heet Console, Konsole, terminal of shell). Activeer zo'n command window en ga er met de muis in staan. Let erop dat je bij de volgende instructies steeds afsluit met de Enter-toets (dus je geeft een nieuwe regel, pas dan wordt het commando uitgevoerd).
    Tik in:

    who

    En zie wie er allemaal ingelogd zijn op het systeem. Tik in:

    ls
    
    (Dit is een kleine letter L gevolgd door een s en natuurlijk Entertoets) Een lijst van files in de directory waar je zit wordt zichtbaar.

    Tik in:

    ls -al
    
    Je krijgt meer informatie over de files en directories (als gevolg van de optie -l) en ook files en directories beginnend met een punt zijn nu te zien (als gevolg van de optie -a). Commando's zijn te voorzien van opties of flags. Deze worden zelf meestal door een minteken voorafgegaan.

    Tik in:

    man ls
    
    Nu verschijnt er een uitvoerige helpfile over het commando ls op het scherm. Deze is volgens een standaard formaat opgesteld. Alle mogelijke opties worden besproken. Onderin staat een dubbele punt met daarachter de cursor. Omdat het niet allemaal in een scherm past kun je verder kijken door het intikken van de spatiebalk. Ook kun je altijd stoppen door een q in te tikken. Meer keren de spatiebalk intikken brengt ons aan het eind van deze manual page (man-page). Tik dan q in om de manual te verlaten.
    Met het commando echo kun je een tekstje op het scherm zetten. Tik in:
    echo Hoi
    
    Na het intikken van de entertoets verschijnt de tekst Hoi op het scherm. Op het eerste gezicht niet echt zinvol, maar als we later met scripts gaan werken zal de waarde van echo duidelijk worden. Om de uitvoer van een commando niet naar het scherm, maar naar een bestand (file) te sturen kan het > teken gebuikt worden. Tik in:
    echo Hoi > groet
    
    zal een file met de naam groet aanmaken. De inhoud is de tekst Hoi. Controleer dat de file aangemaakt is met het ls commando. Hoe groot is de file? (gebruik ls -l). Met het commando cat kan de inhoud van een file op het scherm weergegeven worden. Tik in:
    cat groet
    
    Op het scherm verschijnt nu Hoi. Als een bestand veel tekst bevat schieten de regels razendsnel over het scherm. Met het commando less (voorheen more) komt het in hapklare brokken (van 25 regels) op het scherm. Het systeem wacht op invoer van bijvoorbeeld een spatie om verder te gaan. Met q is less af te sluiten. Bij het commando man werd eigenlijk al met less gewerkt. Tik in:
    less /etc/passwd
    
    Als de file niet bestaat komt hiervan een melding. In het andere geval kijk je met less naar de inhoud van /etc/passwd. Tik q in om te stoppen. Tik in:
    ls -l > filelist
    
    Kijk met cat of less naar de inhoud van filelist. Om een tekstfile aan te maken, zijn er verschillende teksteditors beschikbaar. Een eenvoudige is nano. Om een bestand met de naam xyz te maken tik je in:
    nano xyz
    
    Als je een krachtige (maar wat lastigere) editor wil gebruiken, kun je vi proberen. Kijk naar de vi introductie hoe je met vi kunt beginnen. Een grafisch georienteerde editor is gedit. Als laatste teksteditor noemen we emacs. Voor sommige mensen een onmisbare tool.

     

  • Rondwandelen in het filesysteem

    We gaan er van uit dat de boomstructuur zoals hiervoor besproken bekend is.
    Tik in:
    pwd
    
    Je krijgt te zien waar je in de directory-boom zit. Pwd staat voor print working directory. Met het commando cd (change directory) kun je van directory veranderen. Je kunt absolute en relatieve pathnames (zie boven) opgeven. Met .. (punt-punt) ga je een directory hoger. De verschillende namen van directories in een pad zijn meht een echt slash / gescheiden. De slashes staan dus anders dan bij windows (waar backslashes gebruikt worden). De huidige directory kun je met een enekel punt (.) aangeven. Je kunt niet hoger dan de rootdirectory /. Probeer maar, tik in:
    cd /
    
    Je zit nu in de rootdirectory. Tik in:
    pwd
    
    Je krijgt te zien: /. Tik nu in:
    cd ..
    
    Er volgt geen foutnmelding, maar pwd leert dat we nog steeds in de rootdirectory zitten. Tik nu in:
    cd
    
    Dus een kaal cd commando. Tik in:
    pwd
    
    En het zal blijken dat we in de directory terechtgekomen zijn, waar we na normaal inloggen ook in terecht komen. Dit heet de HOME-directory.
  • Speciale directories

    We zijn de home directory al tegengekomen als de plek waar je als user na inloggen in terechtkomt. Daarnaast kennen we inmiddels de root-directory / die de oorsprong is van de hele directory-structuur. Let op: er is ook een /root directory. Dit is de homedirectory van root (de systemadministrator). Drie directories mogen niet ongenoemd blijven:
    1. /etc hier staan allerlei settings van het systeem en systeemsofwtare. Een bekende hier is de eerder genoemde passwd file. Ook subdirectories met startup-scripts zijn hier terug te vinden.
    2. /dev hier zijn de devices als files aanwezig. Zo is hda de eerste harde schijf op ide0. hda1 de eerste partitie van deze schijf, hda2 de tweede (primaire) partitie etc. Merk op dat als we ls -l doen, dan zien we als eerste letter van de permissies ofwel een b of een c (als er een l staat is het een symbolic link naar een ander bestand). Staat er een b dan is het een device dat block-georienteerd is, bij lezen komt er een block aan data beschikbaar. Dit zij vrijwel alle disks. Een c staat voor een character device. Dit zijn devices die een byte opleveren bij lezen.
    3. /proc via proc hebben we toegang (als we de rechten hebben) tot de ingewanden van het systeem. Hier kun je zien hoeveel interrupts er zijn geweest, welke io-poorten er zijn, wat de CPU zoals kan en welke processen (programma's in uitvoering) aanwezig zijn. Let op dit lijken gewone files, maar dat zijn het niet. Het zijn ingangen in het systeem die als ze opgevraagd worden beschikbaar zijn.
  • Links

    Het is mogelijk een verwijzing naar een bestaande file te maken. Hiervoor bestaan twee manieren:
    1. symbolic link of soft-link. Hierbij maakt men een entry in de directory die naar een andere file verwijst. Bij ls -l zie je dan een l als eerste letter van de permissiebytes. Je kunt dan ook zien waar de link naar verwijst.
    2. hardlink. Dit is eigenlijk het laten terugkomen van een bestand op een andere plek in hetzelfde filesysteem. De linkcount (ook te zien met ls -l is dan groter dan 1). Een voorbeeld zal dit duidelijk maken: Stel we hebben een file met de naam aap en we doen een ls -l. Dan zien we:
      -rw-r--r-- 1 leovm leovm 6 2006-09-21 12:09 aap
      
      Nu geven we het volgende commando:
      ln aap /tmp/noot
      
      Dit commando maakt een harde link van het bestand aap aan in /tmp met de naam noot. noot verwijst dus naar dezelfde file en heeft ook dezelfde inhoud als aap. Veranderen we de inhoud van aap dan zien we dat terug bij noot. Het is dezelfde file!
      ls -l aap
      
      -rw-r--r-- 2 leovm leovm 6 2006-09-21 12:09 aap
      
      ls -l /tmp/noot
      
      -rw-r--r-- 2 leovm leovm 6 2006-09-21 12:09 /tmp/noot
      
      Het verschil zit hem dus in het getalletje 2 volgende op de permissies. Voor het linken was dit 1. Verwijderen we aap dan blijft noot bestaan, maar pas als de linkcount 1 is en we verwijderen een file dan verdwijnt hij echt.

 

Wat heb je geleerd?

  • Inloggen
  • De structuur van het Linux filesysteem
  • Absolute en relatieve padnamen (pathnames)
  • Permissies van files en directories
  • Omgaan met de commandline interface (CLI)
  • De commando's ls, who, echo, cat, less, man
  • Het gebruik van een teksteditor (vi, nano of gedit)
  • Het kunstje om de uitvoer niet naar een scherm, maar naar een file te sturen met >
  • In de directory-boom rondwandelen met cd
  • Het begrip HOME directory en het commando pwd.

Om uit te loggen tik je bij de CLI exit of Control-D in. Bij de grafische interface kun je vanuit de menuknop links onder voor uitloggen kiezen.

 

Opdrachten thema 1

  1. Welke optie moet je het commando ls meegeven om naast files en directories ook alle subdirectories door te lopen en de inhoud weer te geven? (recursieve ls; hint: gebruik het commando: man ls)
  2. Kijk met less /etc/passwd wat je User-ID en Group-ID is.
  3. Ga naar de root-directory / en zoek welke subdirectories hier staan en welke wel of niet toegankelijk zijn.
  4. Kijk welke foutmelding je krijgt als je een niet toegankelijke directory in wil gaan.
  5. We hebben nog geen copy commando geleerd, maar met cat en > kun je toch een kopie van een bestand maken. Geef aan hoe dat moet.

 

Waar vind ik meer informatie?

Click hier voor een overzicht van veel gebruikte commando's. Op het web is erg veel informatie over Linux te vinden. De volgende websites zijn Nederlandse websites voor Linux en Unix gebruikers.

 

Leo van Moergestel
Aangemaakt 17 september 1999
Laatst bijgewerkt januari 2016