Oppgave 1
a) chmod 700 ./secret.pl
b) ln -s /usr/bin/emacs21 em
c) diff /tmp/bank.txt bank.txt
(eventuelt med --brief
, alt cmp
)
d) echo "The End" >> ../film.txt
e) ifconfig
(eventuelt /sbin/ifconfig
) eller hostname -i
f) Fordi du som vanlig bruker ikke har skriverettigheter til /etc/passwd
, det har bare root.
g) Siste linje av filen /etc/passwd
Oppgave 2
#! /bin/bash if [ $# -ne 1 ] then echo "Syntaks: $0 brukernavn" exit fi user=$1 if [ "`whoami`" != "root" ] then echo "Scriptet kan bare kjøres av root" exit fi IFS=: while read username x uNr gNr name homedir shell do if [ "$username" = "$user" ] then echo "Brukeren $user finnes fra før. Avslutter" exit fi userNr=$uNr # $uNr er kun definert innen do-done løkken groupNr=$gNr done < /etc/passwd # Nå er $userNr og $groupNr de to siste og største (( userNr++ )) (( groupNr++ )) echo -en "Fullt navn: " read userName mkdir /home/$user chown $userNr:$groupNr /home/$user # ikke eksplisitt spurt etter dette, men pluss om man har det med echo "$user:x:$userNr:$groupNr:$userName:/home/$user:/bin/bash" >> /etc/passwd echo "$user::::::::" >> /etc/shadow
Oppgave 3
a) Det er IP-adressen til maskinen www.nb.no.
b) www
er host-navn og nb.no
er domenenavn.
c) En gateway sørger på lag 3 i OSI-modellen for å videresende IP-pakker ett steg (hop) nærmere riktig adressat. Er IP-adressen den skal sende til en maskin på et nettverk den er tilkoblet, sender den rett til denne maskinen. Hvis ikke videresender gatewayen pakken til en annen gateway på Internett.
d) Med denne netmasken er de 24 første bit'ene nettverksnummeret, altså 128.39.16.0, og hostnummeret er 12.
e) Netmask 255.255.252.0
betyr at de 22 første bit'ene er nettverksnummeret,
altså 129.18.72.0
og de 10 siste bit'ene er hostnummeret, altså
11.00001011 = 512 + 256 + 11 = 779
f) host www.nb.no
eller nslookup www.nb.no
g) Nei, siden maskinene er koblet til en switch, vil geek.nb.no
ikke kunne lese pakkene
som går til www.nb.no
(men det finnes mer eller mindre effektive metoder som kan brukes til å
lure switchen til å gjøre det).
h) Ja, siden have.fun.no
og join.fun.no
er koblet til samme HUB, sendes alle pakkene til alle
maskinene og en med root-rettigheter på have.fun.no
vil kunne
lese passordet i klartekst ved for eksempel å bruke etherreal
.
i) En som kjører som root på have.fun.no
vil kunne se pakkene som sendes til
geek.nb.no
, men siden ssh
blir brukt er all kommunikasjon kryptert og passordet kan ikke snappes opp.
j) En som kjører som root på gateway.nb.no
vil også kunne se alle pakker som sendes, men ikke kunne
snappe opp passordet fordi all informasjon er kryptert.
k)
sender adresse | 129.18.74.56 | have.fun.no |
mottager adresse | 128.39.16.250 | geek.nb.no |
source port | 3425 | portnummer generert av ssh-client, større enn 1024 |
destination port | 22 | ønsker å kontakte tjeneste 22, ssh, på server |
SYN | 1 | SYN-flagg settes i første pakke i handshakingen |
ACK | 0 | ACK-flagg er ikke satt i første pakke |
l)
sender adresse | 128.39.16.250 | geek.nb.no |
mottager adresse | 129.18.74.56 | have.fun.no |
source port | 22 | ssh-serverens portnummer |
destination port | 3425 | portnummeret som client sendte i forrige pakke |
SYN | 1 | SYN-flagg settes også i andre pakke i handshakingen |
ACK | 1 | ACK-flagg settes i svarpakken (acknowledge) |
m) Ja, siden all web-trafikk har source eller destination port lik 80, kan det gjøres ved å droppe alle andre pakker.
n) Firewall eller brannmur (også kalt netfilter)
o) Nei, hver gang en pakke passerer en gateway, endres MAC-adressene slik at den går til riktig maskin på det nye nettverket. Innenfor et lokalt nettverk er det lag 2 adressen som brukes. Det er kun lag 3 IP-adressene som sendes hele veien.
p) Når pakkene sendes nøyaktig samtidig ut på et nettverk koblet sammen med en HUB, vil det oppstå en fysisk kollisjon, slik at mottagerene ikke vil kunne lese pakkene. Ethernet-protokollen har Colission Detection og ethernet-kortene som sendte pakkene vil oppdage kollisjonen og sende pakkene på nytt etter å ha ventet et tidsintervall som begge velger med tilfeldig lengde.
Oppgave 4
#! /bin/perl if ($#ARGV != 0) { die "Angi ett filnavn som argument!\n"; } $fil = $ARGV[0]; $filny = "/tmp/$fil"; open(FIL,$fil) or die "can't open $fil\n"; open(FILNY,">$filny") or die "can't open $filny\n"; while($line = <FIL>) { $line =~ s/\r$//; print FILNY $line; } close(FIL); close(FILNY); `/bin/mv $filny $fil`; # Alternativt: system("/bin/mv",$filny,$fil);