NB! Tekstens apostrofer: `
er en liten \
mens '
er en liten /
Oppgave 1
a) cd
(alternativt cd ~
eller cd $HOME
)
b) ln -s undervisning/forelesning/threads threads
(OK også uten threads til slutt)
c) chmod 700 run
d) chmod -R 755 ~/www
e) user=`whoami`
f) ssh-keygen -t dsa -N "" -f ~/.ssh/id_dsa
g) Den vil hete id_dsa.pub
og blir lagt i ~/.ssh/
h) Hensikten er å kunne logge inn med ssh
på en annen maskin (og kopiere filer til og fra samme
maskin med scp
) uten å måtte skrive passord hver gang og uten at
det gir muligheter for andre å gjøre det samme. Hvis man kopierer filen id_dsa.pub
til den andre maskinen og
der legger innholdet til på slutten av filen ~/.ssh/authorized_keys
, vil dette oppnås.
Oppgave 2
a)
#! /bin/bash if [ ! "$1" ]; then echo "Usage: slogin host" exit fi user=`whoami` host=$1 if [ ! -f ~/.ssh/id_dsa ]; then ssh-keygen -t dsa -N "" -f ~/.ssh/id_dsa else echo "Bruker eksisterende fil ~/.ssh/id_dsa" fi scp ~/.ssh/id_dsa.pub $user@$host: ssh $host "cat ~/id_dsa.pub >> ~/.ssh/authorized_keys " ssh $host "/bin/rm ~/id_dsa.pub" # Følgende mer avanserte løsning gjør de 3 siste kommandoene i en operasjon: # cat ~/.ssh/id_dsa.pub | ssh $host "xargs >> ~/.ssh/authorized_keys"
b)
#! /bin/bash if [ ! "$1" ]; then echo "Usage: slogin host [user]" exit fi host=$1 notdns=`host $host | grep "not found"` if [ "$notdns" ]; then echo "Avslutter. Finner ikke $host: $notdns" exit fi if [ "$2" ]; then user=$2 else user=`whoami` fi if [ ! -f ~/.ssh/id_dsa.pub ]; then ssh-keygen -t dsa -N "" -f ~/.ssh/id_dsa fi scp ~/.ssh/id_dsa.pub $user@$host: ssh $user@$host "cat ~/id_dsa.pub >> ~/.ssh/authorized_keys " ssh $user@$host "/bin/rm ~/id_dsa.pub" # Følgende mer avanserte løsning gjør de 3 siste kommandoene i en operasjon: # cat ~/.ssh/id_dsa.pub | ssh $user@$host "xargs >> ~/.ssh/authorized_keys"
Oppgave 3
a) 128.39.74.16 er cube's 32 bits IP-adresse.
b) MAC-adresse (Media Access Control) er en adresse som brukes i data link laget (lag 2) som adresse på lokalnettet og den er permanent lagret i nettverkskortet. IP-adresse (Internet Protocol) er en adresse som brukes i nettverkslaget(lag 3) som global adresse på Internett. IP-adressen tilordnes et nettverksinterface og kan dermed endres ved behov. MAC-adressen ligger i frame-headeren, IP-adressen i IP-headeren.
c) Kommandoen er ifconfig
og den er utført på nix
.
d) IP-adressen er 128.39.74.71, MAC-adressen 00:0F:1F:8D:70:2A og netmask 255.255.254.0.
e) Nei, den sendes direkte til nix
sin MAC-adresse på lokalnettet og trenger derfor ikke å gå innom gatewayen.
f) Ja, nexus
er ikke på samme lokalnett og pakken må derfor sendes til gatewayen som videresender
den til nexus
.
g) Siden pakken videresendes av en switch på lokalnettet vil den under normale forhold (når switchen har lært seg
hvor de forskjellige MAC-adressene er) bare sendes til nexus
.
h) Siden pakken videresendes av en HUB på lokalnettet vil den under normale forhold sendes til alle maskinene på lokalnettet, siden HUB'er vanligvis videresender alle pakker til alle.
i) IP-adressen til dax er 128.39.89.338 og den kan ikke være gyldig for det største tallet som kan representers med 8 bit er 255 og 338 kan ikke inngå i en gyldig IP-adresse.
j) Vi vet fra ifconfig
kommandoen at netmask er 255.255.255.254 for dette nettet og det betyr at
de første 23 bit'ene utgjør nettverksnummeret. De første 23 bit'ene av 128.39.74.0 og 128.39.75.0 er de
samme og det betyr at de er på samme lokalnettverk. 128.39.75.0 er forøvrig en gyldig host IP-adresse på
dette nettverket.
k)
sender adresse | 128.39.74.16 | cube |
mottager adresse | 158.36.89.12 | nero |
source port | 23 | sendt fra tjeneste 23, telnet, på server |
destination port | 3536 | portnummer generert av telnet-klient, større enn 1024 |
SYN | 1 | SYN-flagg settes i første svarpakke i handshakingen |
ACK | 1 | ACK-flagg er også satt i første svarpakke |
l)
sender adresse | 158.36.89.12 | nero |
mottager adresse | 128.39.74.16 | cube |
source port | 3536 | telnet-klient beholder dette portnummeret |
destination port | 23 | til tjeneste 23, telnet, på server |
SYN | 0 | SYN-flagg er kun satt i de to første pakkene i handshakingen |
ACK | 1 | ACK-flagg er satt i alle svarpakker |
m) Ja, telnet sender passord i klartekst og det er da enkelt å lese det fra pil52-gw.uninett.no som alle pakkene må gå igjennom.
n) Brukeren på nero
bør logge seg på cube
med en tjeneste som krypterer passord og
helst alt som sendes, som for eksempel ssh
.
o) Et portnummer består av 16 bit og det høyeste mulige portnummeret er dermed
.
Oppgave 4
#! /usr/bin/perl 10 if ( $#ARGV != 0 ) { die "Gi passordfilen som eneste argument: cehck.pl /etc/passwd\n"; } 5 $passwd = $ARGV[0]; 5 $host = `hostname`; 5 $os = `uname`; chomp($host); 5 print "Scriptet kjører på $host under OS'et $os"; 5 if ( ! -f $passwd ) { die "Passordfilen finnes ikke!\n"; } 5 if ( ! -r $passwd ) { die "Passordfilen er ikke lesbar!\n"; } $ls = `ls -l $passwd`; 5 print "$ls"; # root:x:0:0:root:/root:/bin/bash open(PASS,"$passwd"); 10while ($line = <PASS>) { 5$nr++; # Teller brukere 10($user,$x,$uid,$gid,$navn,$home,$shell) = split(":",$line); if ("$uid" == 0) { $uid0 .= " $user ($navn)\n"; } if($userInfo{$user}) { # Samme brukernavn $user finnes fra før $sammeUser{$user} .= " UID $uid ($navn)\n"; } else { # $user finnes ikke fra før $userInfo{$user} = " UID $uid ($navn)\n"; } if($uidInfo{$uid}) { # Samme $uid finnes fra før $sammeUid{$uid} .= " Brukernavn $user ($navn)\n"; } else { # $uid finnes ikke fra før $uidInfo{$uid} = " Brukernavn $user ($navn)\n"; } } close(PASS); print "Det er $nr $antall brukere i passordfilen\n"; if($uid0) { print "\nFølgende brukere har UID = 0: \n$uid0\n"; } if(%sammeUser) { print "Følgende brukere har samme brukernavn:\n"; foreach $user (sort keys %sammeUser) { print "Brukernavn $user:\n$userInfo{$user}$sammeUser{$user}\n"; } } if(%sammeUid) { print "Følgende brukere har samme userID:\n"; foreach $uid (sort keys %sammeUid) { print "Uid $uid:\n$uidInfo{$uid}$sammeUid{$uid}\n"; } }