This is an old revision of the document!
Thread nou? Nu. Pentru o ușoară parcurgere a mesajelor, folosiți thread-urile de discuții existente în cadrul forumului, fără a crea altele. În consecință, thread-urile (subiectele de discuții) nou create vor fi șterse.
Căutare. Căutați pe forum informația pe care doriți să o obțineți, înainte să puneți o întrebare. De cele mai multe ori, cineva a mai întrebat același lucru. În fiecare thread al forumului aveți informații despre cum puteți căuta în forum.
Printscreen/poză? Nu. În cazul în care doriți să publicați un printscreen pe forum, recomandăm folosirea site-urilor pentru partajarea gratuită a imaginilor, precum imgur sau alternativele sale, publicând pe forum doar link către printscreen. Pozele inserate în răspunsuri, vor fi șterse.
Actualizări. Urmăriți atât forumul cât și modificările aduse enunțului/checker-ului, modificări ce sunt publicate și explicate în paragrafele de mai jos.
Regulament. Înainte și în timpul realizării temei, vă rugăm să parcurgeți indicațiile legate de realizarea temelor, încluzând ce înseamnă o temă copiată și cum penalizăm temele copiate. Folosiți cu încredere forumurile de pe cs.curs.pub.ro pentru întrebări și neclarități legate de teme.
Întrebări frecvente. În timpul realizării temei, când vă loviți de probleme și aveți nevoie de suportul echipei de USO, parcurgeți și lista de întrebări frecvente întâlnite în cadrul temelor. Să țineți cont, va rugăm, și de recomandările de comunicare electronică.
Ajutor reciproc. Vă încurajăm ca atunci când găsiți soluția la o problemă pe care ați postat-o anterior pe forum să postați și soluția găsită. De asemenea dacă știți răspunsul la întrebările colegilor sunteți încurajați să le răspundeți.
ip address show
).
Actualizări utilitar uso
: versiunea v16 - “Gold Blackbird”
Actualizări checker: versiunea 3
enp0s8
.i386/ubuntu
, ci doar cu numele.
uso
uso
, consultați instrucțiunile de utilizare.Descărcare mașină virtuală și informații despre aceasta
Testarea temei se va face doar pe mașina virtulă (aici) autentificat ca utilizator student
, folosind utilitarul uso
. Acesta poate fi executat în orice moment pentru a verifica dacă au fost rezolvate corect task-urile. Nu lucrați autentificat ca utilizator root
în sistem, la nicio temă. Din acest motiv există posibilitatea să nu vă treacă testele. Pe de altă parte, nu este o metoda de siguranță să lucrați autentificat ca utilizator root
din motive de securitate și/sau permisiuni.
Utilitarul uso
implementează testele doar pentru task-urile temei curente. La fiecare temă nouă, pentru a folosi utilitarul uso
, primul pas este să porniți tema folosind comanda sudo uso start
. În caz contrar, nu veți avea actualizat checker-ul pentru tema curentă.
Verificați versiunea utilitarului uso
cât și a checker-ului, afișată la rularea comenzii sudo uso start
sau sudo uso check
, pe prima linie a output-ului. Asigurați-vă că aveți ultima versiune înainte de a continua lucrul pentru temă. Versiunea actuală este specificată în secțiunea Informații generale prezentă în enunțul temei. Pentru situațiile în care nu dispuneți de ultima versiune a utilitarului uso
sau checker-ului, rulați sudo uso update
.
Finalizarea temei se realizează prin rularea comenzii sudo uso submit
și încărcarea codului returnat de această comandă (32 de caractere alfanumerice), în formularul din secțiunea Informații generale. Pentru a evita transcrierea eronată a codului returnat de checker, recomandăm copierea acestuia din interfața mașinii host conectată prin SSH către mașina guest după cum urmează:
Pe parcusul acestei teme vom folosi virtualizarea bazată pe containere. Există mai multe proiecte care automatizează lucrul cu containere Linux, iar unul dintre cele mai populare este Docker. Docker este un proiect open source început în 2013 și, în momentul de față este foarte folosit și în industrie (Google, Amazon, Microsoft). Vom folosi containere pentru această temă pentru a da senzația că avem mai multe mașini virtuale conectate la mașina virtuală de USO (usovm
), cu multiple interfețe de rețea pe care le vom configura în diverse moduri cu scopul de a comunica între ele sau în Internet. În realitate, un container nu este o mașină virtuală.
docker images
;docker run -it image
;docker stop/start CONTAINER_NAME
;Ctrl+P Ctrl+Q
;docker attach CONTAINER_NAME
;docker ps
;docker ps -a
;docker rm
;docker rmi
.
i386/ubuntu:latest
folosind comanda docker pull
.uso-base
care folosește imaginea descărcată la punctul anterior. Containerul trebuie să rămână pornit. Urmăriți exemplul de aici.inetutils-ping
, iproute2
, openssh-server
, sshpass
, vim
și sudo
pe containerul uso-base
.student
pe containerul uso-base
cu parola student
. Setați directorul home al acestuia la /home/student
și shellul la /bin/bash
.ssh
între mașina virtuală de USO (usovm
) și containerul uso-base
folosind userul student
.uso-base
cu numele uso/ubuntu
. Hint: docker commit
Checkerul va genera la prima sa rulare 3 containere uso1
, uso2
și uso3
care folosesc imaginea creată la Task 1. Vă puteți atașa la oricare dintre ele folosind comanda docker attach CONTAINER_NAME
. În cazul în care ați făcut o configurație greșită și doriți reinițializarea containerelor, ștergeți-le (docker stop uso1 uso2 uso3 && docker rm uso1 uso2 uso3
) și rulați din nou checkerul.
eth1
a containerului uso1
, a 11-a adresă asignabilă din rețeaua 192.168.42.0/24
.eth1
a containerului uso2
, a 12-a adresă asignabilă din rețeaua 192.168.42.0/24
. Testați conectivitatea între cele 2 containere prin intefețele eth1
folosind comanda ping
.ssh
cu credențialele student:student
de pe userul 'student'. Conexiunea va folosi adresa IP asignată intefețelor eth1
, nu eth0
.ssh
, de pe userul student
, fără parolă, la cele 2 containere uso1
și uso2
pe IP-urile configurate pe intefețele eth1
. Conexiunea trebuie să se poată realiza pentru userul student
de pe containere.ssh
, de pe userul student
, fără parolă, la containerul uso2
pe IP-ul configurat pe intefeța eth1
. Conexiunea trebuie să se poată realiza pentru userul root
de pe container.
uso1
și uso2
trebuie să fie pornite la finalul acestui task. Interfețele eth1
ale celor două containere trebuie să aibă configurată câte o singură adresă IP.
eth0
de pe containerul uso3
.eth1
a containerului uso3
o adresă liberă, la alegere, din rețeaua 192.168.42.0/24
. Hint: Adresa 192.168.42.1
este asignată intefeței usobridge
de pe host (usovm
). Un container nu poate fi rebootat, testați faptul că ați făcut configurările corecte folosind comanda service networking restart
în containerul uso3
.uso3
să aibă conexiune la internet. Testați folosind comanda ping -c 2 8.8.8.8
. Configurarea trebuie să fie permanentă.uso2
altfel încât comanda ping google.com
să se execute cu succes. /home/student/tema3/
de pe mașina virtuală de USO (usovm
), cu numele iface-info.sh
care afișează informații despre o interfață de rețea primită ca parametru. Rezultatul trebuie să respecte următorul format (exact 3 linii):student@usovm:~$ /home/student/tema3/iface-info.sh enp0s8 MAC: 08:00:27:0E:C4:CA IP: 172.28.128.4 Netmask: 255.255.255.0
Restricții și precizări:
stdout
;Gimme more args
la stderr
;stderr
mesajul No such interface
;1
;0
;ip address show
);08:00:27:0E:C4:CA
, nu 08:00:27:0e:c4:ca
;lo
se va afișa MAC-ul acesteia ca fiind 00:00:00:00:00:00
(așa cum raportează ip address show
).iface-info.sh
pentru a putea primi două argumente. Primul argument este numele unei interfețe, iar al doilea este numele unui container pornit. Hint: docker exec
Restricții și precizări suplimentare față de primul subpunct:
stderr
mesajul No such container
;No such container
;
În urma primei rulări a checkerului pentru acest task, pe mașina virtuală de USO (usovm
) veți găsi fișierul /home/student/1024_gmail_passwords.txt
.
/home/student/1024_gmail_passwords.txt
în toate cele 3 containere uso1
, uso2
și uso3
în directorul /var/passwords/<CONTAINER_NAME>, unde <CONTAINER_NAME> este numele containerului. De exemplu, pentru containerul uso1
, fișierul se va găsi în urma copierii la calea /var/passwords/uso1/1024_gmail_passwords.txt
de pe containerul uso1
./uso/1024_yahoo_passwords.txt
de pe containerul uso3
în directorul /home/student/
de pe host (mașina virtuală de USO).usovm
) astfel încât să fie posibilă conectarea la containerele uso1
și uso2
folosind numele lor, nu doar adresele IP (setate la Taskul #2) ale interfețelor eth1
de pe containere. De exemplu:student@usovm:~$ ping uso1 PING uso1 (192.168.42.11) 56(84) bytes of data. 64 bytes from uso1 (192.168.42.11): icmp_seq=1 ttl=64 time=0.047 ms 64 bytes from uso1 (192.168.42.11): icmp_seq=2 ttl=64 time=0.052 ms
/home/student/tema3/keys
de pe mașina virtuală de USO (usovm
). NU setați niciun passphrase pentru ele.student
de pe host (mașina virtuală de USO) să se poată conecta pe containerul uso1
ca userul student
, fără parolă, folosind cheile generate la subpunctul anterior.Asigurați-vă că ați submis tema și ați încărcat codul aferent submisiei în formularul din secțiunea de Informații generale. Acest lucru este necesar ori de câte ori modificați tema și o submiteți din nou (detalii aici), până la termenul limită. În caz contrar, punctajul aferent temei va fi nul (0 puncte).