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.
Actualizări utilitar uso
: versiunea v16 - “Gold Blackbird”
Actualizări checker: versiunea 3
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ă:
Checker-ul nu generează structurile de directoare cerute.
Vă aflați în folderul /home/student/tema02/task01
.
Creați un script numit task01.sh
. Scriptul primește două argumente:
task01.sh
Setați două variabile locale: MY_FILE
și MY_PATH
care să reprezinte primul și, respectiv, al doilea parametru al scriptului task01.sh
.
Din interiorul scriptului task01.sh
trebuie scris un nou script cu numele indicat de MY_FILE
și care să se afle în locația MY_PATH
. Se garantează faptul că MY_PATH este o cale validă existentă în sistemul de fișiere.
Scriptul MY_FILE
trebuie să primească ca parametru un nume de utilizator și să afișeze procesele utilizatorului respectiv după următorul format:
process_name pid ppid username user_id group_id
Exemplu de folosire a scriptului task01.sh
:
[student@uso]$ sh task01.sh file.sh . [student@uso]$ sh file.sh student CMD1 PID PPID USER UID GID sshd 35911 35871 student 42596 9007 bash 35912 35911 student 42596 9007 sh 39465 35912 student 42596 9007 ps 39466 39465 student 42596 9007
Faceți următoarele modificări în sistem astfel încât să respectați cerințele de mai jos:
ash
misty
brock
Utilizatorul ash
trebuie să aibă parola gotta_catch_them_all
. Utilizatorul misty trebuie să aibă parola staryu
, iar utilizatorul brock trebuie să aibă parola onix
.
Utilizatorii misty
și brock
trebuie adăugați în grupul gym_leaders
.
Utilizatorul ash
trebuie să aibă home-ul în /home/ash_very_best
.
jessie
cu parola PrepareForTrouble
james
cu parola MakeItDouble
meowth
cu parola ThatsRight
Adăugați cei trei utilizatori (jessie, james și meowth) în grupul team_rocket
/home/student/tema02/task02
.bulbasaur
pikachu
snorlax
vulpix
eevee
ekans
koffing
student
.
bulbasaur
, pikachu
și snorlax
vor avea:ash
care are toate drepturile asupra celor 3 fișieregym_leaders
care poate doar citi și scrie în și din aceste fișierevulpix
și eevee
vor avea:root
care are drepturi de citire și de scriere asupra celor două fișierespecials
care are drepturi de citireekans
aparține utilizatorului jessie
și grupului team_rocket
koffing
aparține utilizatorului james
și grupului team_rocket
ekans
și koffing
pot fi modificate doar de către utilizatorii proprietari sau de către utilizatorii din grupul team_rocket
. Toți utilizatorii pot să le citească și să le parcurgă conținutul.
Realizați următoarele modificări asupra sistemului:
ash
are drepturi depline asupra sistemului, însă poate executa ca utilizator privilegiat fără să i se ceară parola doar comenzile rev
și tac
.meowth
să poată executa ca utilizator privilegiat comanda cat
fără să i se ceară parola.james
să poată să execute ca utilizator privilegiat comanda ls
fără să i se ceară parola. Task 04 nu este obligatoriu pentru USO-AC. Pentru nota maxima este de ajuns sa se obtine 80/100 puncte pe checker.
Din motive de infrastructura nu vom avea un checker diferit, se va ignora acest task.
[student@uso]$ wget https://github.com/systems-cs-pub-ro/uso/raw/master/tema2/task05_files.tar
Vă aflați în directorul /home/student/tema02/task05/
.
Dezarhivați arhiva task05_files.tar.gz
.
Fiind dată ierarhia de fișiere din folderul /home/student/tema02/task05/task05_files
obținut în urma dezarhivării, să se realizeze un script oneliner numit oneliner.sh
care afișează cuvintele unice și sortate descrescător (invers alfabetic) din fișierele care conțin în denumirea lor grupul .gr
urmat de o cifră mai mare sau egală cu 6 și de către caracterele b.
între liniile 5 și $EOF (end of file) din fiecare fișier și din fișierele care conțin în denumirea lor grupul .gr8b.
în primele 3 linii ale fiecărui fișier.
Atenție! Printre cuvinte obținute nu trebuie să se afle următoarele cuvinte: password
, 123456
, abcd
, passw0rd
, qwerty
.
Cuvintele trebuie să se afle câte unul pe linie și să fie scrise în fișierul /home/student/tema02/task05/uniques.txt
.
Atenție! Scriptul nu va fi rulat doar din /home/student/tema02/task05/
.
test
sau if
și nici instrucțiuni repetitive precum for
sau while
, ultimele trei nefiind studiate până la acest moment. De asemenea, comenzile unui oneliner nu sunt separate de caracterul ;
(punct și virgulă). Altfel, acestea pot fi la fel de bine scrise una sub alta, lucru care degradeaza noțiunea de oneliner
.
oneliner.sh
să fie un script de tip onelineruniques.txt
trebuie:.gr
urmat de o cifră mai mare sau egal ca 6 și de grupul b.
. Pentru aceste fișiere se vor ignora primele 4 linii..gr8b.
. Pentru aceste fișiere se vor considera doar primele 3 linii ale acestora.password
, 123456
, abcd
, passw0rd
, qwerty
.oneliner.sh
să nu conțină: ;
, instrucțiuni for
, while
, test
sau if
.oneliner.sh
să funcționeze pentru orice număr de fișiere. Scripturile cu valori hardcodate NU vor fi punctate.
Vă aflați în directorul /home/student/tema02/task06
.
filesys.bin
cu dimensiunea de 10MBext2
.mymnt
în care faceți mount sistemului de fișere creat la subpunctul anterior. În sistemul de fișiere adăugați următoarea structură de fișiere:ext2
adăugați directoarele dir0
și dir1
.dir0
adăugați un fișier numit file0
dir1
adăugați un link simbolic către fișierul file0
creat anterior, iar link-ul simbolic să se numească file1
(file1
trebuie să fie link simbolic relativ la file0
- folosiți căi relative).filesys.bin
.
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).