
|
- Author :
Ravecool
Date :
29-8-02
- Subject : Een introductie naar Linux 2
|
|
- 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 commandos 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 commandos 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 zon 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 je mmoet 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 commandos 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 zon 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]