This shows you the differences between two versions of the page.
info1:laboratoare:04 [2020/10/07 14:05] 127.0.0.1 external edit |
info1:laboratoare:04 [2020/11/10 09:01] (current) ioana_maria.culic |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ===== Laboratorul 04. ===== | + | ===== Laboratorul 04 - Utilizatori ===== |
+ | |||
+ | {{page>uso:laboratoare:ac:laborator-03:users&nofooter&noeditbutoon}} | ||
+ | |||
+ | ====Permisiuni==== | ||
+ | |||
+ | |||
+ | Pentru a inspecta permisiunile și deținătorii unui anumit director sau fișier folosim comanda ''ls'', împreună cu argumentul ''-l''. | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~$ ls -l /home/student | ||
+ | total 56 | ||
+ | drwxr-xr-x 2 student student 4096 aug 6 17:41 Desktop | ||
+ | drwxr-xr-x 3 student student 4096 aug 20 21:00 Documents | ||
+ | drwxr-xr-x 2 student student 4096 aug 6 17:41 Downloads | ||
+ | drwxr-xr-x 2 student student 4096 aug 6 17:41 Music | ||
+ | drwxr-xr-x 2 student student 4096 aug 6 17:41 Pictures | ||
+ | drwxr-xr-x 2 student student 4096 aug 6 17:41 Public | ||
+ | drwxr-xr-x 2 student student 4096 aug 6 17:41 Templates | ||
+ | drwxr-xr-x 2 student student 4096 aug 6 17:41 Videos | ||
+ | -rw-r--r-- 1 student student 8980 aug 6 17:37 examples.desktop | ||
+ | drwxr-xr-x 14 student student 4096 aug 20 20:57 uso.git | ||
+ | -rw-r--r-- 1 student student 4827 aug 21 14:37 vm-actions-log.txt | ||
+ | </code> | ||
+ | |||
+ | Dacă rulăm comanda pe un director, implicit se vor lista fișierele din director și nu vom vedea permisiunile acestuia. Pentru a vedea permisiunile directorului, putem folosi argumentul ''-d'' pentru comanda ''ls'', împreună cu calea către director. | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~$ ls -ld uso-lab/ | ||
+ | drwxr-xr-x 14 student student 4096 aug 20 20:57 uso-lab/ | ||
+ | </code> | ||
+ | |||
+ | Semnificația fiecărui câmp din outuput-ul anterior este prezentată în tabelul de mai jos, folosind ca exemplu informațiile afișate pentru directorul ''Desktop''. | ||
+ | |||
+ | ^ Tip ^ Permisiuni ^ Număr de referințe ^ Owner ^ Grup ^ Dimensiunea în octeți ^ Data și ora ultimei modificări ^ Nume ^ | ||
+ | | d | rwxr-xr-x | 2 | student | student | 4096 | aug 6 17:41 | Desktop | | ||
+ | |||
+ | Coloanele din tabel au următoarea semnificație: | ||
+ | |||
+ | * Tip: indică dacă intrarea este un fișier (''-'') sau director (''d'') | ||
+ | * Permisiuni: specifică ce drepturi au asupra fișierului cele trei categorii de utilizatori (owner, grup și others). Fiecărui grup îi corespund 3 caractere (r -- read; w -- write, x -- execute). În acest caz, owner-ul fișierului (utilizatorul ''student'') are toate cele trei permisiuni (''rwx''), iar utilizatorii din grupul ce deține fișierul (grupul ''student'') și toți ceilalți utilizatori din sistem (''others'') au permisiuni de citire și execuție (''r-x''). | ||
+ | * Owner/Grup - utilizatorul/grupul care dețin fișierul | ||
+ | |||
+ | Permisiunile se pot specifica și folosind cifre (notație în baza 8 -- //octal//): | ||
+ | * ''r'' = 4 | ||
+ | * ''w'' = 2 | ||
+ | * ''x'' = 1 | ||
+ | Pentru a determina permisiunile unei anumite categorii, adunăm cele 3 valori. Astfel, pentru exemplul de mai sus, permisiunile sunt ''755'' (7 pentru owner, 5 pentru grup și 5 pentru others). | ||
+ | |||
+ | === Modificarea permisiunilor === | ||
+ | |||
+ | La crearea unui fișier sau director se atribuie valori implicite pentru permisiuni. Acestea se pot modifica ulterior. | ||
+ | |||
+ | Pentru a demonstra modul de lucru cu permisiunile, vom crea un fișier nou, după care îi vom modifica permisiunile. | ||
+ | Permisiunile noi se pot specifica folosind comanda ''chmod'', folosind oricare din cele doua notații: | ||
+ | |||
+ | - În octal: 777 (drepturi depline: rwx), 740 (drepturi depline pentru owner, de citire pentru utilizatorii din grup și nicio permisiune pentru alți utilizatori). | ||
+ | - Alfabetică: +/-[rwx] -- o folosim de obicei atunci când dorim să modificăm o singură permisiune. De exemplu, ''+r'' permite accesul de citire, iar ''-w'' șterge accesul de scriere. | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~$ touch testfile.sh | ||
+ | student@uso:~$ ls -l testfile.sh | ||
+ | -rw-r--r-- 1 student student 0 sep 16 16:47 testfile.sh | ||
+ | </code> | ||
+ | |||
+ | După cum observăm, nu vom putea executa scriptul nou creat, deoarece utilizatorul student nu are drepturi de execuție asupra lui. Ne propunem să permitem execuția, folosind ambele metode. | ||
+ | |||
+ | #1 | ||
+ | <code bash> | ||
+ | student@uso:~$ chmod +x testfile.sh | ||
+ | student@uso:~$ ls -l testfile.sh | ||
+ | -rwxr-xr-x 1 student student 0 sep 16 16:47 testfile.sh | ||
+ | |||
+ | student@uso:~$ chmod -x testfile.sh | ||
+ | student@uso:~$ ls -l testfile.sh | ||
+ | -rw-r--r-- 1 student student 0 sep 16 16:47 testfile.sh | ||
+ | </code> | ||
+ | |||
+ | #2 | ||
+ | <code bash> | ||
+ | student@uso:~$ ls -l testfile.sh | ||
+ | -rw-r--r-- 1 student student 0 sep 16 16:47 testfile.sh | ||
+ | student@uso:~$ chmod 755 testfile.sh | ||
+ | student@uso:~$ ls -l testfile.sh | ||
+ | -rwxr-xr-x 1 student student 0 sep 16 16:47 testfile.sh | ||
+ | </code> | ||
+ | |||
+ | === Permisiuni pentru grupuri === | ||
+ | |||
+ | După cum este explicat pe larg mai sus, pentru orice operație pe care un utilizator dorește să o facă asupra unui fișier sau director, acesta trebuie să aibă permisiunile necesare. | ||
+ | |||
+ | Atunci când mai mulți utilizatori trebuie să aibă anumite permisiuni asupra unui fișier (citire, scriere, execuție), se crează un nou grup cu utilizatorii respectivi și se setează acest grup ca grupul ce deține fișierul. | ||
+ | |||
+ | <note> | ||
+ | Înainte să trecem la un exemplu, rulați comanda ''umask 0022''. Vom clarifica la secțiunea ''Nice to know'' ce face ea. | ||
+ | </note> | ||
+ | Să luăm exemplul următor. Utilizatorul ''student'' crează fișierul ''studenti.txt''. | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~$ touch student.txt | ||
+ | student@uso:~$ ls -l student.txt | ||
+ | -rw-rw-r-- 1 student student 0 sep 25 21:42 student.txt | ||
+ | </code> | ||
+ | |||
+ | După ce a fost creat, ownerul fișierului este userul ''student'', iar grupul ce deține fișierul este ''student''. | ||
+ | Dorim ca acest fișier să poată fi editat de utilizatorii ''ana'', ''bogdan'' și ''david''. | ||
+ | Toți acești utilizatori sunt deja într-un grup comun: ''studenti''. Astfel, tot ce ne rămâne de făcut este să modificăm grupul fișierului. | ||
+ | |||
+ | <note info> | ||
+ | Pentru a modifica grupul fișierului putem folosi atât comanda ''chown'', cât și ''chgrp''. | ||
+ | </note> | ||
+ | |||
+ | <code bash> | ||
+ | student@uso:~$ sudo chgrp studenti student.txt | ||
+ | student@uso:~$ ls -l student.txt | ||
+ | -rw-rw-r-- 1 student studenti 4 sep 25 21:54 student.txt | ||
+ | </code> | ||
+ | |||
+ | Acum putem verifica că și ceilalți utilizatori pot modifica conținutul fișierului: | ||
+ | |||
+ | <code bash> | ||
+ | ana@uso:/home/student$ echo Ana > student.txt | ||
+ | ana@uso:/home/student$ cat student.txt | ||
+ | Ana | ||
+ | </code> | ||
+ | |||
+ | **Exerciții** | ||
+ | - Să se creeze fișierul ''shared'' de către utilizatorul ''student''. Faceți modificările necesare astfel încât utilizatorul ''student'' să poată modifica fișierul, utilizatorii ''bogdan'' și ''david'' să poată vizualiza conținutul fișierului, iar oricine altcineva să nu aibă niciun drept (testați cu utilizatorul ''ana''). | ||
+ | - Faceti modificarile necesare astfel încât utilizatorul ''ana'' să poată modifica fișierul, utilizatorii ''bogdan'' și ''david'' să poată vizualiza conținutul fișierului, iar oricine altcineva să nu aibă niciun drept (testați cu utilizatorul ''student''). | ||