Demo

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

Să nu uităm de cheatsheetul pe care îl putem folosi ca să ne reamintim cele mai frecvente comenzi.

S-ar putea ca unele comenzi să nu fie instalate, folosiți sudo apt-get install <numele comenzii> pentru a le instala. Exemplu: sudo apt-get install finger.

Utilizatori privilegiați si neprivilegiați (id, finger, whoami)

Î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 dat ca parametru: directorul home, numele complet, shell-ul, 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

Rularea comenzilor ca utilizator privilegiat (sudo)

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

Comanda sudo cere parola utilizatorului curent (în cazul nostru utilizatorul student), nu pe cea a utilizatorului root.

Schimbarea utilizatorului curent (su)

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:~$

De observat că atunci când schimbăm utilizatorul, nu se schimbă și directorul curent în directorul home al noului utilizator.

Gestiunea utilizatorilor (adduser/deluser)

În continuare vom crea noi utilizatori, iar ulterior îi vom șterge. Pentru aceasta, vom folosi comenzile adduser și deluser .

Cele două comenzi sunt de fapt niște scripturi wrapper scrise în Perl prezente, în general, numai pe distribuții bazate pe Debian (cum ar fi Ubuntu). Comenzile pe care le apelează ele în spate sunt 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:

  • se creează un nou grup cu același nume
  • se creează home-ul utilizatorului
  • directorul home va copia structura de fișiere și directoare din directorul /etc/skel
  • se cere o parolă și alte informații care sunt afișate la apelul comenzii 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.

Schimbarea parolei (passwd)

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

Ownership și permisiuni

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-lab/
drwxr-xr-x 14 student student 4096 aug 20 20:57 uso-lab/

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:

  1. În octal: 777 (drepturi depline: rwx), 740 (drepturi depline pentru owner, de citire pentru utilizatorii din grup și nicio permisiune pentru alți utilizatori).
  2. 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.
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
uso/laboratoare/new/03-user/demo.txt · Last modified: 2019/10/15 08:48 by cristiana.stan
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0