This shows you the differences between two versions of the page.
uso:teme:tema-2-evil-hidden-page [2017/10/31 14:32] maria.mihailescu |
uso:teme:tema-2-evil-hidden-page [2017/11/02 22:58] (current) maria.mihailescu |
||
---|---|---|---|
Line 26: | Line 26: | ||
Timp de lucru: **7 zile**\\ | Timp de lucru: **7 zile**\\ | ||
Punctaj: **0.8 puncte** din nota finală\\ | Punctaj: **0.8 puncte** din nota finală\\ | ||
- | Formular pentru trimitere temă: TODO | + | Formular pentru trimitere temă: [[ https://docs.google.com/forms/d/1comyo1UridI_FG-HqVlgJRq3q5VKHvNlzEh11iV0GvI | Formular submitere ]] |
</note> | </note> | ||
Line 66: | Line 66: | ||
Creați un script numit ''task01.sh''. Scriptul primește două argumente: | Creați un script numit ''task01.sh''. Scriptul primește două argumente: | ||
* argumentul 1 reprezintă numele unui script ce va fi creat din interiorul scriptului ''task01.sh'' | * argumentul 1 reprezintă numele unui script ce va fi creat din interiorul scriptului ''task01.sh'' | ||
- | * argumentul 2 reprezintă calea către scriptul ce va fi creat din interiorul scriptului. | + | * argumentul 2 reprezintă calea către directorul în care va fi creat noul script. |
Setați două variabile locale: ''MY_FILE'' și ''MY_PATH'' care să reprezinte primul și, respectiv, al doilea parametru al scriptului ''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''. | ||
Line 77: | Line 77: | ||
Exemplu de folosire a scriptului ''task01.sh'': | Exemplu de folosire a scriptului ''task01.sh'': | ||
<code bash> | <code bash> | ||
- | [student@uso]$ sh script.sh . file.sh | + | [student@uso]$ sh task01.sh file.sh . |
[student@uso]$ sh file.sh student | [student@uso]$ sh file.sh student | ||
CMD1 PID PPID USER UID GID | CMD1 PID PPID USER UID GID | ||
Line 155: | Line 155: | ||
Realizați următoarele modificări asupra sistemului: | Realizați următoarele modificări asupra sistemului: | ||
* **[5p]** Utilizatorul ''ash'' are drepturi depline asupra sistemului, însă poate executa ca utilizator privilegiat fără să i se ceară parola doar comenzile ''rev'' și ''tac''. | * **[5p]** Utilizatorul ''ash'' are drepturi depline asupra sistemului, însă poate executa ca utilizator privilegiat fără să i se ceară parola doar comenzile ''rev'' și ''tac''. | ||
- | * **[5p]** Utilizatorul ''meowth'' să poată executa ca utilizator privilegiat comanda ''cat''. | + | * **[5p]** Utilizatorul ''meowth'' să poată executa ca utilizator privilegiat comanda ''cat'' fără să i se ceară parola. |
- | * **[5p]** Utilizatorul ''james'' să poată să execute ca utilizator privilegiat comanda ''ls''. | + | * **[5p]** Utilizatorul ''james'' să poată să execute ca utilizator privilegiat comanda ''ls'' fără să i se ceară parola. |
Line 169: | Line 169: | ||
Să se realizeze un script numit ''task04.sh'' care primește ca argument adresa unui fișier ISO și o cale către un director și realizează următoarele verificări: | Să se realizeze un script numit ''task04.sh'' care primește ca argument adresa unui fișier ISO și o cale către un director și realizează următoarele verificări: | ||
- | * **[2p]** Dacă scriptul nu are fix două argumente, atunci se afișează următorul mesaj și se iese cu codul de eroare 1. | + | * a) **[2p]** Dacă scriptul nu are fix două argumente, atunci se afișează următorul mesaj și se iese cu codul de eroare 1. |
Exemplu 1: | Exemplu 1: | ||
<code bash> | <code bash> | ||
Line 181: | Line 181: | ||
Usage: sh task04.sh <path_to_iso_file> <path_to_dir> | Usage: sh task04.sh <path_to_iso_file> <path_to_dir> | ||
</code> | </code> | ||
- | * **[2p]** Scriptul verifică dacă fișierul dat ca argument este de tipul ISO. Dacă nu, atunci se afișează următorul mesaj și se întoarce codul de eroare 2. | + | * b) **[2p]** Scriptul verifică dacă fișierul dat ca argument este de tipul ISO. Dacă nu, atunci se afișează următorul mesaj și se întoarce codul de eroare 2. |
Exemplu: | Exemplu: | ||
<code bash> | <code bash> | ||
Line 187: | Line 187: | ||
file1.iso is not an ISO file | file1.iso is not an ISO file | ||
</code> | </code> | ||
- | * **[2p]** Se verifică dacă există folderul dat ca argument scriptului. Dacă folderul există și este de tip directory, se afișează următorul mesaj și întoarce codul de eroare 3. | + | * c) **[2p]** Se verifică dacă există folderul dat ca argument scriptului. Dacă folderul există și este de tip directory, se afișează următorul mesaj și întoarce codul de eroare 3. |
Exemplu: | Exemplu: | ||
<code bash> | <code bash> | ||
Line 193: | Line 193: | ||
iso_dir already exists | iso_dir already exists | ||
</code> | </code> | ||
- | * **[2p]** Dacă folderul există și este de tip regular file, se afișează următorul mesaj și se întoarce codul de eroare 4. | + | * d) **[2p]** Dacă folderul există și este de tip regular file, se afișează următorul mesaj și se întoarce codul de eroare 4. |
Exemplu: | Exemplu: | ||
<code bash> | <code bash> | ||
Line 199: | Line 199: | ||
iso_dir is not a directory; it’s a regular file | iso_dir is not a directory; it’s a regular file | ||
</code> | </code> | ||
- | * **[1p]** Dacă folderul există și este de tip char device, se afișează următorul mesaj și se întoarce codul de eroare 5. | + | * e) **[1p]** Dacă folderul există și este de tip char device, se afișează următorul mesaj și se întoarce codul de eroare 5. |
Exemplu: | Exemplu: | ||
<code bash> | <code bash> | ||
Line 205: | Line 205: | ||
iso_dir is not a directory; it’s a char device | iso_dir is not a directory; it’s a char device | ||
</code> | </code> | ||
- | * **[1p]** Dacă folderul există și este de tip block device, se afișează următorul mesaj și se întoarce codul de eroare 6. | + | * f) **[1p]** Dacă folderul există și este de tip block device, se afișează următorul mesaj și se întoarce codul de eroare 6. |
Exemplu: | Exemplu: | ||
<code bash> | <code bash> | ||
Line 211: | Line 211: | ||
iso_dir is not a directory; it’s a block device | iso_dir is not a directory; it’s a block device | ||
</code> | </code> | ||
- | * **[1p]** Dacă folderul există și este de tip symbolic link, se afișează următorul mesaj și se întoarce codul de eroare 7. | + | * g) **[1p]** Dacă folderul există și este de tip symbolic link, se afișează următorul mesaj și se întoarce codul de eroare 7. |
Exemplu: | Exemplu: | ||
<code bash> | <code bash> | ||
Line 217: | Line 217: | ||
iso_dir is not a directory; it’s a symlink | iso_dir is not a directory; it’s a symlink | ||
</code> | </code> | ||
- | * **[1p]** Se crează folderul indicat de al doilea argument. Dacă operația nu se realizează cu succes, se afișează mesajul următor și se întoarce codul de eroare 8. | + | * h) **[1p]** Se crează folderul indicat de al doilea argument. Dacă operația nu se realizează cu succes, se afișează mesajul următor și se întoarce codul de eroare 8. |
Exemplu: | Exemplu: | ||
<code bash> | <code bash> | ||
Line 223: | Line 223: | ||
Cannot create /iso_dir. | Cannot create /iso_dir. | ||
</code> | </code> | ||
- | * **[2p]** Se montează fișierul ISO primit ca prim argument în folderul dat ca al doilea argument. Dacă procesul eșuează, atunci se afișează următorul mesaj și se întoarce codul de eroare 9. | + | * i) **[2p]** Se montează fișierul ISO primit ca prim argument în folderul dat ca al doilea argument. Dacă procesul eșuează, atunci se afișează următorul mesaj și se întoarce codul de eroare 9. |
Exemplu: | Exemplu: | ||
<code bash> | <code bash> | ||
Line 229: | Line 229: | ||
Cannot mount file.iso in iso_dir | Cannot mount file.iso in iso_dir | ||
</code> | </code> | ||
- | * **[2p]** Se caută toate fișierele de configurare (.conf) din folderul în care a fost montat fișierul .iso. Calea către aceste fișiere, [calea absolută] se scriu în fișierul ''/home/student/tema02/task04/iso_conf_files.txt'', câte unul pe linie. | + | * j) **[2p]** Se caută toate fișierele de configurare (.conf) din folderul în care a fost montat fișierul .iso. Căile către aceste fișiere, [căile absolute] se scriu în fișierul ''/home/student/tema02/task04/iso_conf_files.txt'', câte unul pe linie. |
<note important> | <note important> | ||
Atenție! Nu se vor trece în fișierul | Atenție! Nu se vor trece în fișierul | ||
/home/student/tema02/task04/iso_conf_files.txt fișierele goale (cu dimensiune 0). | /home/student/tema02/task04/iso_conf_files.txt fișierele goale (cu dimensiune 0). | ||
</note> | </note> | ||
- | * **[2p]** Se caută fișierele module kernel .ko (kernel objects) cu dimensiunea mai mare decât 16 bytes din directorul în care s-a făcut mount la ISO. Rezultatele se trec în fișierul ''/home/student/tema02/task04/iso_ko_files.txt'', câte unul pe linie. | + | * k) **[2p]** Se caută fișierele module kernel .ko (kernel objects) cu dimensiunea mai mare decât 16 bytes din directorul în care s-a făcut mount la ISO. Rezultatele se trec în fișierul ''/home/student/tema02/task04/iso_ko_files.txt'', câte unul pe linie. |
La începutul fișierului se adaugă o linie care conține numărul de module kernel găsite care respectă constrângerile de mai sus urmată de o linie goală. | La începutul fișierului se adaugă o linie care conține numărul de module kernel găsite care respectă constrângerile de mai sus urmată de o linie goală. | ||
Line 245: | Line 245: | ||
./boot/kernel.ko | ./boot/kernel.ko | ||
</code> | </code> | ||
- | * **[2p]** La sfârșit, scriptul trebuie să iasă cu codul de eroare 42. | + | * l) **[2p]** La sfârșit, scriptul trebuie să iasă cu codul de eroare 42. |
<note warning>Toate sub-punctele sunt dependente de sub-punctele anterioare. În concluzie, nu se acordă punctaj pentru subpunctul ''1.b.I'' dacă sub-punctul ''1.a'' nu este funcțional, ș.a.m.d. Această regulă este valabilă pentru orice sub-punct al acestui exercițiu. | <note warning>Toate sub-punctele sunt dependente de sub-punctele anterioare. În concluzie, nu se acordă punctaj pentru subpunctul ''1.b.I'' dacă sub-punctul ''1.a'' nu este funcțional, ș.a.m.d. Această regulă este valabilă pentru orice sub-punct al acestui exercițiu. | ||
Line 322: | Line 322: | ||
Scriptul nu trebuie să conțină instrucțiuni de decizie, interne Bash, precum ''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''. | Scriptul nu trebuie să conțină instrucțiuni de decizie, interne Bash, precum ''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''. | ||
</note> | </note> | ||
+ | |||
+ | <note> | ||
+ | Constrângerile impuse pentru acest task: | ||
+ | - ''oneliner.sh'' să fie un script de tip oneliner | ||
+ | - ''uniques.txt'' trebuie: | ||
+ | - să conțină câte un cuvânt pe linie | ||
+ | - să conțină cuvintele unice sortate descrescător din: | ||
+ | - fișierele care conțin grupul ''.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. | ||
+ | - fișierele care conțin grupul ''.gr8b.''. Pentru aceste fișiere se vor considera doar primele 3 linii ale acestora. | ||
+ | - să nu conțină cuvintele: ''password'', ''123456'', ''abcd'', ''passw0rd'', ''qwerty''. | ||
+ | - să fie generat de către script | ||
+ | - ''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. | ||
+ | </note> | ||
+ | |||
==== Task 06 (10p) ==== | ==== Task 06 (10p) ==== |