|
|
|
Basis Vaardigheden
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:
- opstarten, aanmelden, afsluiten van een LINUX systeem
- de opdracht regel (command line) leren gebruiken
- manoeuvreren door het bestands systeem
- help opvragen
- gebruiken van elementaire opdrachten
1 Opstarten : lilo en grub
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 :
- starten van meerdere operating systemen
Op een computer (pc) kunnen meerdere operating systems geïnstalleerd zijn. De bootloader
voorziet in een menu een lijst met alle operating systems die gestart kunnen worden.
De gebruiker kiest dan een operating systeem.
- starten van meerdere versies van hetzelfde operating systeem
LINUX kent meerdere modi om op te starten. Meestal wordt in het bootloader menu
de mogelijkheid voorzien om te kunnen opstarten in 'single user mode' (failsafe).
Deze mode zal alleen het aller noodzakelijkst opstarten en aldus voorzien in een minimaal
systeem, dat gebruikt kan worden om allerlei problemen op te lossen.
- Meestal voorziet de bootloader het automatisch opstarten van een operating systeem
na het verstrijken van een aantal seconden, zonder dewelke de gebruiker een keuze
gemaakt heeft.
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.
2 Inloggen
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:
- de grafische prompt van X-windows
- over het netwerk via ssh (secure shell) of telnet
- via de command line prompt van een virtuele console
- in theorie met behulp van een domme terminal op een seriële poort (hardware nodig)
- binnen een virtuele terminal met de opdracht login of su
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.
- systeem administrator, de gebruikers account aangemaakt tijdens de
installatie procedure
- systeem accounts, meerdere systeem accounts verbonden aan systeem services
vb.: lp (line printer), man (manual pages) enzo ...
- root account , er is steeds 1 root account met alle rechten
- 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).
2.1 Virtuele consoles (ctrl-alt-F1, F2, ...)
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.
3 Werken met LINUX opdrachten
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 |
Wat moet je nu onthouden:
- hoofdletter gevoelig
- opties bepalen het gedrag van de opdracht
- parameters worden door de opdracht gebruikt als data
- pas op ! de opdracht vraagt niet of U het zeker weet
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 '\'.
4 Bekijken en manoeuvreren in de directory structuur
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)
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 |
4.1 De huidige directory
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.
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.
4.2 De opdracht 'ls'
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 |
4.3 De opdracht 'cd'
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 |
5 Het verschil tussen een relatief en een absoluut path
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).
5.1 Een relatief path
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.
5.1 Een absoluut path
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).
6 Bekijken van inhoud van bestanden en output van opdrachten
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
|
7 Zoeken naar bestanden en tekst
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 |
8 Beheren van bestanden
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 |
9 Redirection en Piping
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.
9.1 De standaard kanalen
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.
- stdin
Staat voor 'standard input',
en betekent het kanaal
langs waar data naar de opdracht stroomt.
- stdout
Staat voor 'standard output',
en betekent het kanaal
langs waar door de opdracht geproduceerde data wegstroomt.
- stderr
Staat voor 'standard error',
en betekent het kanaal
langs waar door de opdracht geproduceerde error boodschappen wegstromen.
9.2 Piping
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 :
- De 'ls /usr' opdracht produceert meerdere schermen direct na elkaar
- deze schermen (de output van de opdracht) wordt gepiped naar de opdracht less
- 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
9.3 Redirection
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.
|
10 Basis taken uitvoeren
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.
10.1 Instellen van een wachtwoord
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.
- invullen bestaand wachtwoord (wordt niet getoond)
- invullen nieuw wachtwoord (wordt niet getoond)
- herhalen nieuw wachtwoord (wordt niet getoond)
10.2 Inloggen onder een andere naam
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.
10.3 Security
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 :
- tijdens het installeren van software
- tijdens het nemen van backups
- om bepaalde gebruikers eigenschappen te kunnen beheren
Het is als beheerder zeer verleidelijk om als 'root' in te loggen en constant als root te werken.
Dit is een zeer onveilige situatie :
- Bij een vergissing van een opdracht syntax kan dit zeer zware gevolgen hebben
voor het systeem. Als men dan niet root is, zullen de eigen rechten
enigszins bescherming bieden (denk maar aan rm -Rv (verwijder alle bestanden,
terwijl de root dir de huidige directory is).
- Bij het installeren / copiëren van software worden alle bestanden als 'root' bestanden
geïnstalleerd, vervolgens kunnen de gewone gebruikers deze bestanden niet gebruiken
omdat ze geen toegang hebben
- Gezien het eerst aangehaalde risico, wordt in veel (grotere) bedrijven
werken als 'root' niet toegestaan
11 Het LINUX bestand systeem
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.
11.1 Standaard directories
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.
|
11.2 Bestand namen
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.
Ten slotte : UNIX/LINUX bestandsnamen zijn hoofdletter gevoelig, dit is een belangrijk verschil met windows systemen.
11.3 Soorten bestanden
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 |
12 Nog meer basis opdrachten
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 |
13 Afsluiten
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:
- geef alle gebruikers de gegeven boodschap
indien geen boodschap gegeven een standaard boodschap
- na de boodschap is het niet langer mogelijk om in te loggen of verder te werken
- het systeem wacht de opgegeven tijd
- Alle actieve processen krijgen een signaal dat het systeem gaat afsluiten
de processen kunnen hun data opslaan en zichzelf proper afsluiten
- 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 |
Samenvatting
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.
Literatuur
|
|
|
Last modified: Thu Jun 18 12:23:15 2015 |