Avdeling for ingeniørutdanning. Cort Adelersgate 30. 0254 Oslo. tlf: 22 4532 00.faks: 22 45 32 05. iu@hio.no
Eksamen høst 2005 Linux 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 20%, oppgave 3 teller 30% og oppgave.. teller 40% (lett å huske!). 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 l 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) Lag en tom fil med navn nyfil i katalogen /tmp b) Gi deg selv skrive og leserettigheter og alle andre brukere kun leserettigheter til filen /tmp/nyfil c) Slett katalogen /tmp/gammelkat med alle filer og underkataloger d) Skriv ut verdien av variabelen $PATH til skjermen e) Rediriger standard output fra programmet regn til filen res. txt f) Hva blir output fra følgende kommando? echo "en to tre fire' grep to g) Hva blir output fra følgende kode? echo "studwvv 7878 80092 02:15 vhile read A B R 0:00 [apache]" done echo $A $8 Oppgave 2 a) Når du med nettleseren Firefox klikker på en side som bruker en Java-applet, blir du bedt om å installere Java ved å laste ned en "Linux self extracting binary file". Du laster den ned til katalogen /usr/java og filen heter jre-l_5_0-1inux-i586.bin. På en instruksjonsside blir du bedt om å gjøre noen kommandoer. Forklar helt kort hva hver kommando fører til: cd /usr/java/ cbmod a+x jre-l_5_o-1inux-is86.bin ls -l../jre-l_5_0-1inux-i586.bin cd /uar/1ib/aozi11a~t1retox/p1ugins 10 -s /usr/java/jrel.5.0/p1ugin/i386/ns7/1ibjavap1ugin_oji.so b) Du har en fil /home/hh/.deleted/:home:hh:prosjekt som tidligere lå i katalogen /home/hh og da hadde navnet prosjekt. Du flytter den tilbake med kommandoen
/ho.e/hh/.deleted/:home:hh:prosjekt /home/hh/prosjekt men nå finnes det en katalog /home/hh/prosjekt. Forklar kort hva som skjer c) Studer følgende utdrag av manualsiden for f ind FIND{lL) NAME tind - search tor tiles in a directory hierarchy SYlfOPSIS tind [path...] [expression] EXPRFSSIOJlS The expression is made up of options, testa (which return a true or false value), and actions (which have side etfects and return a true or false value), all separat ed by operators. -and is assumed wbere tbe operator i. oaitted. ~ Numeric arguments can be specified as +n -n n for greater than n for less than n. for exactly n. -amin n File vas last accessed n minutes ago -atime n ~i1. VAR la.~.~cessed n*24 hours ago -cain n File's status vas last changed n minutes ago..ctime n --. File's status vas last changed n*24 hours ago Fil.'. da~a vas las~ 8Odified n ainutes ago. -mtime n File's da~a vas last 8odified n*24 hours ago. -Dame pattern Base of file n..e (the path with the leading direc~ories removed) matches shell pat~ern pa~~ern. -type c File is of type c: d directory f regular file l 8Y8bolic link ACTIONS -exec co~d ; Execute c088add; true 1t O 8tatus 18 returned. All tollov1ng arguments to tind are taken to be argument8 to the co8mand unt11 anargument consisting ot ';' 1s 8ncountered. The 8tr1ng '{}' 18 replaced by the current file name being procebsed everyvhere it occurs in the argument B to the command, not just 1n arguments where 1t 1s alone. as 1n some vers ion! ot tind. 80th ot these construct10ns 81ght need to be escaped (w1th a "') or qaoted to protect them troa expan810n by the shell. The comaand 18 executed in the starting d1rectory. OPFJlATORS expr1 expr1 expr2 And (imp11ed); expr2 1s not evaluated if expr1 18 fal.. -a expr2 Saae as expr1 expr2. 2
grep Bruk tind til å. finne alle filer under hjernmekatalogen som ender på.log og hvor innholdet ble endret for mer enn 1 time siden og mindre enn 3 timer siden. Kommandoen skal gjøre en lang listing på. hver fil som finnes. d) Gi en enlinjers Linux-kommando som gir antall filer du har i din hjemmekatalog, inkludert alle filer i underkataloger (husk at du kan bruke pipe til å sette samen flere kommandoer til en). e) Se på følgende utdrag av manualsiden for kommandoen ping NAME P ing, ping6 - send ICHP ECHO_REQUEST to netvork SYNOPSIS ping [ -c countj [-t ttlj destination OPTIONS -c count -t ttl host Stop after sending count ECHO_REQUEST packets Set the lp Time to Live og forklar kort følgende kommando og den resulterende output: $ ping -c 1 -t 1 tid.uio.no I icmp From cadeler30-gw.uninett.no (128.39.89.1) icmp_seq=l Time to live exceeded f) Bruk informasjonen fra forrige deloppgave til å lage en enlinjers Linux-kommando som finner ut hvilke gateways en nettverkspakke som sendes til tid.uio.no er innom (gitt at det er færre en 10 gateways). Oppgave 3 a) Skrivet bash-script med navn sjekkpath som tar ett og bare ett argument og gjør følgende Avslutter og skriver ut en feilmelding om ikke nøyaktig ett argument er gitt Angir om argumentet er gitt med absolutt (full) eller relativ path. Angir om argumentet er en link, en fil, en katalog eller ingen av delene Hvis argumentet er en link, skal scriptet angi om det er link til en ill eller en kata.iog Angi om argumentet er lesbart Angi om argumentet er skrivbart Angi om argumentet er eksekverbart hvis det er en fil (at filen kan kjøres). Angi om man har tilgang til argumentet hvis det er en katalog (at man kan gå til katalogen) Det er den som kjører scriptet sine rettigheter som skal angis. Hint: Hvis argumentet er en link til en fil, vil både link og fil-testen slå til. Hvis det er en link til en katalog, vil både link og katalogtesten slå til. ~
Oppgave 4 a) En Linux brukerkonto defineres ved en linje i filen /etc/passvd. Eksempelvis kan en slik fil se slik ut root:x:o:o:root:/root:/bidjbaah da880d:x:l:l:~88od:/usr/sbid:/bid/sh 8.hd:x:l0l:65534::/var/ruD/88hd:/biD/fa1.e pridter:x:o:o:pridter AdmiD:/USr/sbiD:/bin/bash diego:x: 1002: 1002:Diego Armando Maradona:/home/diego:/biD/bash hh:x: 1000: 1000: Bårek Haugerud:/home/hh: /bin/baah Første kolonne er brukemavn og tredje kolonne er User-ll (Ull). Det er tallet gitt ved UID som Linux bruker til å identifisere brukerne. Alle brukernavn som har UID lik O vil ha root-rettigheter og dermed ingen begrensninger. Det er vanlig at hackere lager en konto som har et uskyldig brukernavn, men UID lik O og dermed administrator-rettigheter, slik som printer-kontoen i eksempelet. I denne oppgaven skal du lage et Perl-script som ved å lese /etc/passvd trekker ut følgende informasjon:. Brukernavn og fullt navn på alle kontoer som har UID~. Hvor mange kontoer som eksisterer på denne Linux-maskinen. Høyeste UID som noen av kontoene har Det siste ta.llet er nyttig å vite når man skal lage en ny konto. Scriptet skal skrive ut informasjonen linje for linje til terminalvinduet. b) Du har fått jobb i et firma der du ble ansatt fordi du i motsetning til de andre søkerne kunne skilte med gode Linux og Perl-kunnskaper. Firmaet er helt avhengig av at serveren deres til enhver tid kan kontaktes på port 21 (ftp), port 22 (ssh) og port 80 (http). Alle tjenestene kjøres på maskinen safir. telenux.no. Du får i oppdrag å skrive et Perl-program som hvert 5'te minutt prøver å koble opp en socketforbindelse mot hver av disse tre portene. Hvis en eller flere av oppkoblingene ikke lykkes, skal Per l-programmet sende en epost med informasjon om hvilke porter som ikke kan kontaktes til t elenuxgurugonl ine.no. Programmet ditt skal fortsette å sende disse epostene hvert 5'te minutt, helt til tjenesten er oppe igjen. Hvis en oppkobling lykkes, skal den bare kobles ned igjen. Du kan tenke deg at programmet skal stå. og kjøre kontinuerlig på en Linux-maskin hos et annent firma, slik at det tester om tjenestene på sat ir. telenux. no kan nås utenfra. Hint: Instruksjonen sleep(20); får et Perl-program til å vente (sove) i 20 sekunder. -slutr. 4