Author      : Ravecool
Date         :
29-8-02
Subject     : Een introductie naar Linux 2



5. Shell scripts  
  5.1 De interpreter
  5.2 Een shell script
  5.3 Scripts met command line parameters
  5.4 Meta en Shell characters
  5.5 Geavanceerde scripts
  5.6 De introductie van awk
  5.7 Nog even vluchtig Alias
6.Netwerken  
  6.1 Netwerk hardware installeren
  6.2 Het verkrijgen van onze eigen IP
  6.3 Device LO
  6.4 Zorgen dat mensen niet op jouw computer komen
  6.5 FTP en de FTP servers
  6.6 Flirten met Samba
  6.7 Apache
  6.8 Sendmail
3. File systems  
  7.0 File systems
  7.1 Drives en namen er van. (let op ingewikkeld)
  7.2 Mount
  7.3 Netwerk Mappen koppelen met mount

 

 

5. Shell scripts
 
In deel 1van dit document hebben we het al gehad over opdrachten die je op de prompt kunt uitvoeren maar deze kan je ook automatiseren door middel van een script het principe lijkt een beetje op dat van een BATCH script onder DOS en is gewoon een bestand die deze opdrachten bevat. Met een script en het recht heeft om uitgevoerd te worden door een gebruiker kan een hele reeks aan commando’s die normaal op de Shell prompt uitgevoerd worden gemakkelijk geatomischeerd worden. Tevens zal ik in dit hoofd stuk nog een aantal shell opdrachten introduceren die niet terug te vinden zijn in deel 1 van dit hoofd stuk

Veel programma's maken behalfe de gewone uitvoerbare bestanden gebruik van shellscripts een crontab de scripts die die crontab op een bepaalde tijd moet uitvoeren voor de gebruiker zijn in fijte gewoon bash scripts. At ook trouwens dit is een soort gelijk programma dat je programma's op een bepaalde tijd kan uit laten voeren maakt hier ook gebruik van...

 

 

 

 

 

5.1 De Interpreter
 
Een shell script draait met een zogenaamde interpreter dit is /bin/sh, juist ja de sh shell de volgende regel moet altijd in een regel aanwezig zijn,,
 
#!/bin/sh
 
Dit geeft aan dat het gaat om een shell script.. Niet alleen de /bin/sh shell kan als een interpreter gebruikt maar elke aan wezige shell kan worden aan geroepen want de ingebrouwde opdrachten van een shell kunnen vershillen, deze zogenaamde build in opdrachten zijn op te vragen door 'help' in te typen onder de prompt waar je je in bevind, ook kan je overwegen de 'man' opdracht te gebruiken die staat voor het engelse woord manual.

 

 

 

 
5.2 Een shell script
We gaan er proberen wat van te maken ons eigen script wat zullen we maken ?. Ahh ik weet het al we gaan een script bouwen dat voor ons de output van de opdracht “id “ voor ons..
in een bestandje zet:
 
^D staat voor CTRL+D
 
bash-2.05$ cat ./idshell.sh
#!/bin/sh
echo "Puting id output into file /tmp/idoutput.txt "
/usr/bin/id >/tmp/idoutput.txt
echo "Done !!!!"
echo "starting tail to get the output of the file"
tail /tmp/idoutput.txt
^D
 
bash-2.05$ chmod +x idshell.sh #maakt ons script uitvoerbaar
bash-2.05$ ./idshell.sh
 
bash-2.05$ ./idshell.sh
Puting id output into file /tmp/idoutput.txt
Done !!!!
starting tail to get the output of the file
uid=502(ad) gid=502(ntools) groups=502(ntools),22(cdrom),43(usb),80(cdwriter),81(audio),501(xgrp)
bash-2.05$
 
Je ziet hier duidelijk de vereiste interpreter /bin/sh en de shell commando’s die ik je in deel 1 van dit document al heb geleerd. Er staat er alleen eentje bij waar ik nog niet over verteld heb en dat is het commando echo, Dit heeft het zelfde doel als echo in een BATH bestand onder DOS omstandigheden het tovert namelijk een tekst op het scherm.  Wat de uitwerking van dit script is mag voor iedereen duidelijk zijn neem ik aan. Want om het simpel te zeggen word de tekst output die normaal van de opdracht “id” op het scherm geprint word getoverd nu in een bestand geplaatst en dan wel het bestand /tmp/idoutput.txt. Vervolgen leest de opdracht “tail” de laatste en tevens enige regel in het bestandje en tovert deze op het scherm.
 
 
 
5.3 Scripts met command line parameters
 
Wat heel erg handig zou zijn is dat je scripts een command line parameter mee kan geven ?, Wel nu dat is mogelijk zo kan je als we het script enig zins aanpassen zelf bepalen welke opdracht uitgevoerd moet worden en waar van de tekst output in een bestand gestopt moet worden zo als het voorbeeld hier boven. De shell script maakt gebruik van een “$” dollar teken met een nummer er achter wat aangeeft wat het nummer van het argument (command line parameter) is. Bijvoorbeeld
 
./idshell.sh Hello Wereld Hoe Gaat Het
 
Programma = idshell.sh
$1 = Hello (argument 1)
$2 = Wereld  (Argument 2)
$3 = Hoe (argument 3)
$4 = Gaat (argument 4)
$5 = Het (argument 5)
 
Dit wetende kunnen we ons script zo aanpassen dat we zelf kunnen weten waar we de output van in een bestand willen zien en welk bestand later gelezen word door de opdracht “tail”. We maken een nieuwe shell script.
 
^D staat voor CTRL+D
 
bash-2.05$ cat ./idshell2.sh
#!/bin/sh
echo "Puting id output intro file /tmp/idoutput.txt "
$1 > $2
echo "Done !!!!"
echo "starting tail to get the output of the file "
tail $2
 
bash-2.05$ chmod +x idshell2.sh  #maakt ons script uitvoerbaar
bash-2.05$ . /idshell2.sh "uname -a" /tmp/uname.txt
Puting id output intro file /tmp/idoutput.txt
Done !!!!
starting tail to get the output of the file
Linux mybox.linux.com 2.4.8-26mdk #1 Sun Sep 23 17:06:39 CEST 2001 i586 unknown
bash-2.05$
 
Gaaf man onse parameters hebben hun werk gedaan de versie van mijn Linux Box (uname –a) is in het bestandje ($2)  /tmp/uname.txt geplaatst en de opdracht “tail” laat daar weer de output van zien.
 
 
5.4 Meta en Shell characters
 
Voor de shell prompt zijn er een aantal tekens die je als bevriend kan beschouwen deze kunnen je een groot aantal opdrachten namelijk uithanden nemen en dat
KAN je een hoop typ werk  kosten. Kijk maar naar het tabel

 

Teken     Beschrijfing  
>     voeg toe aan  
<     voeg toe van  
|     Halt volgende Opdracht  
;     Halt volgende Opdracht  
$<register>     Wijst naar een waarde in het register  
>>     Append naar  
         
         
 
Dit zijn intersante tekens die je op de shell prompt ook kan gebruiken voor idshell.sh  versie 1 en 2 bebruikte we teken “>” om een waarde naar een tekst bestand te toveren maar dit teken maakt het bestand telkens helemaal leeg en stopt dan de tekst er in het kan ook nog anders namelijk met de tekens  “>>” dit is een append naar commando en zal de tekst van de opdracht netjes op een volgende regel in het bestand plaatsten zodat het bestand niet telkens 1 regel bevat maar net zo veel als het aantal keren dat het “>>” commando is toe gepast laten we idshell.sh  ietsjes veranderen en inplaats van “>” nu “>>” toepassen en kijken wat het verschil is.
 
^D = CTRL + D
 
bash-2.05$ cat ./idshell.sh
#!/bin/sh
echo "Puting id output intro file /tmp/idoutput.txt "
/usr/bin/id >> /tmp/idoutput.txt
echo "Done !!!!"
echo "starting tail to get the output of the file"
tail /tmp/idoutput.txt
^D
 
bash-2.05$ chmod +x ./idshell.sh
bash-2.05$ ./idshell.sh
Puting id output intro file /tmp/idoutput.txt
Done !!!!
starting tail to get the output of the file
uid=502(ad) gid=502(ntools) groups=502(ntools),22(cdrom),43(usb),80(cdwriter),81(audio),501(xgrp)
uid=502(ad) gid=502(ntools) groups=502(ntools),22(cdrom),43(usb),80(cdwriter),81(audio),501(xgrp)
bash-2.05$
 
Kijk dit is nu wat ik bedoelde met append eerst word het einde van het bestandje op gezocht en dan er nog een regel aan vast geplakt met de nieuwe output die we in het bestandje willen hebben.
 
Dan hebben we nog $<register> wat wijst naar de environment waar ik in deel 1 al wat over verteld heb. Ik heb toe ook verteld dat je zelf registers naam kan maken bijvoorbeeld Register Ravecool als je die wilt aanmaken doe je dat op de volgende namier..
bash-2.05$ Ravecool=Cool
 
De waarde van register Ravecool is nu “Cool” met een shellscript kunnen we deze opdrachten ook weer terug halen en bewerken en later weer terug zetten kijk maar naar het volgen de script. Er zij 2 command line parameters in verwerkt namelijk $1 is de naam van het Register en $2 de waarde die het register moet krijgen vervolgens drukt de opdracht “echo” de waarde uit op het scherm.
 
#!/bin/sh
export $1=$2
echo | export | grep RAVE
 
bash-2.05$ chmod +x ./reg.sh
bash-2.05$ ./reg.sh RAVE ID
export RAVE="ID"
bash-2.05$
 
Kijk dit is gaaf we hebben nu de waarde van een register gezet en ook nog eens terug geroepen in zo’n register kan je super veel informatie opslaan die je soms wel eens nodig kan hebben voor het verwerken van je script. We hebben gelijk ook maar gebruik gemaakt van het “|” teken dit zeg halt volgende opdracht in de eerste instantie (in ons script) word met export de lijst met registers opgevraagt
(B.v)
 
bash-2.05$ export
declare -x HISTSIZE="1000"
declare -x HOME="/home/ad"
declare -x HOSTNAME="mybox.linux.com"
declare -x HOSTTYPE="i586"
declare -x INPUTRC="/etc/inputrc"
declare -x LANG="nl"
declare -x LANGUAGE="nl_NL:nl"
declare -x LC_COLLATE="nl_NL@euro"
declare -x LC_CTYPE="nl_NL@euro"
declare -x LC_MESSAGES="nl_NL@euro"
declare -x LC_MONETARY="nl_NL@euro"
declare -x LC_NUMERIC="nl_NL@euro"
declare -x LC_TIME="nl_NL@euro"
declare -x LESS="-MM"
declare -x LESSKEY="/etc/.less"
declare -x LESSOPEN="|/usr/bin/lesspipe.sh %s"
declare -x LOGNAME="ad"
declare -x  RAVE="ID"
declare -x LS_COLORS="no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.tar=01;31:*.tgz=01;31:*.tbz2=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lha=01;31:*.zip=01;3
1:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35:*.xpm=01;35:*.png=01;35:*.tif=01;35:*.tiff=01;35:"
declare -x MACHTYPE="i586-mandrake-linux-gnu"
declare -x MAIL="/var/spool/mail/ad"
declare -x NLSPATH="/usr/share/locale/%l/%N"
declare -x OSTYPE="linux-gnu"
declare -x PATH="/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/games"
declare -x PS1="\\s-\\v\\\$ "
declare -x PWD="/home/ad"
declare -x SECURE_LEVEL="2"
declare -x SHELL="/bin/bash"
declare -x SHLVL="1"
declare -x TERM="ansi"
declare -x USER="ad"
bash-2.05$
 
En de waarde van het register “RAVE” word met de volgende opdracht grep genaamd uit die lijst gevist en op het scherm getoverd...

 

 

5.5 Geavanceerde scripts
 
Nu we dit allemaal weten  kunnen we ook moeilijke scripts gaan maken dat een combinate is van alle opdrachten die tot nu toe hebt geleerd het ziet er een beetje wakky uit maar Ik zal je ook de output laten zien en er een uitleg over geven
 
^D staat voor CTRL + D
 
bash-2.05$ cat ./ad.sh
#!/bin/sh
DIR=/tmp/k
mkdir $DIR
id >> $DIR/$1
tail $DIR/$1 | grep $USER
cd $OWD
rm -f $DIR/$1
rmdir $DIR
echo "Klaar !!!"
^D
 
bash-2.05$ chmod +x ./ad.sh
bash-2.05$ ./ad k.txt
 
bash-2.05$ ./ad.sh k.txt
uid=502(ad) gid=502(ntools) groups=502(ntools),22(cdrom),43(usb),80(cdwriter),81(audio),501(xgrp)
Klaar !!!
bash-2.05$
 
Kijk eens naar de code listing van het script wat denk je dat het doet ?……………………. Juist het maakt een register aan genaamd DIR dat de waarde “/tmp/k” in zicht heeft vervolgens word deze directory aangemaakt door de opdracht mkdir $DIR dit popt de waarde van DIR uit het register en maakt dus /tmp/k aan vervolgens word de tekst ouput van de opdracht “id” naar het het bestandje k.txt gecopyeert ($1) en word door een combi van tail en grp de text ad (waarde van register $USER) uit het bestand gefilterd en op het scherm weergegeven. Vervolgens word het bestandje k.txt gewist en daarna ook de directory /tmp/k ($DIR) en geeft de opdracht echo aan dat het script klaar is met uitvoeren.

 

5.6 De introductie van awk

Awk is net als grep een tool tekst te filteren alleen gaat deze nog iets verder dan grep want het leest de uitvoer van een bestand en filtert dat naar de wensen van de geruiker.. Omdat te bewijzen maken we het bestandje test aan met cat

[^D staat voor ctrl + D]

[ad@localhost ad]$ cat ./test
Script_Kiddy onervaren Windows
Cracker gemiddeld Windows/unix
Hacker Zeer_ervaren Windows_linux
^D

Oke nu het bestandje bestaat gaan we aan de gang awk kan een regel waar een bepaalde tekst in voorkomt direkt op het scherm toveren dit doe je door de zoek tekst tussen 2 / te plaaten zo als dit /zoektekst/ met daarna een spatie en het bestand waar het uit gefiltert moet worden laten we het testen..

[ad@localhost ad]$ awk /Hacker/ test
Hacker Zeer_ervaren Windows_linux
[ad@localhost ad]$

Hier zie je de lijn waar word verteld wat de skilz van een hacker zijn en geen andere dat komt door ons filter, maar hey dit is natuurlijk niet de enige optie die awk je kan bieden je kan ook bepaalde kollomen uit het bestand filteren en op het scherm toveren hier

[ad@localhost ad]$ awk '{print $1," ",$3}' test
Script_Kiddy   Windows
Cracker   Windows/unix
Hacker   Windows_linux

[ad@localhost ad]$

Zo zie je maar filters zijn op de command prompt goed te gebruiken dit programma kan in samen werking met grep heel goed weken hier hebben we weer een gaaf scriptje voor je..

 

bash-2.05$ cat ./awkcheck.sh
#!/bin/sh
awk '{print $1," ",$3}' test | grep hacker >> outputfile
echo "Done !!"
^D
 
bash-2.05$ ./awkcheck
Done !!
bash-2.05$

Het bestandje outputfile bevat nu de tekst

bash-2.05$ tail outputfile
Hacker Windows_linu
bash-2.05$
 
Zijn we niet goed met zn allen ?..

 

 

5.7. Nog even vluchtig Alias

Als je als gewone gebruiker heb tot de /bin /sbin of /usr/bin en /usr/sbin directory's om je shellscript in te plaatsen heb je nog de prompt opdracht alias tot je beschikking hier mee kan je een alias aan maken voor een bepaalde opdracht of een script die je geschreven hebt de aliasen staan opgeslagen in het verboren bestandje .bashrc standaard bevat deze geen aliassen maar die kan je er zelf aan toevoegen want als je een alias aan maakt en die niet in .bashrc plaatst word deze de volgende keer dat je op het systeem inlogt niet meer herkent.. Laten we even kijken naar .bashrc

[ad@localhost ad]$ cat .bashrc
# .bashrc

# User specific aliases and functions

# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
[ad@localhost ad]$

Zo te zien staan er nog geen aliasen in het bestandje dat gaan we dan zo doen eerst laat ik je zien hoe je zon allias aanmaakt op de prompt dat doe je als volgt hier bij ga ik uit van ons script file wat we hier boven hebben geschreven genaamd awkcheck.sh

alias <alias voor je opdracht>=<jouw opdracht die er aan gekoppeld moet worden>

[ad@localhost ad]$ alias drol=$PWD/awkcheck

$PWD staat voor de werkdirectoy in het register weet je nog ?,de alias is nu ds gemaakt en kan uitgevoerd worden laten we het even proberen ..

[ad@localhost ad]$ drol
Done !!
[ad@localhost ad]$

Yes !! het werk goed. Weet je dat de opdracht DIR zelf ook een alias is voor ls -l ? zo zijn er nog meer aliasen die op gewone opdrachten lijken. Oja nog 1 opmerking als er een spatie zit in de opdracht die uitgevoerd moet worden bijvoorbeeld ifconfig eth0 192.168.0.1 moet worden uitgevoerd , plaats dit dan tussen 2 aanhalings tekens (") anders krijg je foutmeldingen dus zo.

[ad@localhost ad] alias drol="ifconfig eth0 192.168.0.1"

Okey dan word het nu tijd om onze allias op te slaan in bashrc dit kan op 2 manieren zo

(Let op de ;)

[ad@localhost ad]$ echo ;alias >> .bashrc

of zo

(let op de aanhalings tekens)

[ad@localhost ad]$ echo "alias drol=$PWD/awkcheck" >> .bashrc

Tot zo ver het hoofdstuk over shellscripts.. bedankt voor het lezen

 

 

 

6. Netwerken

Linus Torvalds begon in 1991 met de opvolger van minux dat geschreven werd door professor Tannaenbaum en moest een open OS worden dat gratis TCP/IP ondersteunde dit OS zou Linux gaan heten is was dus een operating systeem dat een rol zou gaan vervullen als netwerk OS. Naar mate de vorderingen van Linux verder vorderde werd de OS erg populair onder Unix gebruikers die dan ook massaal over stapte naar het jonge OS met een pinguin als mascotte.

Een netwerk is zo als het woord al zegt een opstapeling van meerde computers die met elkaar praten maar dat kunnen ze niet net als mensen door trillingen in de lucht aan te brengen daarom zijn er speciale kabels aan gelegd waar door computers met elkaar binnen praten deze kabels zijn de zogenaamde PATH kabels en de UTP kabels. De hardware waar de kabels in gemonteerd worden netwerk kaarten geheten vertalen alle digitale informatie die hij van de ander computer(s) binnen krijgt in mensen taal. We gaan van af hier verder met waar we gebleven waren en dat brengt ons naar het hoofdstuk 6 en dat zal gaan over netwerken. Lokaal is linux een geweldig os maar het is gemaakt om te hosten daarin vind linux zijn kracht in en is het voor bedoeld een multi user platform zo als systeembeheerders wel eens met een moeilijk woord willen zeggen. Dit hoofd stuk is een doe project dat in tegenstelling tot deel 1van deze tutorial want die bezit alleen maar leer teksten. Dit is een leuk e oefening voor jou als toekomstige netwerk beheerder op een linux systeem want we gaan namelijk nu samen stap voor stap een Netwerk op bouwen en onderhouden.

 

6.1 Netwerk hardware installeren

Goed het mag duidelijk zijn dat er als je een netwerk gaat bouwen dat je de netwerk computers van de nodige hardware moet voorzien. De benodigd heden zijn hier natuurlijk voor het netwerk kaartje en de UTP kabel voor een verbinding via een HUB raad ik je de blauwe UTP kabel aan en voor een 1 op 1 Netwerk (Windows <<<>>> LINUX 2pc's) een orangje cross kabel. Voor ons lan kaarte mag je gewoon een standaard 10/100Mbit kaartje kopen vraag er maar bij in de winkel. In mijn tutorial over Microsoft netwerken deel 1 kan je lezen hoe je een netwerk kaart inbouwd in een pc. Als dat gedaan is gaan we het volgende doen volg op de windows pc de stappen die nodig zijn om een MS file/print shared netwerk te bouwen die beschrijving vind je terug in deel 2 van mijn tutorial over het installeren van een netwerk op windows stel op die andere computer het ip 192.168.10.1 in. Oke dan zullen we nu onse Linux pc ook de hardware laten installeren zo als we dat eerder al bij windows deden. Zet je computer aan met nieuwe netwerk kaart in het slot op het moederbord (kortom ingebouwd) en de netwerk kabel verbonden tussen de twee pc's. De kans is zeer groot dat linux automatish al je hardware gevonden heefd dan kan je onderzoeken door na dat je ingelogt bent het volgende te typen

(# is weer de Bash prompt uit deel1)

 

# dmesg

 

------ Stukje van uitvoer van opdracht -------
8139too Fast Ethernet driver 0.9.18a
eth0: RealTek RTL8139 Fast Ethernet at 0xc1a52000, 00:50:bf:d6:2f:a1, IRQ 11
eth0: Identified 8139 chip type 'RTL-8139C'
------ Stukje van uitvoer van opdracht -------
 
Als je zo iets als dit zie kan je er van uitgaan dat de hardware met het booten (opstarten) van je pc al is gevonden door de prachtige Plug & play functies die heel goed werken op de moderne linux distrobuties. Als dat het geval is kan je direct door naar 5.2 om het IP adress op te zetten van ons netwerk. Als het echter niet het geval is gaan we nog even verder stoeien met de hardware configuratie ... Is dit niet het geval lees dan documentatie die over de installatie gaan want waarschijnlijk moet je dan eerst nog drivers compilen en (uitvoerbaar maken) en door middel van modprobe het device op het systeem installeren

 

----------- Waarschijnlijk zo iets --------------------
cd /etc
vi conf.modules
alias eth0 rtl8139 (toevoegen aan bestand)
modprobe rtl8139
 

6.2 Het verkrijgen van onze eigen IP

In een Lan of ethernet netwerkje is een IP adres vaak static  dat wil zeggen dat wanneer je ook inlogt op een andere pc je ip adres altijd het zelfde zal zijn. Als je inlogt bij je ISP dat is je internet provider hebben ze vaak een dynamic ip voor je en dat is tegen stelling op het static ip wel buigzaam en nooit het zelfde. Oke in hoofdstuk 5.1 zag je de volgende regel staan

 

   alias eth0 rtl8139 (toevoegen aan bestand)

 

Dat betekend dat het netwerk word geïdentificeerd als ethernetwerk0 (eth0) en we willen voor deze computer een ip adres instellen maar we moeten weten wat het netwerk is en dat weten we nu dus. Om het IP in te stellen gebruiken we het gereedschap ifconfig en staat afgekort voor interface config maar dat is best wel in gewilkkeld noem het maar gewoon ifconfig. Het programma ifconfig gebruikt in dit geval de volgende syntax (of te wel opdracht regel)

   Ifconfig <netwerknaam> <ipadress>

Het netwerknaam weten we onder tussen al dat is Eth0 en het IP adres word een mooie namelijk 192.168.10.1 en zo stel je dat in.

   ifconfig eth0 192.168.10.1

Als het goed is zal jou linux computer in het netwerk Eth0 nu het ip adres 192.168.10. 1 bezitten om dat te kunnen controleren kan je ifconfig ook zonder opdracht regel draaien om de status van je netwerk hardware te bekijken…

 

------------- Stukje van mijn opdracht prompt ---------------------
[root@linux johnny]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:50:BF:D6:2F:A1
          inet addr:192.168.10.1  Bcast:192.168.10.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1806 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1811 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:108802 (106.2 Kb)  TX bytes:198803 (194.1 Kb)
          Interrupt:11 Base address:0x2000
 
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:451 errors:0 dropped:0 overruns:0 frame:0
          TX packets:451 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:39483 (38.5 Kb)  TX bytes:39483 (38.5 Kb)
 
[root@linux johnny]#
------------------------------------------------------------------------------------
 

Oke mocht er nu alleen lo voorschijn inplaats van eth0 en lo (lo staat voor loop back adaptor en heeft standaard het IP 127.0.0.)dan is er iets fout gegaan zeer waarschijnlijk is de hardware niet goed aangesloten op het systeem of de installatie van de software is niet goed verlopen is dit laatste het geval ga dan nog even terug naar 6.1 om de hardware goed te instaleren. Ik ga er van uit dat het ip adres op de Windows of in ieder geval de ander computer{s} al is in gesteld zo niet lees dan MS netwerken voor Windows deel 1 en deel 2. we gaan nu ping gebruiken (lees deel 1 van dit document) om te kijken of we een verbinding hebben met de computer aan de andere kan van het netwerk in dit geval is het ip van de andere computer 192.168.10.2 ..

 

------------------------------------------------------------------------------------------------------

[johnny@linux johnny]$ ping 192.168.10.2
PING 192.168.10.2 (192.168.10.2) from 192.168.10.8 : 56(84) bytes of data.
64 bytes from 192.168.10.2: icmp_seq=0 ttl=128 time=255 usec
64 bytes from 192.168.10.2: icmp_seq=1 ttl=128 time=226 usec
64 bytes from 192.168.10.2: icmp_seq=2 ttl=128 time=222 usec
64 bytes from 192.168.10.2: icmp_seq=3 ttl=128 time=214 usec
64 bytes from 192.168.10.2: icmp_seq=4 ttl=128 time=222 usec
 
--- 192.168.10.2 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/mdev = 0.214/0.227/0.255/0.023 ms
[johnny@linux johnny]$
------------------------------------------------------------------------------------------------------

 

Yup ! we hebben een netwerk maar nu moeten we nog even onze netwerk server instaleren en dat gaan we doen in de volgende hoofdstukken dus lees verder.

6.3 Device LO

Voor elk netwerk is een device allias zo als eth0,eth1,lo etc maar LO is echte een speciale omdat dit niet gebruikt word om eenverbinding met een ander netwerk op te bouwen en te onderhouden maar om een verbinding met zich zelf op te bouwen daar voor word standaard het IP adres 127.0.0.1 toegewezen dit is reuzen handig als je programeur bent en je eigen netwerk software wilt testen, ook windows kent dit priciepe LO staat trouwens voor Loopback adaptor. Het is mogelijk om jouw IP adres voor je loopback adaptor te veranderen maar dat is heel onlogish en waarom zou je ? maar goed voor de ongelovigen onder ons laat ik zien hoe je dat doet..

[root@localhost ad]# /sbin/ifconfig lo 128.0.0.1

[root@localhost ad]# /sbin/ifconfig
eth0 Link encap:Ethernet HWaddr 00:50:BF:90:B5:D5
inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:342606 errors:1 dropped:0 overruns:0 frame:0
TX packets:8235 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:9 Base address:0xf800

lo Link encap:Local Loopback
inet addr:128.0.0.1 Mask:255.255.0.0
UP LOOPBACK RUNNING MTU:3924 Metric:1
RX packets:157 errors:0 dropped:0 overruns:0 frame:0
TX packets:157 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0

[root@localhost ad]#

Kijk nu is het IP veranderd maar dit raad ik je af !!!. even terug zetten
[root@localhost ad]# /sbin/ifconfig lo 127.0.0.1

 

6.4 Zorgen dat mensen niet op jouw computer komen  
Er zijn vier manieren om te zorgen dat er niet ingebroken word op je systeem dat is door middel van het veranderen van /etc/hosts of /etc/host.deny of een firewall als IPtables of IPchains gebruiken of gewoon je server software goed instellen... Dat laatste kan via linuxconf gerealiceerd worden de andere moet je gewoon met de hand doen en dat is niet moeilijk al lijkt het dat soms wel.

Als je last hebt van een hacker met het IP adres 192.198.0.5 dan kan je zorgen dat deze gelijk geweert word van je systeem als hij probeert een connectie aan te leggen door gebruik te maken van /etc/hosts.deny doe dan als root het volgende

[root@localhost ad]# echo "192.198.0.5" >> /etc/hosts.deny

Dit zorgt er dus voor dat 192.198.0.5 kan fluiten naar een connecty met jouw server maar het komt bijna niet voor dat je het ipadres van een hacker kent voor dat hij je aan gevallen heefd voor de andere gevallen gebuiken wij een firewall meestal word deze al standaard geinstalleerd dus kunnen we gelijk aan de gang de filewall die we gaan aansturen is IPtables omdat deze in de nieuwere kernels veel gebruikt word..

# /sbin/iptables -I eth0 -s 0/0 -p tcp --destination-port 0:23 -j DROP
# /sbin/iptables -I eth0 -s 0/0 -p udp --destination-port 0:23 -j DROP

Dit voorkomt dat er een verbinding gemaakt vanaf het ethernet kan worden naar onze telnet server on deze te kunnen laten lopen door een DoS aanval of een hack voor zowel het TCP als UDP protcol. (0/0 staat gelijk aan IP 0.0.0)

# /sbin/iptables -I eth0 -s 0/0 -p tcp --destination-port 23 -j DROP # /sbin/iptables -I eth0 -s 0/0 -p udp --destination-port:23 -j DROP

Dit zorgt er voor dat niemand meer vanaf jouw pc verbinding kan maken met een telnet server je kan --destination-port 23 ook veranderen in --destination-port 80 dan kan er niemand meer contact maken met een webserver of --destination-port 21 voor webservers jee moet wel weten welke poort bij welke service hoord.

 

6.5 FTP en de FTP servers

Boom ! okey yeah lets do it we gaan Wu-ftpd installeren dat staat voor Washington university  File Transfer Protocol Daemon of te wel de standaard ftp server die met de Linux distributie mee geleverd word. We gaan eerst controleren of hij net al ginstaleerd is want dat gebeurd met Linux maar al te vaak.
 
----------------------------------------------------------------------------------------------------------------
[root@linux ~]]# ftp localhost
Connected to localhost.localdomain.
220 linux FTP server (Version wu-2.6.1(1) Sun Sep 9 16:30:24 CEST 2001) ready.
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:johnny):
----------------------------------------------------------------------------------------------------------------
 
Ja hier draait hij dus al maar al zien we zo iets als dit of iets vergelijkbaars aan het volgende (want het kan verschillen per Distro)
 
[root@linux xinetd.d]# ftp localhost
ftp: localhost: connection refuced
ftp>
 
Is het programma niet geïnstalleerd dus gaan we dat even doen daar voor gebruiken we het programma RPM wat je een beetje kan vergelijken met Winzip op Windows. Het is een afkorting en staat voor RED HAT PACKAGE MANAGER het was ooit een geweldige uitvinding van Red Hat Linux want de pakketten kunnen na dat ze uitgepakt zijn zich zelf na het uitpakken naar hun eigen directory kopiëren en  installeren en het beste van allemaal configureren wat weer een heleboel werk scheeld. Alle Linux distributies maken nu gebruik van RPM packages en dat is wel zo makkelijk en compatible. Goed voordat we het pakket installeren moet je weten dat ik gebruik maak van Linux mandrake en dat het path naar mijn  RPM bestanden is
 
/mnt/cd-rom/Mandrake/RPMS
 
Ik geloof maar dat weet ik niet zeker hoor dat het bij Red Hat /mnt/cd-rom/Redhat/RPMS is maar je moet maar een proberen op je cd naar RPM bestanden te zoeken en waarschijn lijk is dat je hoofd directory voor RPM bestand. We zeggen nu gewoon dat als er verder RPMPATH ergens staat dat dat het path is naar de RPM bestandjes zie je echter TMPPATH dan is dat /tmp/rpm.
 
In mijn geval:::
                 RPMPATH: /mnt/cdrom/Mandrake/RPMS
                 TMPPATH: /tmp/rpm
 
OK dan zijn we er nu klaar voor typ bij je Bash prompt het volgende stukje in
 
(  (#) .. Root mag alleen RPM draaien je moet Root zijn )
 
export RPMPATH=<jouw RPMPATH>
export TMPPATH=/tmp/rpm
mkdir $TMPPATH (Denk aan het dollar teken)
cd TMPPATH
pwd
cd $RPMPATH
 
cp *wu* $TMPPATH
cd $TMPPATH
RPM –i *wu* <i Van install>
 
Opmerking ….
Mocht er iets niet goed gaan check dan de documentatie van RPM door `man rpm’ in te typen op de ($/#) prompt . en mocht je een fout krijgen check dan of je niet vergeten bent je cdrom te mounten (het is maar een tip)
 
 
Maar je kan het ook via je software manager installeren via Xwindows of een ander setup gereedschap maar dat is aan jou. Goed als de software is geinstalleerd kunnen we het testen via het start menu en kies voor uitvoeren of run net wat voor taal van Windows je hebt. En typ ftp <ip van de linux pc> als alles goed is gegaan moet je nu een login scherm van de ftp server te zien krijgen voer hier een gebruikers naam en een password in die je onder linux ook gebruik maar let op !!! met ROOT kan je niet in loggen op FTP.. Je kan nu testen of alles goed is gegaan in deel 1las je al over FTP commando’s dus lees dat nog eens door…

 

 

6.6 Flirten met Samba

10 jaar geleden begon Linux te flirten met samba dat is een packet dat er dus voor zorgt dat Microsoft en Linux met elkaar kunnen praten op het gebied van Microsoft netwerken. Was dit packet er niet dan kan je vanuit Windows wel inloggen op je Linux computer via het netwerk bijvoorbeeld op de FTP service of http server etc maar niet op Microsoft netwerk niveau.. Om er voor te zorgen dat linux commercieel aantrekkelijk bleef moest er een tool geschreven worden om Windows met een Unix systeem te kunnen laten netwerken op een professioneel niveau. Het pakket word net als de distributies zelf ook vaak geüpdate want in de oudere pakketten van samba werden een aantal buffer overflow fouten gevonden die weer het risico met zich mee bracht dat een kwaad willende hacker daar gebruik van zou maken om binnen te kunnen dringen op het systeem met R00T rechten, want samba draait wel als ROOT (lees over rechten deel 1). Als je Samba wilt installeren moet je weer in de RPM directory zijn van je cdrom en zoeken naar bestandjes waar de namen smb ,samba of smbd in voorkomen dit doe je door een wildcard te gebruiken

[root@localhost ad]# ls -l *smb*
of
[root@localhost ad]# ls -l *samba*
etc
 
En dan "rpm -i <jouw uitkomst>" Samba bestaat uit 2 verschillende pakketen de samba client om in te kunnen loggen op windows en de Samba Deamon om een server op je eigen pc te bouwen...
 

6.7 Apache

Apache is een state of the art webserver. Ik heb nog nooit zo'n gebruiks vriendelijke webserver mee gemaakt voor een systeem zo als linux of windows want apache heefd ook een versie speciaal voor windows ontworpen die je kan vinden op www.apache.org. Apache komt standaard mee met Linux en staat bekent omdat er maar heel weinig fouten in zitten meestal is Apache al standaard geinstalleerd, zo niet kan je hem vinden op je cdrom in de RPMS directory zo als hier boven is beschreven.

 

 

 

 

6.8 Sendmail

Sendmail is DE smtp server onder de smtp servers deze server draait op port 25 en ontvangt alle E-mails voor het netwerk in het verleden is het wel bewezen dat sendmail niet altijd 100% veilig is geweest maar dat is bij de moderne distrobuties toch gefixed de meest huidige versie van sendmail is versie 8.11.3 met deze versie hoef je niet meer bang te zijn dat een hacker door een fout in het systeem ROOT nivau zal berijken omdat oudere versies van sendmail met root rechten draaide en deze versie een aparte gebruiker heeft om mee te draaien. Als je een mail server op je systeem wilt hebben raad ik je aan sendmail te installeren als dat niet al is gedaan met de instalatie waar en kans op legt van 90%...

[root@localhost ad]# netstat -a | grep 25

deze opdracht kan je gebruiken om te checken of sendmail wel of niet draait (25 is de poort van een smtp server)

 

 

 

 

 

 

 

 

7.0 File systems
 
Als je onder Linux een cd wilt luisteren onder Xwindows zal je er waarschijnlijk niet veel erg in hebben maar wat het systeem eigenlijk doen is de verbinding met je Cd-rom speler verbreken en de lade uitwerpen. Oke tot hier gaat alles nog als op een Windows computer maar wat het Xwindows systeem nu doet is je systeem weer mounten dat is Engels voor koppelen gebruikers van een zipdrive kennen dit fenomeen misschien wel van Windows (Alleen op zipdrives). Bij Xwindows zijn de types die bij welk systeem en drive horen al standaard ingesteld maar als gebruiker dien je ook te weten hoe je dit buiten Xwindows wilt doen want zo als hier boven in hoofdstuk 5 al beschreven stond had je daar toegang nodig tot je cd-rom maar om de RPM bestanden te installeren. Ik zal je uit leggen hoe je Apparaten kan koppelen aan je Linux systeem.
 
Dit is zijn de filesystemen bekend bij Linux
 
iso8859-15         msdos 
proc
Ext  & ext2 
smbfs
fat & vfat                                                 
 
Lang niet al deze File systems zal je gaan gebruiken maar er staan een aantal interessante bij zo als fat, nfs ,smbfs, iso8859-15
 
iso8859-15 Word onder Linux vaak gebruik voor cd-rom spelers
proc Word vaak gebruikt om systeem info van de kernel op te bewaren en is vaak een aparte Particion
Ext  & ext2  Word gebruikt als standard linux filesystem
Smbfs word gebruikt voor externe computer die gelinkt worden (zie hoofdstuk 5)
Fat & vfat Word gebruikt voor Windows ingedeelde harde schijven.
Msdos  Word gebruikt voor DOS ingedeelde harde schijven en voor diskettes
 
7.1 Drives en namen er van. (let op ingewikkeld)
In linux word niet met A:\,B:\,C:\ gerekend er word met zogenaamde device namen gedacht die naar IDE devices wijzen dit zijn IDE1 HARDISK 1 en 2  en IDE2 en  (cd-rom 1 en 2) die in een logische wijze op lopen van hd*1 naar hd*<oneindig> de joker tekens (*) zijn vervangen voor de letter A en B wat er zijn 2 types harde schijven een Master schijf (hoofd) en een Slave (2e hoofd) en de de derde C (cd-rom en alles op IDE2) en A is de hoofd schijf en B de secundare schijf . Als je Linux installeerd word er gevraagd voor een swap directory als je JA antwoord word de hoofd schijf in 2e gedeeld om een swap drive aan te maken die tijdelijk gebruikt word om het geheugen op te slaan de cache dit doet Windows ook maar dan in de map C:\Windows\temp en maakt geen aparte partitie aan maar linux wel. Dit word meestal device HD(Harddisk)A2(deel 2) genoemd. Maar meestal word HDA als hoofd schijf gezien en de / (root van de harde schijf) aan gekoppeld hier staan dus de bestanden op. Daarom is het logisch dat HDB1 de 2e harde schijf is en daar van partitie 1 . De bestanden die voor devices staan kan je terug vinden in de map /dev/ (van devices) zo word als je de swap drive wilt koppelen aan een mapje met de opdracht MOUNT  /dev/hda2. De cd-rom drive is van de IDE drives C dus word cd-rom 1 op je pc /dev/hdc en cd-rom 2 /dev/hdc1.
 
7.2 Mount
 
Het koppelen van de drives doe je met de opdracht mount en betekend ook toevallig koppelen (zouden ze dat express hebben gedaan J). Als je een drive koppelt doe je dat altijd op een directory een directory is een mapje zo als je die wel van Windows kent. Daar voor moet je ook nog een file systeem aan geven meestal is dit zeer simpel van in de map /dev/ staan de devices dus apparaten die je mogelijkerwijs op een systeem kan koppelen hier vind je bijvoorbeeld bestanden met de naam cd-rom,Jazz,zip die dus staan voor de cd-rom drive en de jazz en de zip drive laten we proberen zo’n apparaat te koppelen aan ons systeem we gaan eerst maar voor cd-rom omdat iedereen er tegenwoordig er één heeft ..
 
Opmerking !!!
Stop een cd in cd-rom drive 1 (de hoofd cd-rom) en zorg er voor dat je root bent !!
 
(#) zorg dat je root bent anders werkt het niet goed  !!
….
[root@linux dev]# mount /dev/hdc /mnt/cdrom
mount: block device /dev/hdc is write-protected, mounting read-only
 
Dit klopt een cdrom schijf daar kan je niet op schrijven en is schrijf beveiligd … even testen of het gelukt is ?
 
[root@linux dev]# cd /mnt/cdrom
[root@linux cdrom]# ls
AUTORUN.INF*   DOCS/  LEESMIJ.HTM*  SUPPORT/   WIN51*
BOOTFONT.BIN*  I386/  SETUP.EXE*    VALUEADD/  WIN51IP*
[root@linux cdrom]#
..
 
En ja wel hoor hier geefd de opdracht LS de inhoud van mijn cdrom weer YES!!!
 
 
7.3 Netwerk Mappen koppelen met mount  
 
Het is ook mogelijk mappen te koppelen die je op een netwerk hebt staan daar voor gebruiken we mount type smbfs  wat staat voor Samba file systeem en dat is dat pakket dat communicatie met een Windows netwerk mogelijk maakt weet je nog ?.  mount heeft hier voor een extra parameter nodig namelijk –t wat staat voor type van koppeling in dit geval een netwerk koppeling. Hoe werkt die nu ? nou namelijk als volgt
 
mount -t smbfs -o <gebruikersnaam>  //<Ipnummer>/<sharenaam>  /<map om aan te koppelen>
 
Het IP nummer van mijn Windows computer is 192.168.10.2 en ik heb een gedeelde map die jan heet en mijn Windows accepteerd anonieme aanmeldingen en ik wil die share koppelen aan /mnt/remotecomputer dan ziet mijn mount opdracht er zo uit.
 
mount -t smbfs -o <guest>  //192.168.10.2 /jan /mnt/remotepc
 
Opmerking !!!.
Guest staat voor een anonieme gast account
 
Even testen hoor
 
..
$ cd /mnt/remotepc
$ ls
AUTORUN.INF*   DOCS/  LEESMIJ.HTM*  SUPPORT/   WIN51*
BOOTFONT.BIN*  I386/  SETUP.EXE*    VALUEADD/  WIN51IP*

Bingo we zijn binnen mensen we hebben een successvole netwerk koppeling gedaan.
 
 
 
 

 


Zo zie je maar dat Linux je heel wat meer heefd te bieden dan je mischien ooit had kunnen durfen dromen het is waar Linux is een zeer complete OS met alles er op en er aan soms denk ik wel eens completer als Microsoft zijn Windows ®. Ik hoop je bij deze de basis van Linux een beetje geleerd te hebben maar als je nog vragen voor me hebt kan je me berijken op [email protected]. bedankt voor je aandacht

Ravecool

 

[1 | 2 ] [Tutorial Index]

Hosted by www.Geocities.ws

1