Prøveeksamen høst 2005 (=eksamen vår 2005) Operativsystemer og UNIX
Les nøye gjennom oppgavene før du begynner og pass på å besvare alle spørsmålene. Alle trykte og skrevne hjelpemidler er tillatt. Oppgavene vil ikke bli vektlagt likt ved sensur. En sannsynlig fordeling er at oppgave 1 teller 10%, oppgave 2 teller 30%, oppgave 3 teller 40% og oppgave 4 teller 20%. De som ønsker det kan besvare oppgavene eller deler av oppgavene på engelsk. Sett gjerne egne forutsetninger dersom du synes oppgaveteksten er uklar. Beskriv forutsetningene og løs oppgaven utifra dem.

Oppgave 1

I denne oppgaven skal du i delspørsmål a) til e) løse problemet ved å angi en kommando på en linje, slik du ville ha tastet den inn til bash på en Linux-maskin fra tastaturet (du svarer for eksempel mkdir kat hvis du blir spurt: Opprett en katalog med navn kat).

a) Sett rettigheter til filen ./secret.pl slik at du har alle rettigheter mens andre brukere ikke har noen rettigheter.

b) Lag en symbolsk link i katalogen du står i med navn em til filen /usr/bin/emacs21.

c) Finn ut om filen /tmp/bank.txt er lik filen bank.txt i katalogen du står i.

d) Legg til strengen "The End" til slutten av filen film.txt i katalogen over den du står i.

e) Finn IP-adressen til maskinen du sitter på.

f) Du er en vanlig bruker på en Linux-maskin og snill som du er prøver du å lage en brukerkonto til mammaen din ved å gjøre:

$ echo "mamma:x:1003:1003:Mamman Min:/home/mamma:/bin/bash" >> /etc/passwd
bash: /etc/passwd: Permission denied
Hvorfor får du denne feilmeldingen?

g) Gitt følgende utdrag av manualsiden til kommandoen tail:

NAME
       tail - output the last part of files
SYNOPSIS
       tail [OPTION]... [FILE]...
DESCRIPTION
       Print  the  last  10 lines of each FILE to standard output.  With more than one FILE, precede 
       each with a header giving the file name.  With no FILE, or when FILE is -, read standard input.
       -c, --bytes=N
              output the last N bytes
       -n, --lines=N
              output the last N lines, instead of the last 10
      --max-unchanged-stats=N
              with --follow=name, reopen a FILE which has not changed size after N (default 5) iterations
              to see if it has been unlinked or renamed (this is the usual case of rotated log files)
Hva gir kommandoen tail -n 1 /etc/passwd?

Oppgave 2

På din Linux-laptop er brukerne definert i filen /etc/passwd og slutten av filen ser slik ut:

hh:x:1000:1000:Hårek Haugerud:/home/hh:/bin/bash
balder:x:1001:1001:Balder Haugerud:/home/balder:/bin/bash
diego:x:1002:1002:Diego Armando Maradona:/home/diego:/bin/bash
En linje er bygd opp slik:
brukernavn:x betyr at passord er i /etc/shadow:brukerID:gruppeID:Fullt navn:hjemmekatalog:default shell

I denne oppgaven skal du lage et bash-script med navn adduser som legger til en ny bruker på systemet ditt. Scriptet skal kjøres slik

# adduser nybruker

der nybruker er navnet på den nye brukeren. En ny bruker skal da lages ved å legge til en passende linje til /etc/passwd. Scriptet adduser skal oppfylle følgende:

Oppgave 3

I denne oppgaven skal vi se på nettverkstraffikk med utgangspunkt i figuren som viser to nettverk som er koblet til Internett.

\includegraphics[width=11cm]{n.eps}

a) Hva er betydningen av tallrekken 128.39.16.12 øverst i figuren?

b) Hva er www og hva er nb.no på denne maskinen?

c) Forklar kort hvilken funksjon gateway.nb.no har.

d) På hostene i det øverste nettverket er netmask satt til 255.255.255.0. Hva er hostnummeret til www.nb.no og hva er nettverksnummeret?

e) På hostene i det nederste nettverket er netmask satt til 255.255.252.0. Hva er hostnummeret til have.fun.no og hva er nettverksnummeret?

f) En bruker på join.fun.no kjenner til navnet www.nb.no og ønsker å finne ut det tilhørende 128.39.16.12. Gi en Linux-kommando som gir ham det han ønsker.

g) En bruker på join.fun.no kjører en browser og surfer på sidene til webserveren på http://www.nb.no og taster inn et passord. Vil en som kjører som root på geek.nb.no kunne snappe opp dette passordet? Forklar kort.

h) Vil en som kjører som root på have.fun.no kunne snappe opp dette passordet? Forklar kort.

i) En bruker på join.fun.no logger seg inn på geek.nb.no med ssh. Vil en som kjører som root på have.fun.no kunne snappe opp passordet han bruker? Forklar kort.

j) Vil en som kjører som root på gateway.nb.no kunne snappe opp passordet som blir brukt i forrige delspørsmål? Forklar kort.

k) Når brukeren på join.fun.no logger seg inn på geek.nb.no med ssh startes opprettelsen av forbindelesen ved at det sendes en nettverkspakke til geek.nb.no. Figuren viser noen av feltene i IP og TCP-headeren for en slik pakke. Skriv ned verdien for feltene: sender adresse, mottager adresse, source port, destination port, SYN og ACK. Ett av dem kan du ikke vite nøyaktig, men skriv ned en typisk verdi.

\includegraphics[width=10cm]{i.eps}

l) Som svar på denne pakken, returneres det en pakke fra geek.nb.no til join.fun.no. Skriv ned verdien for de samme feltene som i forrige delspørsmål for denne pakken også.

m) Vil det i prinsippet være mulig for gateway.nb.no å stoppe all trafikk til det øverste nettverket som ikke er web-trafikk, bare ved å se på pakke-headerene? Forklar kort.

n) Hva kalles en del av et nettverk som har en slik siling av nettverkspakker som viktigste oppgave?

o) Vil www.nb.no motta MAC-adressen til join.fun.no når en bruker derfra kobler seg til? Forklar kort.

p) Anta at en TCP-pakke med data fra www.nb.no er på vei til join.fun.no. Nøyaktig samtidig som nettverkskortet til gateway.fun.no fysisk sender denne pakken ut på ethernettforbindelsen til join.fun.no, sender have.fun.no en pakke til 129.18.74.114. Forklar kort hva som vil skje.

Oppgave 4

Når man overfører tekstfiler fra Windows til Unix får man ofte problemer på grunn av at en Windows-linje avsluttes med to tegn, mens en Unix-linje avsluttes med bare ett tegn:

Dermed vil en fil som overføres fra Windows til Unix kunne inneholde et overflødig (og i noen tilfeller ødeleggende) \r tegn på slutten av linjen.

I denne oppgaven skal du lage et Perl-program som tar et filnavn som argument og fjerner alle CR (\r) som befinner seg på slutten av en linje i filen. Du kan eventuelt bruke /tmp til mellomlagring av filer, men alle slike filer må slettes etterpå. Hvis det ikke gis ett og bare ett argument til programmet skal det avsluttes med en passende feilmelding. Hvis filen som angis ikke kan åpnes for lesing skal programmet også avsluttes med en passende feilmelding.

-SLUTT-



Hårek Haugerud 2005-11-29