Home

 

Linux::Basisvaardigheden

Naar index

Basisvaardigheden Introductie

Bootloader
Als je een Linux-systeem opstart, wordt een bootloader-programma geactiveerd, Linuxloader (Lilo) of Grub. Naast het opstarten van Linux kan hier gekozen worden voor andere aanwezige besturingssystemen, zoals Windows.

Inloggen
Linux is een systeem voor meerdere gebruikers tegelijk bv. via het netwerk, maar ook met meerdere sessies tegelijk op één PC. Omdat elke gebruiker een eigen profiel met restricties krijgt moet hij inloggen met naam en wachtwoord. Er zijn systeemaccounts, zoals FTP, die ook als gebruiker behandeld worden met voor de applicatie specifieke permissies en restricties.
Daarnaast is er de superuser met alle rechten: root. Het is onverstandig om dit account routinematig te gebruiken. Om integriteit van het systeem te waarborgen moet voor iedere gebruiker een afzonderlijke account met beperkte rechten gemaakt worden. Elke gebruiker krijgt een home-directory voor opslag van de persoonlijke bestanden en de instellingen (Documents & Settings onder Windows). Vanaf één en hetzelfde scherm kunnen meerdere virtuele sessies geopend worden, met ieder dezelfde of verschillende users. Tussen sessies wisselen gebeurt met Alt-F1 - F6 of in X-Window Ctr-Alt-F1 - F6.

Wachtwoord
Zorg dat er een useraccount is anders dan root voor normaal gebruik. Voorkomt fouten gemaakt met alle rechten.

Inloggen onder andere naam.
Om even in te loggen als andere gebruiker gebruik commando # su. Als dit vanuit root gebeurd, is geen wachtwoord nodig. Variabelen worden onthouden. Ga terug met # exit.
Kan ook met # login, maar dan worden variabelen verloren. Wel kan systeem nu beter bepalen onder welke naam je aan het werk bent (belangrijk bij instellen variabelen).

Linux Shell
Na het inloggen wordt er een shell opgestart, een programma dat commando's interpreteerd als interface tussen gebruiker en zijn applicatie en de kernel.
De shell interpreteerd de getypte commando's en vertaald deze in systeemcommando's die de kernel begrijpt. De shell biedt een uitgebreide programmeertaal en heeft ook een aantal interne commando's die die direct bij het laden van de shell in het geheugen geplaatst worden.
Ook maakt de shell gebruik van systeemvariabelen.
Daarnaast zijn er enkele handigheidjes zoals het terughalen van een vorig commande door de 'up' cursor.
Commando's kunnen automatisch aanvullen d.m.v. de Tab-toets, als er meer mogelijkheden zijn gebeurt er niets maar nog een keer drukken zal alle mogelijkheden tonen.
Er worden meerdere shells met Linux meegeleverd, waarvan BASH (Bourne Again SHell) de meest populaire is.

Naar index

Linux Commando(opties, parameters, argumenten)
De shell interpreteerd de commando's. Hoe een commando zich gedraagt hangt af van de gebruikte opties, parameters en argumenten.

Voorbeeld:
Het commando # ls -al /home
Hier is ls het commando voor het weergeven van lijsten van bestanden en hun kenmerken. In dit commando zijn een aantal opties meegeprogrammeerd, waaronder -a en -l. De optie -a (all) zorgt ervoor dat ook verborgen bestanden (beginnend met .) getoond worden en de optie -l (list) resulteert in het weergeven van een uitgebreide lijst van kenmerken. /home is een parameter geeft de naam van het bestand. Samen vormen zij de argumenten.

Hulp opvragen
De drie opties zijnde de commando's # man, # info en # help.

man
# man [commando] geeft een volledige beschrijving van het gebruik van het [commando].
Het commando # man man resulteert in uitleg van het gebruik van 'man'.

De System Commanders Manual bestaat uit 9 secties en man stopt met zoeken bij de eerste sectie waarin het commando gevonden wordt.
Om alle secties met hulp te zien gebruik # man -a [commando], of als sectie bekend is gebruik # man [sectienummer] [commando].
Gebruik # man -f [commando] voor een lijst met secties waar [commando] in voorkomt, hetzelfde wordt bereikt met # whatis [commando].
Type bijvoorbeeld # man -k password om lijst te krijgen van alle commando's die iets met een wachtwoord doen, # apropos password geeft het zelfde resultaat.
De commando's # man -f en # man -k werken op basis van een database.
Gebruik # makewhatis om de database te updaten.
Voor sommige commando's is er nog geen hulp onder 'man', gebruik dan 'info'.

info # info [commando] geeft een uitgebreidere beschrijving maar is niet beschikbaar voor alle commando's en lastiger in gebruik. Wordt verdrongen door 'man'. Met # info zonder argument kom je bovenin de informatieboom terecht.
Alle items voorafgegaan door een asterix zijn te kiezen door met cursor op de lijn te gaan staan, gevolgd door <return>.
Manoeuvreren binnen 'info' gebeurd met volgende keys: n voor volgende node, p voor vorige, h voor hulp, u voor up in hierarchie en q voor quit.
help Is alleen beschikbaar voor interne commando's en geeft in vergelijk met man en info weinig informatie

Informatie uit documenten
Naast bovenstaande hulp is er ook informatie te vinden in documentatie meegeleverd met de diverse programma's en terug te vinden in de directory /usr/share/doc.
Als ze niet geïnstalleerd zijn kijk dan op www.linux.org.
Daarnaast zijn er de FAQ's en HOWTO's, deze zijn niet beschrijvend maar op een probleem oplossende manier. Om ze te vinden type dan # locate FAQ of # locate HOWTO. Als deze documenten niet met de distributie meegeleverd zijn ga hiervoor ook naar www.linux.org of nl.linux.org voor de nederlandstalige site.
Naast genoemde documenten kun je hier ook een aantal gratis te downloaden boeken over Linux vinden.

Naar index

Basisvaardigheden Commando's

Bekijken en manoeuvreren in directorystructuur
Gebruik # ls voor opvragen informatie over het bestandssysteem.
Root wordt weergegeven door een slash (/). Een volledige van directorynaam begint met / . Als een directorynaam niet begint met / wordt er uitgegaan vanuit de huidige directory. Enkele handige commando's zijn:

pwd
Print Working Directory: geeft huidige directory
cd
Change Directory: # cd /etc zet huidige directory naar /etc/ en met daarna # cd httpd wordt de huidige directory /etc/httpd/.
# cd .. gaat één stap omhoog in tree, dus van /ect/httpd/ terug naar /etc/.
# cd ~ gaat naar homedirectory van user en # cd - gaat naar vorige huidige directory dus handig voor even heen en terug.
ls List: toont inhoud huidige directory, # ls /etc toont inhoud van de directory in het argument.
# ls -l geeft uitgebreide informatie, # ls -a laat ook verborgen bestanden (naam beginnend met .) zien.
Zie # man ls voor alle opties
ls|less Toont alle bestanden in huidige directory en stopt na elk scherm met output (zie hieronder Piping van output).

Speciale tekens zijn: * wildcard voor meerdere tekens, ? wildcard voor één specifiek teken en [ ] waartussen meerdere tekens geplaatst kunnen worden voor één specifiek teken.

Bekijken inhoud bestanden en output van commando's
Het commando # less kan gebruikt worden om te voorkomen dat de output van een commando achter elkaar doorrolt over het scherm. Maar het kan ook gebruikt worden om de inhoud van een ASCI bestand scherm voor scherm te bekijken bijv.; # less/etc/passwd.
Binnen het commando 'less' zijn meerdere toetsen beschikbaar om te manoeuvreren binnen de tekst en zijn hetzelfde als binnen het commando 'man'.
Druk, terwijl je in de output van 'less' bent, op h om een volledige lijst van toetsaanslagen te krijgen.

Piping van output
Bij 'piping' wordt de output van een commando doorgegeven aan het 2e commando.
Het commando # ls -R /usr resulteert in een listing die op het scherm voorbij vliegt. Door piping van de output van # ls naar commando ' less', # ls -R /usr | less, wordt de output door 'less' scherm voor scherm weergegeven.
Het commando # ls -R /usr | sort | less resulteert in een alphabetisch gesorteerde lijst die door 'less' opnieuw scherm voor scherm getoond wordt.
Het commando # ls -R /bin | lpr zal listing naar printer sturen.

Naar index

Redirection van output
Met redirection wordt de output van een commando doorgestuurd naar een bestand.
# ls -l > lstekst maakt bestand "lstekst" met daarin output van ls . Als bestand al bestaat wordt deze overschreven.
# ls -l >> lstekst voegt output toe achteraan bestaande inhoud in "lstekst".
# mail alex < lstekst stuurt inhoud van bestand naar commando, dus mailt inhoud van "lstekst" naar alex.

Redirection kan ook naar en van devices, omdat devices in Linux ook bestanden zijn omdat ze aangesproken worden via het bijbehorende bestand:

/dev/tty1 : is het beeldscherm
/dev/pts/0 : is het eerste shellvenster in een X-sessie
/dev/hda : is de harddisk
/dev/null  : is het 'zwarte gat'

Voorbeelden:
Het commando # grep -l root /etc/* resulteert in namen van alle bestanden in /etc waarin de tekst 'root' voorkomt.
Hierbij zijn ook foutmeldingen. Door redirection sturen we deze fouten naar het 'zwarte gat': # grep -l root/etc/* 2> /dev/null.
Daarentegen kunnen we deze foutmeldingen in een log opslaan als volgt: # grep -l root /etc/* 2>> /var/log/messages.

Zoeken naar bestanden en tekstinhoud
De volgende drie commando's kunnen gebruikt worden om te zoeken op een systeem. Raadpleeg # man voor een uitgebreider overzicht van mogelijke opties:

find Wordt gebruikt om te zoeken naar bestanden die aan bepaalde eigenschappen voldoen. Hierbij zijn 3 soorten opties:
  gewone opties
De gewone opties bepalen hoe het commando zich moet gedragen, zoals # find -maxdepth 4 specificeert dat max. 3 subdirectories diep gezocht mag worden.
  tests -amin n Het bestand is n minuten geleden voor het laatst benaderd.
    -name username
Specificeert de eigenaar van het bestand.
  acties Met acties kunnen commando's aangegeven worden die uitgevoerd moeten worden op het resultaat van de zoekactie.
Het zoekresultaat kan bijvoorbeeld op het scherm weergegeven worden door de actie -print.
Ook kunnen met de actie -exec commando's uitgevoerd worden op de bestanden die door 'find' gevonden zijn. Gebruik de tekens { } in het commando, die staan voor de huidige geretourneerde bestandsnaam.
Bijv.: # find / -ename "a*" -user ben -exec cp { } /root \;
Dit commando zoekt vanaf de rootdirectory alle bestanden van "ben" waarvan de naam begint met "a" en kopieert deze vervolgens naar directory /root.
Het commando wordt afgesloten met een ";" voorafgegaan met een backslash. Deze \ zorgt ervoor dat niet de shell maar het commando 'find' de ";" interpreteert. Met meerdere commando's achter elkaar met -exec moet elk -exec statement afgesloten worden met ";".
grep Wordt gebruikt om te zoeken naar gespecificeerde tekst in bepaalde bestanden.
Bijv.; # grep size /etc/f*, geeft, voorafgegaan door de bestandsnaam, alle regels weer waar het woord "size" in voorkomt van alle bestanden beginnend met "f" in de directory /etc.
Naast tekstbestanden doorzoeken op tekst kan het commando ook gebruikt worden om output van een ander commando te filteren.
Bijv.; # ps -aux | grep httpd. Commando 'ps -aux' zal alle actieve processen rapporteren, maar door piping naar grep zullen alleen resultaten met 'httpd' erin gerapporteerd worden. Zie 'man' bestanden voor de verschillende opties, bijv. -l resulteerd in bestandsnaam zonder de betreffende regel in bestand.
locate  Wordt gebruikt om snel de locatie van een bepaald bestand te zoeken.
Na een systeemwijziging wel een update van de database uitvoeren d.m.v. commando: # updatedb.

Naar index

Bestanden kopiëren, verplaatsen, aanmaken en verwijderen
Hieronder kort aandacht voor enkele commando's die gebruikt worden voor het beheer van bestanden :

cp[-opties] bestand bestemming Gebruikt voor kopiëren van bestanden, zie ook man cp voor meer opties:
  -b  -backup: Maakt een backup van bestanden die overschreven worden door 'cp'.
  -f -force: Verwijdert bestaande destination files of overschrijft een bestand als die al bestaat.
  -i -interactive: Vraagt de gebruiker wat er moet gebeuren als een bestand overschreven dreigt te worden.
  -r -recursive: Kopieert de inhoud van een directory inclusief alle subdirectories en hun inhoud.
  -u -update: Kopieert een bestand niet als op de plaats van bestemming een gelijknamig bestand bestaat met dezelfde of recentere wijzigingsdatum.
  Bijvoorbeeld: # find /sbin -ename "f*" -exec cp { } /home/ben \;
mv [-opties] bron bestemming Wordt gebruikt om bestanden te verplaatsen van de éne naar de andere locatie. Kan ook gebruikt worden om de naam van een bestand te wijzigen
Bijvoorbeeld: # mv /etc/passwd /etc/passwd.bck
rm [-opties] bestandsnaam Wordt gebruikt voor het verwijderen van bestanden. De standaard instelling is dat directories niet verwijderd kunnen worden.
  -f -force: Forceert het verwijderen (ook directories) en vraagt nooit om bevestiging.
  -i -interactive: Vraagt de gebruiker bevestiging (standaard instelling Linux)
  -r -recursive: Verwijdert ook de inhoud van directories en subdirectories
touch [-opties] bestandsnaam Maak op huidige locate een nieuw leeg bestand aan (zie man voor opties)
mkdir [-opties] naam Gebruikt om directories aan te maken
rmdir [-opties] naam Gebruikt om directories te verwijderen. Deze moeten wel leeg zijn, gebruik anders het commando # rm -rf

Naar index

Meer veelgebruikte commando's
Kort overzicht van nog enkele elementaire Linux-commando's met korte omschrijving (zie verder de man pages):

cal # cal 2007 geeft kalender van 2007 weer, # cal 9 2007 geeft kalender van september 2007
cat Geeft de inhoud van een bestand weer
clear clear screen
date Weergave en instellen van datum en tijd. Syntaxis voor instellen is # date MMDDhhmm[CC][YY][.ss] CC=eeuw, ss = seconden.
Uitsluitend numerieke waarden gebruiken: # date 05011815.24 = 01 mei 18 uur 15 en 24 seconden, huidig jaar
df Geeft vrije ruimte op schijf
dmesg Print de meldingen die gegenereerd zijn bij het opstarten van het systeem
du Geeft ruimte gebruikt door gespecificeerde bestanden en directories weer
file Geeft bestandstype weer, bijv. # file /etc/passwd output = /etc/passwd: ASCII text
free Toont hoeveel werkgeheugen nog vrij is.
head Print gespecificeerde aantal beginregels van bestand. Default 10 lijnen. Specificeer bijv.; # head -n15 /etc/passwd
ifconfig  Toont huidige instellingen van de netwerkinterface. Zie # man ifconfig voor opties voor instellen netwerkinterface.
logname Geeft weer onder welke naam u ingelogd bent op het systeem
lpr # lpr /etc/hosts, druk bestand hosts af op standaardprinter. # lpr -#100 /etc/hosts, druk bestand 100x af.
sort Sorteert de inhoud van een tekstfile.
uname Geeft informatie over het systeem. Gebruik uname -a voor alles in volgorde -s kernelnaam, -h hostnaam, -r kernelrelease, -v kernelversie, -m machinenaam, -p processortype, -i hardwareplatform, -o OS
tail Print gespecificeere aantal eindregels van bestand. Default 10 lijnen, zie ook head.
who Toont wie momenteel ingelogd is op syteem

Naar index

Terughalen en aanvullen van commando's
Hiervoor levert de shell de history-functie. De history-functie bewaart eerder gebruikte commando's in het history-bestand ~/.bash_history en hierdoor is het zelfs mogelijk commando's uit vorige sessies terug te halen. Dit kan d.m.v. de up-cursor toets.
Maar ook met reverse search via Ctrl-R wat resulteert in een prompt (reverse-i-search)`':_  Aan deze prompt begint u te typen met het gezochtte commando en de shell zal na elke letter autocomplementeren naar het eerste eerder gegeven commando dat begint met de ingetypte letters.
Om verder terug tegaan herhaal Ctr-R. Naast achterwaarts zoeken kan de shell ook autoaanvullen bij het invullen van een commando d.m.v. de Tab-toets. Als er teveel manieren zijn om het commando aan te vullen krijg je een beep.
Druk nog een keer Tab om alle mogelijke aanvullingen weer te geven.
De shell is ook in staat om namen aan te vullen, als tekenreeks begint met ~ zoekt het gebruikersnamen, met @ computernamen en met $ namen van variabelen.

Shell commando's en variabelen
Een shell-variabele is een naam waaraan de shell de waarde van een bepaald gegeven gekoppeld heeft. Bij het inloggen worden een aantal systeemvariabelen geactiveerd vanuit het opstartscript van de shell. Je kunt de waarde van een variable bekijken met het commando: # echo $naam_variable en voor een overzicht van alle variabelen het commando: # set . Het is ook mogelijk zelf variabelen te definiëren: # naam_variabele=waarde_variabele . Deze variabele gaat verloren zodra uitgelogd wordt. Om automatisch definiëren bij het inloggen deze definitie toevoegen in bestand ~/.bash_profile

pixy pixy pixy pixy pixy
Hier volgen enkele variabelen die tijdens het inloggen worden gedefiniëerd:
PATH Het zoekpad wat doorzocht wordt wanneer een naam van een programmabestand ingegeven wordt.
PS1 Primaire prompt. Er kan een bepaalde tekst ingesteld worden met PS1="nieuwe_prompt" of met speciale tekens:
  \d datum \v Bash-versie
  \h Hostnaam van computer \V Bash-release
  \H Volledige DNS-naam computer \w volledige naam huidige directory
  \s Naam van de shell \W Korte naam huidige directory
  \t tijd \# volgnummer huidig commando
  \u gebruikersnaam \S # als root ingelogd is, $ voor anderen

Commando's definiëren met 'alias'
Alias
is een mogelijkheid die de shell biedt om eigen commando's te definiëren. Geef als commando:
# alias jecommando='commando met argumenten'
De aanhalingstekens zijn nodig zodat het als één geheel geïnterpreteerd wordt. Bijv.: # alias rm='rm -f' . Hiermee is het commando rm geredefiniëerd, zodat er per default geen bevestiging meer gevraagd wordt.

Naar index

Basisvaardigheden Algemeen

Eenvoudige Teksteditor VI
De 'oer-editor' die voorkomt op alle Linux distributies. Niet erg gebruikersvriendelijk, maar als je met VI kunt werken ben je instaat om op elk Linux- en Unixsysteem ASCII-bestanden aan te maken en te bewerken.
VI wordt opgestart met commando: # vi en VI zal openen met helptekst. Ook kan VI geopend worden met een bestand door commando: # vi bestandsnaam .
Per default opent VI in 'commando-modus' en alle tekens die je ingeeft worden geïnterpreteerd als commando's.
Voor het invoeren van tekst moet er eerst naar de 'input-modus' gewisseld worden door het commando: #i . Gebruik de 'ESC toets' om terug te gaan naar commando-modus.

pixy pixy
De meest belangrijke commando's (in commando-modus):
ESC Activeert de commando-modus
:wq Sluit VI af en bewaar alle wijzigingen, hetzelfde als commando Shift-zz . Als je het bestand nog geen naam had gegeven gebruik dan :wq bestandsnaam .
:q! Sluit VI af zonder wijzigingen op te slaan.
i Activeert de input-modus en voeg een teken toe op de positie waar de cursor zich bevindt
dd Verwijdert de huidige regel. Wordt in buffer opgeslagen. Zie commando p
:17d Verwijdert regel 17. Wordt in buffer opgeslagen. Zie commando p
:17y Kopieert regel 17 en slaat in buffer op. Zie commando p
:17,19y Kopieert regel 17-19 en slaat in buffer op. Zie commando p
p Insert bufferinhoud op cursor positie
:se nu Set number; geeft regelnummers weer
:se ai Set autoindent, zorgt ervoor dat elke regel ingesprongen wordt op hetzelfde niveau als de regel erboven
:help De meest uitgebreide hulp over VI

Voor permanent instellen van opties zoals, :se nu , deze opnemen in het bestand in de users homedirectory ~/.exrc

Naar index

Opstartbestanden en Runlevel
Opstartbestanden worden ingelezen bij het opstarten van de shell en worden gebruikt om aliassen en variabelen te definiëren.
Hieronder twee bestanden in de volgorde dat ze ingelezen worden:

pixy pixy
/etc/profile De instellingen in dit bestand zijn geldig voor iedere gebruiker op het systeem van de bash-shell. De commando's die hierin staan worden tijdens het inloggen uitgevoerd.
~/.bash_profile Hierin kunnen de instellingen gedaan worden, die alleen van toepassing zijn voor de gebruiker bij wie dit bestand in de homedirectory voorkomt. Dit bestand kan ook voorkomen met de naam ~/.bash_login of ~/.profile.

De volgende twee bestanden worden alleen ingelezen wanneer er een nieuwe shell wordt opgestart met het commando: # bash .
De waarden die in deze twee bestanden worden gedefiniëerd, gaan verloren op het moment dat de nieuwe shell wordt afgesloten.
Er moet dus naar gestreefd worden om alle instellingen te definiëren in /etc/profile en ~/.bash_profile.

/etc/bashrc Hierin staan opnieuw instellingen voor het hele systeem
~/.bashrc Hierin staan de instellingen die alleen uitgevoerd worden voor de gebruiker waarbij dit bestand in de homedirectory voorkomt.

Runlevel
Met het commando: # init kun je het gewenste runlevel opgeven waarmee het systeem moet opstarten.
Runlevel 3 is het meest gebruikte level zijnde de Full Multiuser Mode (zie voor detail /etc/inittab). Hierbij is runlevel 0 gelijk aan halt en runlevel 6 aan reboot.
Van dit commando moeten voor de veiligheid de permissies zo gewijzigd worden dat alleen root dit uit kan voeren (Zie hieronder Shutdown en beveiliging).

Naar index

Linux Afsluiten en Logout
Afsluiten kun je met Linux niet zomaar doen door de computer uit te zetten.
Linux schrijft gegevens niet direct weg, maar bewaart ze tijdelijk in de cache (werkgeheugen) om ze op een geschikt moment weg te schrijven.
Als de computer gewoon uitgezet wordt verlies je dus gegevens. Ook moeten andere gebruikers van het systeem in de gelegenheid gesteld worden zich af te melden en hun gegevens op te slaan.
Hiervoor is er het commando: # shutdown, dit commando geeft alle ingelogde gebruikers een melding dat het systeem down gaat. Daarna krijgen alle processen een signaal zodat ook deze de data op kunnen slaan. Het commando heeft diverse opties:

pixy pixy
shutdown -r mm De optie -r is voor reboot na shutdown. De parameter mm specifeert het aantal minuten tot shutdown.
shutdown -r now De parameter now zorgt nu voor een onmiddelijke reboot. Het commando reboot heeft hetzelfde resultaat. Kan ook met Ctrl-Alt-Del, maar deze mogelijkheid kan beter in '/etc/inittab' uitgezet worden.
shutdown -h now De optie -h is voor halt en now zorgt voor een onmiddelijke shutdown, net zoals het commando: # halt.
shutdown -h hh:mm Met argument hh:mm kan de tijd gegeven worden waarop het commando: # shutdown uitgevoerd wordt.

Logout
Als een gebruiker uit wil loggen zonder het systeem te sluiten kan dit met het commando: # logout

Naar index

Shutdown en beveiliging
Omdat het niet wenselijk is dat elke gebruiker het systeem met commando: # shutdown af kan sluiten is het beter dit d.m.v permissies te regelen zodat het commando alleen uitgevoerd kan worden door de gebruiker root en/of een gebruiker van de groep root.
Hetzelfde geldt voor de commando's: # halt en # reboot. Ook is het beter de toetsen combinatie Ctr-Alt-Del in /etc/inittab te blokkeren door een # te plaatsen voor de commandoregel ca::ctraltdel:/sbin/shutdown -t3 -r now
Op de in deze site beschreven web- en fileserver krijgt alleen Admin (root) toegang tot de prompt dus bovenstaande is hier geen issue.

Naar index