Table of Contents

Tema 1 - Utilizare Linux

Informații generale

Deadline: 21 Martie, 23:55
Timp de lucru: 13 zile
Punctaj: 1p din nota finala

Actualizări enunț:

  • Nu există actualizări

Dacă aveți întrebări în rezolvarea temei, puteți urca întrebările voastre pe repository-ul questions.

Fiecare întrebare se va pune sub forma unui issue cu label-ul Devoir 1.

Cunoștințe evaluate

Maşini virtuale teme

Pentru a descărca mașina virtuală folosiți aceleași credențiale ca pe platforma Moodle.

Odată descărcată mașina vituală, contul pentru autentificare este student cu parola student și are permisiuni de sudo.

Testare

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.

Sintaxă

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.

Exceptând parametrii version și check, toate celelalte necesită prezența unei conexiuni de Internet.

Finalizarea temei cu ajutorul comenzii 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ă.

Pași

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.

  1. se pornește tema cu uso start N unde N este tema curenta
  2. se verifică tema cu uso check
    1. pentru verificarea unui singur task putem folosi comanda uso check N, unde N reprezinta numărul task-ului
    2. exemplu: uso check 4
  3. dacă rezultatele de la pasul anterior nu sunt ok, se repetă pasul 2 și 3
    1. altfel, se finalizează tema folosind uso submit.
  4. se păstrează fișierele aferente temei - nu se șterg fișiere (pentru o eventuală contestație, dacă va fi necesar)
  5. dacă după trimiterea temei se fac modificări asupra exercițiilor, se repetă pasul 2, 3, 4, 5 și 6
    1. acest lucru este permis doar dacă nu a fost depășit deadline-ul temei
  6. oricând pe parcursul ciclului de mai sus, se poate rula uso update.

Puteți submite tema (pasul 3.a) ori de câte ori doriți (în cazul în care faceți modificări asupra temei), însă doar înainte de de deadline-ul temei. Se va lua în considerara doar ultimul cod submis înainte de deadline. Orice submisie după deadline nu va fi luată în considerare.

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.

Task-uri

Este interzisă publicarea pe forum a comenzilor sau pozelor care fac parte din rezolvarea parțială sau integrală a temei ori a unui task. La prima abatere studentul primește un avertisment, iar punctajul obținut pe temă îi este redus cu valoarea punctajului pe task-ul respectiv. Începând cu a doua abatere, se va anula întregul punctaj pe tema curentă, temele anterioare sau cele viitoare nefiind afectate. Abaterile rămân valabile pe tot parcursul semestrului, acestea nefiind anulate în momentul în care se publică o temă nouă. Ori de câte ori se încalcă această regulă, se va ține cont de istoricul abaterilor. Abaterile vor fi actualizate în catalog.

Task 01 (0p)

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

Procedură import fişier OVA în VirtualBox

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:

BIOS settings

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)

BIOS - basic input output system, un mini sistem de operare (cunoscut ca firmware, instalat in ROM) care are cateva setari de baza pentru PC-ul tau si face o mica interfatare intre hardware si sistemul de operare efectiv

Verificați conexiunea la internet rulând comanda ping către un site și verificati că site-ul răspunde (Hint: man ping)

Pentru rezolvarea temei aveți nevoie în continuare de conexiune la Internet din interiorul mașinii virtuale, insa rezolvarea temelor nu necesita o conexiune permanenta la Internet. Pentru orice problemă, folosiți forumul de pe Moodle. Nu treceti mai departe până nu sunteți siguri că puteți accesa Internetul din interiorul mașinii virtuale!

Î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ă.

Task 02 (0p)

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:

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)

Task 03 (10p)

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.

Nu treceți mai departe până nu v-ați autentificat pe 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

Task 04 (35p)

[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

Directoarele au după nume caracterul / (slash).

Punctajul se ofera de la folderele rădăcină către frunze. Asta înseamnă că s-ar putea să faceți anumite foldere sau fișiere care să fie în structură și checkerul să nu le puncteze decât dacă faceți într-o anumită ordine structura. Nu este nici o problemă. Atâta timp cât întreaga structură va fi creata, puteți să faceți fișierele sau folderele în orice ordine doriți și veți primi punctaj maxim.

[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)

După rezolvarea cerințelor acestui task, nu ștergeți sau modificați conținutul directorului ~/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).

Task 05 (12p)

[12p] Aflându-vă în directorul uso, folosiți câte o singură comandă pentru fiecare dintre următoarele cerințe:

  1. Faceți o copie a folderului 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).
  2. În folderul Clone:
    1. Mutați fisierul Mailto: `Netwalker' din WannaCry în Father Christmas.
    2. Redenumiți Bad > Rabbit în Bad & Rabbit.
    3. Redenumiți SQL $lammer în $QL Slammer.
    4. Adaugați fisierul |STbar.c în directorul Internet Optimizer.

Cerințele de mai sus trebuie rezolvate în ordine.

După rezolvarea cerințelor acestui task, nu ștergeți sau modificați conținutul directorului ~/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.

Task 06 (18 p)

Î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.

Vom considera că toți utilizatorii care lansează servicii în sistem au atribuit shell-ul /usr/sbin/nologin.

Task 07 (25 p)

Î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:

  1. (10 p) Va adăuga o intrare de forma <Oras temperatura vreme> în fișierul /home/student/tema2-scripts-output/weather.info.

Ex: La rularea comenzii ./weather.sh Bucuresti 10 soare fișierul weather.info va conține linia Bucuresti 10 soare.

Pentru acest one-liner, nu adăugați linia #!/bin/bash în fișier.

  1. (15 p) Va memora starea actuală a vremii și a temperaturii pentru fiecare oraș în fișierul 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.

Ex: După rularea comenzilor ./weather.sh Bucuresti 10 soare și ./weather.sh Bucuresti 8 ploaie fișierul live.info va conține linia Bucuresti 8 ploaie.

Task 08 (0p)

Finalizați tema.

Pentru a primi punctaj pe această temă trebuie să rulați checkerul (cu parametrul 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

Avertisment

Este interzis studenților să modifice parametrii de rulare ai mașinii virtuale. Orice tentativă malițioasă de modificare a fișierelor și executabilelor care fac mașina virtuală sa ruleze in parametrii optimi (fișierele si folderele ce nu țin de enunțul temei curente), ne conferă dreptul de a oferi 0 puncte pe temele respectivului student.