This is an old revision of the document!
Comandă | Descriere scurtă |
---|---|
sudo | execută o comandă cu drepturi de utilizator privilegiat |
su | schimbă utilizatorul cu care suntem autentificați |
id | afișează id-ul și grupurile din care face parte un utilizator |
finger | afișează un sumar despre un anumit utilizator |
whoami | afișează utilizatorul curent (cu care suntem autentificați) |
who | lista de utilizatori autentificați la un moment dat |
passwd | schimbă parola unui utilizator |
adduser | adaugă un utilizator |
deluser | șterge un utilizator |
usermod | modifică informații despre un utilizator (exemplu: grupul din care face parte) |
addgroup | adaugă un grup de utilizatori |
delgroup | șterge un grup de utilizatori |
Pe parcursul laboratoarelor, pentru descărcarea fișierelor necesare laboratorului, vom folosi Git. Git este un sistem de controlul versiunii și e folosit pentru versionarea codului în proiectele software mari. Celor interesați să aprofundeze conceptele din spatele comenzii git
, precum și utilizări avansate, le recomandăm cursul practic online de pe gitimmersion.
Informațiile despre laboratorul de USO se găsesc în acest repository Git.
În laboratorul curent, pe sistemele din laborator (și pe mașina virtuală) aveți deja clonat repository-ul Git în directorul ~/uso.git/
. Vom preciza acest lucru pe parcursul laboratorului.
Ctrl+Alt+t
. În listarea de mai jos student@uso:~$
este promptul unde introduceți comenzile, pe acela nu-l tastați. Recomandăm să nu folosiți copy-paste ca să vă acomodați cu linia de comandă:
student@uso:~$ cd uso.git/ student@uso:~/uso.git$ git rm --cached -r . student@uso:~/uso.git$ git reset --hard student@uso:~/uso.git$ git clean -f -d student@uso:~/uso.git$ git fetch origin student@uso:~/uso.git$ git checkout -b lab-03-user student@uso:~/uso.git$ git rebase origin/lab-03-user
Dacă la a cincea comandă rulată (git checkout -b lab-03-user
) primiți o eroare de forma fatal: A branch named 'lab-03-user' already exists.
, nu vă îngrijorați, nu e nici o problemă.
Dacă la un moment dat în lucrul în repository ați șters sau modificat ceva și doriți să reveniți la starea inițială, rulați din nou comenzile de mai sus.
Cam atât cu pregătirea laboratorului. Acum haideți să ne apucăm de treabă!
În Linux există trei tipuri de utilizatori:
Utilizatorul root
este creat automat la instalarea sistemului de operare Linux și are drepturi depline asupra tuturor serviciilor și resurselor din sistem, având și rolul de a administra și gestiona ceilalți utilizatori. Acesta mai poartă și denumirea de super user
.
Utilizatorii obișnuiți au doar privilegiile necesare pentru a efectua activități standard pe un sistem Linux, cum ar fi rularea aplicațiilor cu interfață grafică și editarea de fișiere. Aceștia pot stoca fișiere în propriile directoare (home
). Întrucât utilizatorii obișnuiți nu au, în mod normal, privilegii administrative, nu pot șterge accidental fișierele de configurare critice ale sistemului de operare.
Servicii cum ar fi Apache (server web), server de mail, baze de date, etc. au utilizatori proprii care sunt folosiți pentru a permite fiecăruia dintre aceste servicii să interacționeze cu sistemul, fără a avea acces la mai multe resurse decât este necesar.
În acest laborator ne vom axa pe primele două tipuri și vom împărți utilizatorii în:
În Linux sunt două moduri de a rula comenzi cu drepturi administrative. Putem să schimbăm utilizatorul curent în root
sau putem folosi funcționalitatea oferită de comanda sudo
.
Comanda sudo
permite rularea unor comenzi ca un alt utilizator (utilizatorul privilegiat).
root
doar pentru strictul necesar. De multe ori este suficientă utilizarea comenzii sudo
.
La crearea unui utilizator, se crează automat și un grup cu același nume ce va conține utilizatorul abia creat. Acesta poartă numele de primary group
. De asemenea, utilizatorii pot crea oricâte alte grupuri.
Un grup poate conține unul sau mai mulți utilizatori, iar un utilizator poate să existe în unul sau mai multe grupuri.
Atât utilizatorii cât și grupurile de utilizatori sunt folosiți în Linux pentru controlul accesului. Controlul accesului presupune restricționarea operațiilor pe care utilizatorii le pot executa asupra resurselor sistemului (crearea de fișiere și directoare, modificarea și ștergerea acestora, execuția de programe, etc.).
Astfel, nici un utilizator nu poate să modifice/folosească un fișier dacă el, grupul din care face parte sau grupul others
nu au acest drept (vom detalia imediat).
În Linux, exista două concepte ce sunt folosite pentru a oferi securitate la nivelul sistemului de fișiere:
Fiecare fișier este deținut de un singur utilizator și de un singur grup, și are anumite permisiuni. Fiecare utilizator sau grup poate să dețină mai multe fișiere.
Fiecare resursă din sistemul de fișiere are permisiuni pentru trei categorii de utilizatori:
Pentru fiecare dintre cele trei categorii există trei permisiuni, care oferă următoarele drepturi:
Ordinea în care se aplică aceste permisiuni este următoarea:
În acest demo dorim să ne acomodăm cu cele mai importante comenzi utilizate atunci când lucrăm cu utilizatori, grupuri de utilizatori sau permisiuni în Linux.
sudo apt-get install <numele comeznii>
pentru a le instala.
Exemplu: sudo apt-get install finger
.
În continuare, vom vedea cum putem afla informații despre utilizatori.
În sistem exista cel puțin doi utilizatori: utilizatorul cu care ne-am logat (student
) și utilizatorul privilegiat root
.
Pentru a afla informații despre un utilizator sau pentru a verifica dacă un anumit utilizator există, putem folosi comanda finger
.
student@uso:~$ finger student Login: student Name: Student User Directory: /home/student Shell: /bin/bash On since Sun Sep 16 15:07 (EEST) on :0 from :0 (messages off) No mail. No Plan. student@uso:~$ finger root Login: root Name: root Directory: /root Shell: /bin/bash Never logged in. No mail. No Plan.
În outputul comenzii observăm informații despre utilizatorul student
, precum directorul home
, numele complet etc.
O altă comandă utilă este id
. Cum și numele sugerează, ne dă id-ul utilizatorului (uid
) dar și id-urile grupurilor (gid
) din care face parte utilizatorul curent.
student@uso:~$ id uid=1000(student) gid=1000(student) groups=1000(student),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lpadmin),126(sambashare)
Pentru a vedea cu ce utilizator suntem logați, putem folosi comanda whoami
.
student@uso:~$ whoami student
Să presupunem că pe un sistem avem 100 de utilizatori și vrem ca toți să aibă drepturile necesare instalării de noi pachete, dar să nu poată adăuga/șterge alți utilizatori. Pe lângă faptul că ar fi foarte foarte nesigur ca 100 de persoane să știe parola contului de root, ar trebui să ne bazăm pe faptul că ei nu vor face altceva decât să instaleze pachete. Soluția acestei probleme este comanda sudo
.
Această comandă permite execuția de comenzi de către utilizatori neprivilegiați cu drepturi de utilizatori privilegiați. Se poate configura ce utilizatori au drept să execute această comandă și ce comenzi pot rula ca utilizator privilegiat.
De exemplu, dacă dorim să instalăm pachetul cowsay
ca utilizatorul student
, vom primi o eroare de permisiune.
student@uso:~$ apt-get install cowsay E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied) E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
După cum observăm din eroarea afișată în output, nu avem drepturi să instalăm pachete.
Pentru a rezolva această problemă folosim comanda sudo
.
student@uso:~$ sudo apt-get install cowsay [sudo] password for student: student@uso:~$ cowsay "Meuh" ______ < Meuh > ------ \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || ||
sudo
cere parola utilizatorului curent (în cazul nostru utilizatorul student
), nu pe cea a utilizatorului root
.
Pentru a schimba utilizatorul cu care suntem autentificați, folosim comanda su
(switch user). Comanda lansează o sesiune nouă de terminal în contextul noului utilizator, deci pentru a reveni la utilizatorul precedent este suficient să rulăm comanda exit
pentru a termina noua sesiune.
Înlănțuirea de comenzi de mai jos schimbă utilizatorul curent din student
în root
, verifică că acum utilizatorul logat este root
, închide sesiunea utilizatorului root
și revine la utilizatorul student
folosind comanda exit
.
Întrucât nu cunoaștem parola utilizatorului root
, putem folosi această comanda împreună cu comanda sudo
.
student@uso:~$ sudo su root [sudo] password for student: root@uso:/home/student# whoami root root@uso:/home/student# exit exit student@uso:~$
În continuare vom crea noi utilizatori iar ulterior îi vom șterge. Pentru aceasta, vom folosi comenzile adduser și deluser .
useradd
și userdel
.
Dorim să creăm utilizatorul bogdan
. Mai întâi verificăm că acesta nu există, după care îl adăugăm.
student@uso:~$ finger bogdan
finger: bogdan: no such user.
student@uso:~$ sudo adduser bogdan Adding user `bogdan' ... Adding new group `bogdan' (1002) ... Adding new user `bogdan' (1002) with group `bogdan' ... Creating home directory `/home/bogdan' ... Copying files from `/etc/skel' ... Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully Changing the user information for bogdan Enter the new value, or press ENTER for the default Full Name []: Bogdan Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] Y
În outputul comenzii anterioare observăm mai multe informații utile la adăugarea unui nou utilizator:
/etc/skel
finger
.bogdan@uso:~$ finger bogdan Login: bogdan Name: Bogdan Directory: /home/bogdan Shell: /bin/bash Never logged in. No mail. No Plan.
După aceasta ne autentificăm ca utilizatorul bogdan
. Argumentul -
este folosit pentru comanda su
pentru a schimba directorul curent la home-ul noului utilizator.
student@uso:~$ su - bogdan Password: bogdan@uso:~$ pwd /home/bogdan bogdan@uso:~$ whoami bogdan
Dacă utilizatonul nu mai este necesar în sistem, îl ștergem folosind comanda deluser
.
student@uso:~$ sudo deluser bogdan Removing user `bogdan' ... Warning: group `bogdan' has no more members. Done. student@uso:~$ finger bogdan finger: bogdan: no such user.
Pentru a schimba parola utilizatorului curent folosim comanda passwd
, fără argumente. Înainte de introducerea unei parole noi, trebuie să validăm parola veche.
student@uso:~$ passwd Changing password for student. (current) UNIX password: Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
Dacă dorim schimbarea parolei altui utilizator, îi putem oferi comenzii passwd
numele acestuia ca parametru.
root@uso:~# passwd student Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
Pentru a inspecta permisiunile și deținătorii unui anumit director sau fișier folosim comanda ls
, împreună cu argumentul -l
.
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
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.
student@uso:~$ ls -ld uso.git/ drwxr-xr-x 14 student student 4096 aug 20 20:57 uso.git/
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:
-
) sau director (d
)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
).Permisiunile se pot specifica și folosind cifre (notație în baza 8 – octal):
r
= 4w
= 2x
= 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).
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:
+r
permite accesul de citire, iar -w
șterge accesul de scriere.student@uso:~$ touch testfile.sh student@uso:~$ ls -l testfile.sh -rw-r--r-- 1 student student 0 sep 16 16:47 testfile.sh
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
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
#2
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
student
.
Înainte de a începe exercițiile, nu uitați să rulați comenzile de Git
din secțiunea Folosire Git pentru laborator.
În Linux există un fișier ce stochează informații despre toți utilizatorii din sistem.
Acest fișier este /etc/passwd
, este un fișier text, și conține o listă cu utilizatorii din sistem și informații despre fiecare din ei, cum ar fi: user ID
, group ID
, home directory
, etc. Astfel, de fiecare dată când adăugăm un nou utilizator, se adaugă automat și o intrare în acest fișier.
Pentru mai multe detalii puteți accesa pagina de Wikipedia.
student@uso:~$ cat /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin ...
Exerciții
ana
, bogdan
și david
și să se afișeze informații utile despre aceștia (grupurile din care fac parte, directorul home, etc.).
-
pentru comanda su
:
student@uso:~$ su - ana Password: ana@uso:~$
La crearea unui utilizator, se crează în mod automat și un grup cu același nume. Dacă dorim să realizăm o organizare diferită a utilizatorilor, putem să creăm noi grupuri.
Pentru crearea unui grup se folosește comanda addgroup
, iar pentru ștergerea unui grup folosim delgroup
.
student@uso:~$ sudo addgroup studenti [sudo] password for student: Adding group `studenti' (GID 1003) ... Done.
Pentru a adăuga un utilizator în unul sau mai multe grupuri se foloseste comanda usermod
ca in exemplul de mai jos.
Comanda id
a fost apelată înainte și după adăugarea utilizatorului bogdan
în grupul studenti
pentru a verifica dacă adăugarea a funcționat.
student@uso:~$ id bogdan uid=1002(bogdan) gid=1002(bogdan) groups=1002(bogdan) student@uso:~$ sudo usermod bogdan -G studenti student@uso:~$ id bogdan uid=1002(bogdan) gid=1002(bogdan) groups=1002(bogdan),1003(studenti)
Exerciții
ana
și david
în grupul studenti
.dan
și elena
și grupul asistenti
și adăugați acești utilizatori în noul grup.asistenți
creat anterior și utilizatorii asociați.
deluser
și delgroup
urmate de numele utilizatorului, respectiv numele grupului.
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.
Să luăm exemplul următor. Utilizatorul student
crează fișierul studenti.txt
.
student@uso:~$ touch student.txt student@uso:~$ ls -l student.txt -rw-rw-r-- 1 student student 0 sep 25 21:42 student.txt
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.
chown
, cât și chgrp
.
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
Acum putem verifica că și ceilalți utilizatori pot modifica conținutul fișierului:
ana@uso:/home/student$ echo Ana > student.txt ana@uso:/home/student$ cat student.txt Ana
Exerciții
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
).1. Adăugarea de noi utilizatori și grupuri
Ca administratori ai infrastructurii IT a facultății de care răspundeți ați primit următorul fișier excel cu nume de utilizatori și grupuri din care trebuie să facă parte fiecare, conform cu politica școlii.
Sarcina voastră este să adăugați în sistem grupurile și utilizatorii, după care să înscrieți utilizatorii în grupuri conform cu tabelul primit.
De asemenea, trebuie să configurați următoarele parole:
student
profesor007
admin1234
Pentru cei care sunt în mai multe grupuri simultan alegeți parola mai dificilă (să conțină caractere/cifre diferite).
/etc/passwd
pentru utilizatori și /etc/group
pentru grupuri. De asemenea, pentru a vedea grupurile din care face parte un anumit utilizator și totodată existența sa în sistem mai putem folosi comanda id
.
Pentru a nu inspecta manual fișierele /etc/passwd
sau /etc/group
, putem folosi comanda getent pentru verificarea setarilor pentru un user sau grup:
student@uso~$ getent passwd dan dan:x:1003:1003:Dan:/home/public/dan:/bin/bash student@uso~$ getent group gdm gdm:x:42:
2. Editarea unui fișier de către mai mulți utilizatori
Pentru sesiunea de prezentări din cadrul facultății, studenții trebuie să se înscrie într-un fișier precum cel de mai jos.
$ cat proiecte.txt #. Student - Profesor - Proiect 1. dan - alex - proiect1 2. corina - alex - proiect2 3. elena - mihai - proiect3
Creați acest fișier logați ca utilizatorul student
. Pentru a îl putea edita, studenții trebuie să aibă drept de scriere asupra lui.
Acest fișier trebuie să poată fi editat atât de utilizatorii studenți cât și de utilizatorii profesori.
Creați un nou grup care să conțină utilizatorii necesari și permiteți acces asupra acestui fișier.
3. Schimbarea ownership-ului unui fișier
Să se modifice owner-ul fișierului proiecte.txt
cu un utilizator din grupul admin
.
După cum ați aflat și în prima parte a laboratorului, putem rula comenzi administrative fie folosind utilizatorul root
, fie folosind comanda sudo
.
Denumirea de sudo
vine de la substitute user do sau super user do.
Comanda sudo
permite unui utilizator să ruleze comenzi cu privilegiile de acces ale altui utilizator, în general ca utilizatorul root
.
În mod implicit, la prima rulare a comenzii sudo
se cere parola utilizatorului care va fi păstrată intr-un cache timp de 5 min.
Se poate configura astfel încât parola să fie cerută o singură dată, sau să nu se ceară deloc.
Nu toți utilizatorii au implicit drept de sudo
. Pentru a verifica dacă un utilizator are acest drept, puteți rula orice comanda doriți folosind sudo
.
corina@uso:~$ sudo -v Sorry, user corina may not run sudo on uso.
4. Drepturi de sudo pentru un utilizator
Suntem autentificați ca utilizatorul corina
și vrem să instalăm un pachet. Observăm totuși că nu avem permisiuni.
corina@midgard:~$ sudo apt-get install tree [sudo] password for corina: corina is not in the sudoers file. This incident will be reported.
visudo
, care modifică fișierul de configurare /etc/sudoers
. Reveniți la shell-ul utilizatorului student
(Ctrl+D
sau exit
) și tastați comanda:
student@midgard:~$ sudo visudo
Dați drepturi utilizatorului corina
de a instala pachete in sistem, fără a i se cere parola. Puteți vedea un exemplu de configurație pe askubuntu.
corina
și încercați din nou să rulați o comandă de instalare de pachete în sistem folosind sudo
.
5. Drepturi de sudo pentru un grup
În același mod configurați sistemul astfel încât utilizatorii din grupul profesor
să aibă drepturi depline de sudo
în sistem.
Autentificați-vă în sistem ca alex
și ca mihai
și verificați că funcționează comanda:
alex@uso:~$ sudo apt-get install rig
Asigurați-vă că nu apare eroarea următoare (dacă apare înseamnă că ați greșit configurația din visudo
):
(...) alex is not in the sudoers file. This incident will be reported. (...)
Înainte de a începe această secțiune trebuie să vă asigurați că sunteți în directorul potrivit.
Rulați comanda cd ~/uso.git/labs/03-user/support/nice-to-know/
.
1. Schimbarea homedir-ului unui utilizator
Configurați sistemul astfel încât home directory-ul utilizatorului dan
, în loc de /home/dan
, să fie /home/public/dan
. Creați directorul dacă acesta nu există.
new login directory
.
Pentru verificare : Apăsați Ctrl+D
sau tastați exit
pentru a reveni la terminalul în care erați autentificați ca student
după care încercați comanda su - dan
. Dați pwd
și verificați că homedir-ul acestuia e cel configurat cu usermod
. Alt mod de a verifica este inspectarea fișierului /etc/passwd
și căutând linia care conține dan
.
2. Permisiuni pentru executabile
./runme
.
Exercițiul 2.1 trebuie să fie rezolvat primul.
2.1 În acest moment, la rularea comenzii ls
ar trebui să primiți următorul mesaj de eroare:
student@uso:~$ ls bash: /bin/ls: Permission denied
Investigați de ce nu mai funcționează comanda ls
și reparați problema.
2.2 Se dă următorul script din directorul executable
. Să se rezolve permisiunile astfel încât să funcționeze următoarea lansare în execuție:
student@uso:~/.../03-user/support/nice-to-know$ ./executable/script.sh
2.3 Directorul music
conține mai multe fișiere și directoare.
Intrați în directorul music
(cd music
), iar apoi în directorul ac_dc
.
Listați conținutul directorului ac_dc
.
Mergeți înapoi în directorul music
(cd ..
) și listați conținutul. După cum ați observat primiți o eroare. Totuși ați putut accesa și vizualiza directorul ac_dc
, de ce nu puteți vizualiza și conținutul directorului music
? Rezolvați problema, astfel încât listarea să funcționeze.
Comanda umask
definește permisiunile default care sunt aplicate pentru fișierele sau directoarele nou create.
Permisiunile default funcționează prin aplicarea unei măști formată din trei cifre, care se poate modifica folosind umask
, asupra permisiunilor de bază ale fișierelor și directoarelor.
Permisiunile de bază pentru fișiere sunt 666
, iar pentru directoare sunt 777
.
Pentru a vedea ce mască este aplicată pe sistemul nostru, folosim comanda umask
fără parametri:
student@uso:~$ umask 0002
Pentru a afla ce permisiuni se vor seta implicit, calculăm diferența între valorile de bază și mască, astfel (în acest exemplu masca este 002
):
666 - 002 ___ 664
777 - 002 ___ 775
Exerciții
1. Structură de fișiere default
Să se configureze sistemul astfel încât la adăugarea unui nou utilizator să se creeze automat în directorul său home
următoarea structură de fișiere și directoare:
. ├── books │ └── to-read.txt ├── movies │ └── movies-list.txt
2. SUID / GUID / Sticky bit
Până în acest moment ați folosit doar permisiunile r
(read), w
(write) și x
(execute).
Pe lângă acești biți, mai există încă trei, cunoscuți ca SUID
, GUID
și Sticky bit
.
Căutați care este diferența dintre aceste trei permisiuni, la ce se folosesc și dați câte un exemplu real de utilizare pentru fiecare în parte.
Discutați între voi și cu asistentul pentru a verifica dacă ați înțeles corect.
3. Script pentru crearea de utilizatori
Să se scrie un script care să creeze utilizatorul morty
din grupul rick
, având parola rickandmorty
. Scriptul trebuie să fie neinteractiv.
adduser
, deluser
addgroup
, delgroup
id
, finger
, whoami
sudo
chmod
, chown