Fiecare întrebare se va pune sub forma unui issue cu label-ul Devoir 1.
Pentru a descărca mașina virtuală folosiți aceleași credențiale ca pe platforma Moodle.
student
cu parola student
și are permisiuni de sudo
.
Testarea temei se va face doar pe mașina virtuală 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.
Mașina virtuală pusă la dispoziție oferă toate setările necesare pentru efectuarea temei precum și setări necesare pentru colectarea de statistici privind dificultatea temei (pentru echilibrarea dinamică a acestora).
Orice folosire a utilitarului uso
se va face doar prin intermediul utilizatorului student
, însă cu drepturi privilegiate (folosind sudo
în fața comenzii). Singura excepție este valabilă pentru comanda uso version
, care nu necesită folosirea drepturilor privilegiate.
Executabilul uso
va fi folosit pentru a obține checkerul fiecărei teme, pentru a verifica temele și pentru a submite codul final în momentul terminării acestora.
Sintaxa folosită de checker este uso [OPTION]…
, unde [OPTION]…
reprezintă o listă de parametri opţionali şi poate avea una dintre valorile de mai jos. În cazul în care nu s-a specificat niciun parametru OPTION
, acțiunea implicită este de a rula parametrul check
.
version
: Afișează versiunea curentă a executabilului uso
.check
: Verifică tema curentă în întregime și afișează punctajele aferente fiecărui taskcheck N
: Unde N
reprezintă numărul task-ului din enunțul update
: Actualizează atât checkerul temei curente cât și executabilul uso
. Recomandarea este să efectuați update
de fiecare dată când se anunță pe forum faptul că a fost actualizat checker-ul.start N
: Descarcă executabilele necesare funcționării unei noi teme. Poate restaura o temă la configurația inițială, doar dacă este specificat în cerința temei.uso start
înaintea fiecărui task.uso start
în prealabil.submit
: Finalizează tema.
Exceptând parametrii version
și check
, toate celelalte necesită prezența unei conexiuni de Internet.
uso submit
este obligatorie!
Chiar și după ce ați încărcat codul, NU modificați fișierele corespunzătoare temei! Dacă vor exista probleme în corectarea temei, iar fișierele au fost modificate după submiterea codului, contestațiile NU vor mai fi luate în considerare. Puteți în schimb să lucrați pe mașina virtuală fără nicio problemă, atâta timp cât nu sunt alterate fișierele ori condițiile de funcționare a oricărui task din tema precedentă.
Rețineți că orice folosire a utilitarului uso
se va face doar prin intermediul utilizatorului student
, însă cu drepturi privilegiate (folosind sudo
în fața comenzii). Singura excepție este valabilă pentru comanda uso version
, care nu necesită folosirea drepturilor privilegiate.
În acest moment considerăm că mașina virtuală este înregistrată corespunzător cu contul de utilizator corespunzător fiecărui student. Dacă această condiție este îndeplinită cu succes, pașii uzuali de lucru pentru o temă se regăsesc mai jos.
uso start N
unde N este tema curentauso check
uso check N
, unde N
reprezinta numărul task-uluiuso check 4
uso submit
.uso update
.
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 <numar_tema>
. În caz contrar, nu veți avea actualizat checker-ul pentru tema curentă.
Verificați versiunea checker-ului, afișată la rularea comenzii sudo uso version
. 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 checker-ului, rulați sudo uso update
.
Finalizarea temei se realizează prin rularea comenzii sudo uso submit
.
Mașina virtuală
Primul pas este să rulați mașina virtuală pusă la dispoziție de echipa de Sistemelor de Operare. Pentru a rula mașina virtuală, urmați instrucțiunile de mai jos.
Pentru început, asigurati-vă că ați descărcat mașina virtuală: https://repository.grid.pub.ro/cs/uso/USOTeme.ova
Pentru rularea mașinii virtuale, trebuie să importați fișierul OVA în VirtualBox accesând File apoi Import Appliance, ca în imaginea de mai jos:
Va apărea opțiunea de a selecta calea către fișierul OVA pe care l-ați descărcat, ca mai jos:
Această mașină conține o serie de configurații implicite cum ar fi: 1 core CPU, 512 MB memorie RAM. Le vom vedea listate mai jos. Asigurați-vă că:
Apoi va începe importul şi va arăta ca mai jos, aveţi răbdare să termine:
După finalizarea importului, asigurati-va ca creati un host network: File → Host Network Manager → Create:
Porniți mașina virtuală și autentificați-vă folosind numele de utilizator student
și parola student
. O veţi vedea în meniu ca mai jos. Click dreapta pe ea, START → Normal Start:
Recomandări:
root
și student
,Fiecare BIOS e diferit ca optiuni si navigare aici va trebui sa cautati pe net cum se intra in el si sa faci modificarile (de obicei se apasa o tasta la bootare (. DEL sau F2) inainte sa porneasca sistemul de operare)
Verificați conexiunea la internet rulând comanda ping
către un site și verificati că site-ul răspunde (Hint: man ping
)
În acest moment mașina virtuală are acces la Internet, și mașina fizică (host) poate comunica cu mașina virtuală (guest). Mașina virtuală poate porni într-un timp destul de mare, de până la 120 de secunde. Mașina virtuală are facută o regulă de port forwarding care permite connectarea ușoara între mașina fizică și mașina virtuală.
SSH
Scopul acestui task este să vă conectați de pe mașina fizică (denumită în continuare host sau mașina gazdă) către mașina virtuală (denumită în continuare guest) folosind protocolul SSH. Din Linux/macOS puteți folosi utilitarul ssh
(man ssh
), iar de pe Windows puteți folosi programul PuTTy, pe care trebuie să-l descărcați de la adresa http://www.putty.org/, secțiunea Download PuTTy. Din lista de programe disponibile la adresa anterior menționată, este suficient să alegeți putty.exe de sub secțiunea For Windows on Intel x86.
Pentru a finaliza acest task, aveți nevoie de următoarele:
student
)student
)localhost
(Hint: este localhost
deoarece am folosit port forwarding. Functioneaza doar daca folositi VirtualBox) sau <ip-ul masinii virtuale> (Rulati comanda ip address show
in masina virtuala pentru a afla adresa IP)2222
(doar daca folositi Virtual Box si ati setat localhost
) sau 22
(daca ati folosit ip
ca si adresa a interfetei).
Vă puteți conecta de pe mașina host către mașina guest cu un număr nelimitat de instanțe ale programelor mai sus menționate (ssh
sau PuTTy). Pe Linux/macOS puteți face acest lucru deschizând pe mașina host un nou tab/terminal în care vă veți conecta la mașina guest prin SSH. Rulați comanda man ssh
și căutați după parametrul -l
(L
mic). Pe Windows puteți face acest lucru deschizând o nouă instanță de PuTTy și introducând ca IP localhost
și ca port 2222
sau puteti folosi client-ul built-in de ssh al Windows-ului (mai multe detalii aici)
Checkerul uso
Temele sunt verificate automat cu ajutorul unui checker, instalat pe mașina virtuală USO, sub forma executabilului uso
. Checkerul trebuie rulat într-un terminal și are nevoie de drepturi privilegiate (sudo
). Mai sus este descris modul în care puteți folosi utilitarul uso
.
Pentru a putea lucra la o temă și a trimite rezolvarea, trebuie să vă autentificați cu username-ul și parola de pe http://curs.upb.ro la adresa https://temeuso.cs.pub.ro.
După aceea, va trebui să folosim utilitarul uso
și instrucțiunile oferite de această comandă în terminal, prin care vom asocia mașina virtuală cu contul vostru.
Pentru a începe, vom rula din terminal:
student@vm-uso ~ $ sudo uso
ATENȚIE!!! Toate tastele introduse de la tastatură in mașina virtuală sunt înregistrate. Evitați să introduceți in aceasta orice fel de parole sau date sensibile/personale.
După înregistrare, începeți lucrul la Tema 0.
student@vm-uso ~ $ sudo uso start 1
Pentru a verifica dacă tema rulează corect, rulați checkerul.
student@vm-uso ~ $ sudo uso check
[5p] Clonați în directorul /home/student
repository-ul disponibil la adresa https://github.com/usoHomeworks/Tema1.git
. Directorul creat după clonare trebuie să aibă numele uso
.
[25p] Adaugați în directorul uso
următoarea structură de directoare și fișiere:
Malware/ ├── Computer Worms/ │ ├── Hall of fame/ │ │ ├── Morris │ │ ├── Blaster Worm/ │ │ ├── Mydoom │ ├── SQL $lammer │ ├── Father Christmas/ │ └── Good Worms/ │ ├── XSS Worms/ │ ├── Welchia │ └── Cheeze ├── Spyware/ │ ├── CoolWebSearch/ │ │ ├── Gator.c │ │ ├── 180search Assistant.c │ │ └── |STbar.c │ ├── AUpdate/ │ │ └── Transponder │ └── Internet Optimizer/ │ └── Hot as Hell └── Ransomware/ ├── WannaCry/ │ ├── Mailto: `Netwalker' │ ├── Cerber/ │ └── Bad > Rabbit └── Maze Ransomware/ ├── Cryptomix.c └── Thanos
/
(slash).
[5p] Adăugați directorul “Malware” și toate fișierele conținute într-o arhivă cu numele “archive.tar.bz2”, de tip bzip compressed care să se afle în directorul uso
.
(Hint: man tar)
~/uso/Malware/
. Acesta trebuie să râmână în această formă pentru verificările ulterioare ale checker-ului. Veți pierde punctele obținute pentru acest task dacă faceți modificări și va fi nevoie de refacerea taskului. Puteți totuși modifica ownerii (Task 3).
[12p] Aflându-vă în directorul uso
, folosiți câte o singură comandă pentru fiecare dintre următoarele cerințe:
Malware
din folderul uso
care să se numească Clone
și să se afle tot în folderul uso
(în folderul uso
vor exista acum ambele foldere: Malware
și Clone
).Clone
: Mailto: `Netwalker
' din WannaCry
în Father Christmas
.Bad > Rabbit
în Bad & Rabbit
.SQL $lammer
în $QL Slammer
.|STbar.c
în directorul Internet Optimizer
.
Cerințele de mai sus trebuie rezolvate în ordine.
~/uso/Clone/
. Acesta trebuie să râmână în această formă pentru verificările ulterioare ale checkerului. Veți pierde punctele obținute pentru acest task dacă faceți modificări și va fi nevoie de refacerea task-ului.
În directorul home/student/tema2-scripts
, creați un script numit users.sh
ce sortează alfabetic utilizatori din fișierul /etc/passwd
care lansează servicii în sistem și afișează numele și serviciile aferente acestora pentru primii 10. Numele utilizatorilor și serviciul aferent vor fi separate prin :
(ex. irc:irc). Scriptul va afișa informațiile în fișierul /home/student/tema2-scripts-output/users.out
.
În fișierul /home/student/tema2-scripts/weather.sh
creați un one-liner care primește argumente în linia de comandă. Argumentele sunt de forma <Oras temperatura vreme> (ex. Bucuresti 10 soare). Scriptul va realiza următoarele acțiuni:
/home/student/tema2-scripts-output/weather.info
.
./weather.sh Bucuresti 10 soare
fișierul weather.info
va conține linia Bucuresti 10 soare
.
#!/bin/bash
în fișier.
live.info
(dacă un oraș există, informațiile vor fi actualizate, dacă nu există, se va adăuga o intrare nouă). Fiecare linie din fișierul live.info
va fi de forma Oras temperatura vreme
.
./weather.sh Bucuresti 10 soare
și ./weather.sh Bucuresti 8 ploaie
fișierul live.info
va conține linia Bucuresti 8 ploaie
.
Finalizați tema.
submit
) în timp ce sunteți conectați prin SSH de pe mașina host pe mașina guest. Acest lucru este obligatoriu doar în cadrul acestei teme. Pentru celelalte teme nu este obligatoriu să fiți conectați prin SSH în momentul în care efectuați submit
.
student@vm-uso ~ $ sudo uso submit