Eksamen vår 2003 Operativsystemer og U'iTIX Les nøye gjennom oppgavene før du begynner og pass på å besvare ae spør måene. Ae trykte og skrevne hjepemider er tiatt. Oppgavene vi ikke bi vektagt ikt ved sensur. En san synig fordeing er at oppgave 1 teer 10%, oppgave 2 teer 15%, oppgave 3, 4 og 5 teer 25%. Innenfor hv oppgave vi deoppgavene tee omtrent ikt. De som ønsker det kan besvare oppgavene eer deer av oppgave på engesk. Sett gjerne egne forutsetninger dersom du synes oppgaveteksten er ukar. Beskriv forutsetninge e og øs oppgaven utijra dem. Oppgave 1 I denne oppgaven ska du i despørsmå a) og b) øse probemet ved å angi vie ha tastet den inn ti bash på en Linux-maskin fra tastaturet (du svarer f. Opprett en kataog med navn kat). kommando på en inje; sik du. mkdir kat hvis du bir spurt: a) Gi en kommando som kopierer fien scan.p i kataogen /tmp ti kataoge du står i. b) Gi en kommando som for fien scan.p i kataogen du står gir: ae rettigh er ti eieren, kun ese og kjørerettigh~ter ti gruppen og kun kjøre-rettigheter ti andre brukere. c) To s-kommandoer på en Linux-maskin gir føgende: $ s -a / drvxr-xr-x 20 drvxr-xr-x 2 drvxrvxrvx 313 $ s - /bin/un- -rvxr-xr-x 1 1024 Jan 22 18:01. 2048 Ju 25 2002 bin 29696 Feb 18 13:35 tmp 10396 Ju 26 2001 /bin/uname Angi med nummer hvike av de føgende Linux-kommandoene som vi gi en met dingen som 'Permission denied' eer ignende når de bir utført aven vanig bruker: 1 S cp /bin/uname - 2 S /bin/uname 3 S RIV /bin/uname /tmp 4 S cat /bin/uname > /tmp/uname 6 S chdod 700 /tmp 6 S cp /bin/uname / d) I en såkat boneypot som agrer ae kommandoer som en backer gjør Jter ett innbrudd, be føgende kommandoer utført i en tom kataog etter at backerverktøyet uck. tgz b~ astet ned fra nettet: tar rz uck. tgz cd uck./uckgo Forkar kort hva hackeren gjør.
Oppgave 2 Lag et bash-script portnavn. bash som tar ett argument fra kommandoinjen g betrakter argumentet som et portnummer. Hvis ingen eer fere enn ett argument gis, ska scriptet avsut e med feimedingen: "Syntaks: portnavn.bash portnummer". Scriptet ska ese fien /etc/services og finne t om det er en tcp-tjeneste som har dette portnummeret. Ae tcp-tjenester som står i fien er oppført med inj r som ftp ssh tenet domain 21/tcp 22/tcp 23/tcp 53/tcp # SSH Remote Login prot 901. n.--domain server Scriptet ska finne injen med portnummeret som er oppgitt og hvis en sik injf finnes, skrive ut føgende inje: TCP-tjenesten 'navn' er på port 'portnummer' der 'navn' er navnet på tjenesten hentet fra det første ordet på injen. Med ~ gang injen er skrevet ut, ska scriptet avsutte. Hvis det oppgitte portnummeret ikke finnes i /etc/servic s, ska scriptet ese en web-side som har nøyaktig samme form og som innehoder mange fere portnummer. L. ux-kommandoen ynx -aource http: Ivww. iana. org assiguments/port-numbers skriver innhodet av denne siden ti STDOUT (defaut ti skjermen, på sammet åte som cat /etc/services). Hvis portnummeret finnes på denne siden, ska samme info-inje skrives ut s angitt ovenfor. I tiegg ska injen starte med 'IANA: '. Oppgave 3 De OS fø.rste kjører tre de deoppgavene to prosessene i Proc denne 1 og oppgaven Proc 2 definert dreier seg ved om fiene OS-simueringen proc.txt og pr i ~ 2.txt. andre Første obigat.o~s~e HnJe 1 fiene oppgav~. angir prioritet, de neste er kommandoer som ska utføres ved å skrive den ti skje en. Bare kommandoene fork, signa og wai t tokes av OS. a) Det simuerte operativsystemet ska kjøre de to prosessene Proc 1 og Proc 2 definert ved fiene proc.txt og proc2.txt. Hva bir output? I proc~.txt I proc2.txt 11 print f echo end 2 start f print 2 exit 3 b) Hva bir output med føgende fier? c) Semaforer brukes for å oppnå gjensidig uteukkese. Hva bir output med føgende fier? P!oc\.txt I proc2.txt 1 I I 1 Wait add criti r 2 wait criti 3 crit 3 sigd 1 crit 4 stop signa exit 5 2
d) H~ er et kritisk avsnitt? Forkar kort e) Hva. er busy-waiting? Forkar kort. f) Anta at et Pert program som kan startes fra web bruker føgende metode tpr å unngå at to brukere skriver samtidig ti en fi I vhie (-f /tmp/ock1ie) {} «touch /tmp/ock1ie«;. Lager /tmp/ockfie. skriver ti en fee. fi 'rm /tmp/ockfie«;. Fjerner /tmp/ockfie Forkar kort ideen bak denne metoden. I hviket tifee virker den ikke? g) Forkar kort hvordan føgende Mutex-agoritme meom to prosesser virker~ Hva gjør den ubrukeig? static booeano fag. new booean[2]; / / Begge fase i utgangspunktet GetMutex(int t) { ut other; other.1 - t; } fag[t]. true; / / 0naker å gå inn i kritisk avsnitt vhie (fag[other] -- true){} ReeueMutex(int t) { fas[t]. faae; } Oppgave 4 I denne oppgaven ska du skrive tre Per-subrutiner som ska kjøres på en L~-maskin og som ska brukes i neste oppgave (ikke skriv dem på nytt der!). Subrutinen i deoppgave a) skaifukes i b) og c). a) Lag en Per-subrutine erta() som tar tre argumenter. Den ska Sje ~ t det første argumentet er et positivt heta eer nu. Bruk et reguært uttrykk ti å kontroere at argumen t kun består av siffer. Hvis det første argumentet er et sikt ta og det er større enn argument nummer to og. dre enn argument nummer 3, ska subrutinen returnere strengen "OK". I ae andre tifeer ska ingenting r umeres. b) Lag en subrutine portok () som tar en streng som eneste argument. A ~ gumentet ska være på formen "taa-tab" der taa og tab er heta større enn nu og mindre enn 655. Hvis i tiegg tas er større eer ik taa, ska subrutinen returnere et array med ta~a og tab som d to første og ~e.st~ eementene. Hvis ikke ska et array med to nuer returneres. Bruk subrutmen erta() fra eoppgave a) t a sjekke taene. c) Lag en subrutine IPOK som tar en P-adresse som argument. Den ska re~urnere strengen "OK" hvis IPadressen er på formen" A.B.C.D" der A, B, C og D er nu eer positive het mindre enn 256. I ae andre tifeer ska ingenting returneres. Bruk subrutinen erta() fra deoppgave a) ti å sjekke taene. 3
Oppgave 5 Når en backer prøver å bryte seg inn på en maskin på Internett, er vanigvis df ørste han (enten finnes det ikke kvinneige hackere, eer så er de så dyktige at de adri bir tatt :-) gjør å kjøre e port-scanning mot P-adressen ti maskinen som angripes. Det vi si å kjøre et program som prøver å kobe finne ut hvike tjenester som kjører på denne maskinen. opp mot et anta porter for å Lag et Per-program scan. p som gjør dette for en P-adresse og en serie Pf rtnummere som bir angitt ved to arg11denter. Programmet ska ha syntaks scan. p IP fraport-tiport g avsuttes med en meding om riktig syntaks hvis ikke nøyaktig to argumenter angis av brukeren. Bruk sub tinene fra forrige oppgave ti å finne ut om. P-adressen som bir oppgitt er på riktig form og har ovige taverdier. ftaport-tiporter en gydig serie portnummere Hvis dette ikke er tifeet, ska programmet avsuttes med en passende feime.ing. For hver port fra og med "fraport" og ti og med "medport" ska programmt t age en kient-socket mot IPadressen og kobe seg opp mot serveren. Hvis oppkobingen ykkes, ska pr grammet skrive ut en inje på formen TCP-tjenesten 'navn' er på port 'portnummer' og er åpen for tikobing og bash-scriptet portnavn. med bash fra gang. oppgave Informasjonen 2. Du kan anta første at scriptet igger ka ogen 'og') /bin. ska hentes Hvis oppkobingen ved feier, ska ingenting skrives ut, men en inje som angir anta ukkede porter s skrives ut når programmet er ferdig. Eksemper på bruk av scan. p $ scan.p 128.39.89.10 35-21 Port-angivesen 35-21 er ikke gydig $ scan.p 128.39.89.10 21-35 TCP-tjeneaten ftp er på port 21 og er åpen for tikobing TCP-tjeneaten aah er på port 22 og er åpen for tikobing TCP-tjenesten smtp er på port 25 og er åpen for tikobing Det var 12 porter som var ukket -8LU1tr- 4