Oppgave 1 Bash (15%)
I denne oppgaven skal du i de fire første delspørsmålene angi en kommando på en linje. Skriv linjen slik du ville ha tastet den inn til bash på en Linux-maskin.
a) Gi en kommando som sletter filen /tmp/log
.
b) Gi en kommando som gir deg som eier alle rettigheter til filen bareMin.txt
mens ingen andre brukere får noen rettigheter.
c) Gi en kommando som kun lister alle prosesser hvor strengen vnc
er med i prosesslistingen.
d) Gi en kommando som skriver ut /etc/passwd
sortert etter stigende verdier på UID.
e) Følgende kommandoer blir kjørt:
echo "Linux" > data.txt echo "Windows" > data.txt cat data.txt | grep Linux > ny.txt
Hva er innholdet i filen ny.txt
etter at kommandoene er blitt kjørt? Begrunn svaret.
f) Hva blir resultatet av at følgende kommandoer blir kjørt:
mkdir top_secret chmod 000 top_secret cp /etc/passwd top_secret
g) Forklar kort følgende begreper og deres funksjon på et Linux-system
Oppgave 2 Multitasking (20%)
a) Forklar kort hvordan et operativsystem som kjører på en PC med bare en CPU kan klare å kjøre flere prosesser samtidig.
b) En meteorolog har et meget CPU-intensivt program som i løpet av en time kan regne ut en værprognose på en PC som har en CPU. Han ønsker å kjøre programmet med to forskjellige sett input-data. Siden han har et multitasking OS, starer han to instanser av programmet samtidig. Omtrent hvor lang tid vil det ta før de to værprognosene er ferdig? Begrunn svaret.
c) En kollega råder meteorologen til å skrive om programmet slik at det bruker tråder. Han gjør det og kjører nå programmet som en prosess som har to tråder. Hver tråd regner ut en værprognose. Omtrent hvor lang tid vil det ta før de to værprognosene er ferdig? Begrunn svaret.
d) Meteorologen er ikke fornøyd med resultatet og går på nytt til kollegaen. Han foreslår at han kjører det nye tråd-programmet på en annen PC som har akkurat samme hardware som den han vanligvis bruker, men som har to identiske CPU'er. Omtrent hvor lang tid vil det ta før de to værprognosene er ferdig? Begrunn svaret.
e) Du kjører en prosess og ønsker å se fortløpende hvor stor andel CPU den bruker. Hvordan kan du finne ut det på en Linux-PC?
f) Du kjører en prosess og ønsker å se fortløpende hvor stor andel CPU den bruker. Hvordan kan du finne ut det på en Windows-PC?
g) Forklar kort hva timeslices eller jiffies er.
h) Linux har stort sett brukt jiffies som har hatt en lengde på ett hundredels sekund. Men de siste årene har lengden vært endret litt frem og tilbake. Forklar kort hvordan endring av lengden på timeslice påvirker hvordan systemet oppfører seg.
i) På et Linux-system kjører du en server med PID 2371 og fra /proc/2371/stat
kan du fortløpende lese ut hvor mange jiffies den bruker. I denne filen i /proc
er det ett tall i en kolonne som angir nøyaktig antall jiffies prosessen har brukt siden den startet. Hvis du vet at en jiffy har en lengde på ett hundredels sekund, forklar i prinsippet hvordan du kan lage et Perl-program som hvert sekund skriver ut et tall som angir hvor stor prosentandel av CPU-tiden serveren har brukt i løpet av det siste sekundet (du trenger altså ikke skrive selve koden, men bare forklare hvordan det kan gjøres).
Oppgave 3 Perl (30%)
a) Filen /proc/meminfo inneholder oppdatert informasjon om systemets minnebruk. Her er et eksempel på hvordan filen ser ut:
MemTotal: 1686528 kB MemFree: 75692 kB Buffers: 308584 kB Cached: 401812 kB SwapCached: 12000 kB Active: 1001056 kB Inactive: 126928 kB HighTotal: 1087256 kB HighFree: 48476 kB LowTotal: 599272 kB LowFree: 27216 kB SwapTotal: 497972 kB SwapFree: 453704 kB Dirty: 0 kB Writeback: 0 kB AnonPages: 417084 kB Mapped: 37056 kB Slab: 422768 kB PageTables: 2084 kB NFS_Unstable: 0 kB Bounce: 0 kB CommitLimit: 1341236 kB Committed_AS: 750748 kB VmallocTotal: 114680 kB VmallocUsed: 8108 kB VmallocChunk: 106360 kB
Lag et perl-script som henter ut "MemTotal" og "MemFree" verdiene og skriver dem ut slik:
Totalt minne: 1686528 kB Ledig minne: 75692 kB
b) Modifiser scriptet til å sjekke verdiene til "Buffers" og "Cached" og å skrive ut den høyeste av dem i tilleg til det som blir skrevet ut i forrige oppgave. I eksempelet over ville resultatet blitt:
Totalt minne: 1686528 kB Ledig minne: 75692 kB Cached: 401812 kB
(Du trenger ikke lage hele scriptet på nytt, bare vise forandringene)
c)
Vi er naturligvis interessert i å vite når minnet blir oppbrukt. Derfor lager vi en fil /etc/minnegrense
som inneholder den laveste grensen for ledig minne som vi er komfortable med. F.eks 4096 kB. Da vil filen se slik ut:
cat /etc/minnegrense 4096Modifiser scriptet til å hente inn denne verdien i starten og å sjekke om ledig minne er lavere eller høyere enn grensen. Dersom ledig minne er lavere enn grensen skal det sendes en epost til systemadministratoren ola. Man kan sende epost fra kommandolinjen på et Linux system på følgende måte:
echo "ALARM: under laveste minne grense." | mail -s ola@iu.hio.noDenne kommandoen må altså kjøres fra perl scriptet dersom ledig minne er lavere enn grensen.
Oppgave 4 Nettverk (35%)
a) IPheaderen er vanligvis på 20 byte. Åtte av disse bytene brukes til to adresser. Forklar kort hva disse adressene er og hvordan de brukes.
b) Resten av IPheaderen består av 12 byte og er inndelt i mange felter. Kan du nevne to andre felt og forklare kort hva de brukes til?
c) På Linux-maskinen rex.iu.hio.no
utfører du følgende kommando:
$ traceroute www.washington.edu traceroute to www.washington.edu (140.142.11.6), 30 hops max, 40 byte packets 1 hio-gw1.hio.no (128.39.89.1) 0.388 ms 0.455 ms 0.538 ms 2 pil52-gw.uninett.no (158.36.84.53) 0.535 ms 0.627 ms 0.707 ms 3 pil35-gw.uninett.no (158.36.84.41) 0.655 ms 0.750 ms 0.825 ms 4 stolav-gw1.uninett.no (158.36.84.49) 0.399 ms 0.393 ms 0.389 ms 5 oslo-gw.uninett.no (128.39.65.21) 0.504 ms 0.558 ms 0.592 ms 6 se-tug.nordu.net (193.10.68.105) 8.335 ms 8.366 ms 8.325 ms 7 dk-uni.nordu.net (193.10.68.18) 24.615 ms se-fre.nordu.net (193.10.252.85) 8.848 ms dk-uni.nordu.net (193.10.68.18) 24.633 ms 8 dk-ore.nordu.net (193.10.68.118) 18.588 ms 18.615 ms 18.679 ms 9 nordunet.rt2.cop.dk.geant2.net (62.40.124.45) 18.598 ms 18.660 ms 22.003 ms 10 so-4-0-0.rt1.ams.nl.geant2.net (62.40.112.78) 31.548 ms 31.598 ms 31.634 ms 11 so-7-0-0.rt1.nyc.us.geant2.net (62.40.112.134) 136.709 ms 160.018 ms 118.404 ms 12 198.32.11.50 (198.32.11.50) 126.304 ms 122.748 ms 126.197 ms 13 so-0-0-0.0.rtr.wash.net.internet2.edu (64.57.28.11) 126.332 ms 126.373 ms 122.904 ms 14 so-0-2-0.0.rtr.chic.net.internet2.edu (64.57.28.12) 139.637 ms 139.364 ms 139.359 ms 15 so-4-3-0.0.rtr.kans.net.internet2.edu (64.57.28.36) 153.389 ms 149.879 ms 153.348 ms 16 so-0-0-0.0.rtr.salt.net.internet2.edu (64.57.28.24) 181.406 ms 189.773 ms 184.195 ms 17 so-0-0-0.0.rtr.seat.net.internet2.edu (64.57.28.26) 194.388 ms 190.952 ms 190.949 ms 18 64.57.28.54 (64.57.28.54) 198.009 ms 197.988 ms 198.001 ms 19 iccr-sttlwa01-02-ge-2-2-0-4002.infra.pnw-gigapop.net (209.124.181.132) 197.992 ms 197.952 ms 194.498 ms 20 209.124.181.133 (209.124.181.133) 195.163 ms 195.116 ms 191.660 ms 21 uwcr-hsh-01-vlan1902.cac.washington.edu (205.175.103.9) 191.794 ms 195.109 ms 191.847 ms 22 uwcr-hsh-01-vlan3939.cac.washington.edu (205.175.103.158) 191.960 ms 195.191 ms 192.043 ms 23 acar-ads-01-vlan3902.cac.washington.edu (205.175.110.10) 195.301 ms 195.357 ms 195.461 ms 24 www14.cac.washington.edu (140.142.11.6) 188.553 ms 192.164 ms 192.157 ms rex$
Forklar kort hva denne kommandoen gjør og hva output fra kommandoen betyr. Forklar spesielt hva hver kolonne i output betyr. For å bedre huske detaljene, slår du opp på manualsiden til traceroute
og finner følgende:
This program attempts to trace the route an IP packet would follow to some internet host by launching probe packets with a small ttl (time to live) then listening for an ICMP "time exceeded" reply from a gateway. We start our probes with a ttl of one and increase by one until we get an ICMP "port unreachable" (or TCP reset), which means we got to the "host", or hit a max (which defaults to 30 hops). Three probes (by default) are sent at each ttl setting and a line is printed showing the ttl, address of the gateway and round trip time of each probe. If the probe answers come from different gateways, the address of each responding system will be printed.
d) I linjen i output som starter med tallet 7, har det skjedd noe helt spesielt som man meget sjelden ser. Forklar kort hva som er forskjellig fra alle de andre linjene og hva dette skyldes.
e) Argumentet til kommandoen, www.washington.edu, er webserveren til universitetet i Washington, USA. Mellom to av linkene i listen er det en betydlig større forskjell i tid enn mellom noen av de andre. Mellom hvilke to er forskjellen størst og kan du forkare hvorfor?
f) Mens du utfører denne kommandoen kjører du som root Ethereal (wireshark) på rex
. Du lytter
på nettverkskortet som er koblet ut mot internett og som har den
offentlig IPadressen 128.39.89.9. Dermed kan du se alle pakkene
som er et resultat av traceroute-kommandoen. Du teller ikke mindre enn 69 innkommende ICMP-pakker som gir beskjed om Time to live exceeded in transit
. Forklar dette antallet og hvordan det henger sammen med output fra traceroute
.
g) Du ønsker å finne ut mer om ping og deler av resultatet du får er som følger:
rex$ man ping -c count Stop after sending count ECHO_REQUEST packets. With deadline option, ping waits for count ECHO_REPLY packets, until the timeout expires. -R Record route. Includes the RECORD_ROUTE option in the ECHO_REQUEST packet and displays the route buffer on returned packets. Note that the IP header is only large enough for nine such routes. Many hosts ignore or discard this option. -t ttl Set the IP Time to Live.Deretter utfører du følgende kommando:
rex$ ping -c 1 -t 6 www.washington.edu PING www.washington.edu (140.142.11.6) 56(84) bytes of data. From se-tug.nordu.net (193.10.68.105) icmp_seq=1 Time to live exceededForklar kort kommandoen og resultatet du får. Forklar hvordan du kunne forvente dette resultatet når du kjente til output fra
traceroute
.
h) Du prøver ut en annen opsjon til ping
og det gir følgende resultat:
rex$ ping -c 1 -R www.washington.edu PING www.washington.edu (140.142.11.6) 56(124) bytes of data. 64 bytes from www14.cac.washington.edu (140.142.11.6): icmp_seq=1 ttl=44 time=213 ms RR: rex.iu.hio.no (128.39.89.9) hio-gw1.hio.no (158.36.84.54) pil52-gw.uninett.no (158.36.84.42) pil35-gw.uninett.no (158.36.84.50) stolav-gw1.uninett.no (128.39.65.22) oslo-gw.uninett.no (193.10.68.106) se-tug.nordu.net (193.10.252.3) se-fre.nordu.net (193.10.252.4) nordunet-gw.rt2.cop.dk.geant2.net (62.40.124.46)Forklar kort kommandoen og resultatet du får. Hvordan tolker du det du ser sammenlignet med output fra
traceroute
? Hvorfor får du ikke se flere hop på veien til www.washington.edu
?
i) Du kjører Ethereal (wireshark) på rex samtidig med at du utfører kommandoen i forrige deloppgave. I motsetning til de 69 innkommende ICMP-pakkene du så når du kjørte traceroute
ser du nå bare en enkelt innkommende ICMP-pakke. En vesentlig forskjell du legger merke til er at IPheaderen for denne pakkene er på 60 byte og ikke på 20 byte som er den normale størrelsen for IPheadere. Alle de 69 pakkenes IPheadere var på 20 byte. Hva tror du de ekstra 40 bytene i den innkommende ICMPpakken inneholder? Forklar kort hvorfor så mange pakker mottas når du kjører traceroute
sammenlignet med når du kjører ping -R
.