User Tools

Site Tools


linux-admin:capitole:capitol-05

This is an old revision of the document!


5. Gestiunea utilizatorilor și permisiunilor

TODO

Subiecte abordate

  • utilizator, UID, parolă, privilegiat,
  • root, sudo, su, grup de utilizatori

Utilitare folosite

  • 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 utilizar (exemplu: grupul din care face parte)
  • addgroup - adaugă un grup de utilizatori
  • delgroup - șterge un grup de utilizatori

Resurse utile

Slide-uri

Exerciții

Demo-uri

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

În general, pe un sistem Linux, sunt două ierarhii de utilizatori:

  • neprivilegiați - nu pot modifica starea sistemului, nu pot realiza modificări ce afectează alți utilizatori
  • privilegiați - spre exemplu utilizatorul root

Utilizatorul root este prezent, în general, pe orice sistem Linux, rolul său fiind de administrare și gestionarea celorlalți utilizatori.

Nu este recomandat să folosiți sistemul folosind acest utilizator decât pentru strictul necesar. De multe ori este suficientă utilizarea comenzii sudo.

Pentru a oferi totuși câteva drepturi minimale anumitor utilizatori, se folosește comanda sudo (Super User DO). Ea are rolul de a lăsa un utilizator să ruleze o comandă ca și cum ar fi autentificat ca un altul (nu neapărat root).

În continuare, vom vedea cum aflăm câteva informații despre utilizatori și cum ne schimbăm utilizatorul cu care suntem autentificați:

S-ar putea să nu fie instalată: sudo apt-get install finger

student@midgard:~$ finger student
Login: student        			Name: Flavius Anton
Directory: /home/student            	Shell: /bin/bash
On since Sat Oct 25 17:16 (EEST) on :0 from :0 (messages off)
On since Sat Oct 25 17:18 (EEST) on pts/0 from tiny
   3 seconds idle
No mail.
No Plan.
student@midgard:~$ finger root
Login: root           			Name: root
Directory: /root                    	Shell: /bin/bash
Never logged in.
No mail.
No Plan.
student@midgard:~$ whoami
student
student@midgard:~$ PS1="Obama@Whitehouse# "
Obama@Whitehouse# whoami
student

Schimbarea utilizatorului curent (su)

Câteodată este necesar să schimbăm utilizatorul cu care suntem autentificați într-un altul (de exemplu în root pentru a realiza un task administrativ). Pentru aceasta folosim comanda su (switch user). Haideți să vedem cum o folosim.

student@midgard:~$ adduser ana
....
student@midgard:~$ whoami
student
student@midgard:~$ su ana
Password: 
ana@midgard:/home/student$ whoami
ana

Dați și un ls -l pe directorul home, și obervați că fiecare utilizator are propriul director home.

student@midgard:~$ ls -l /home
total 8
drwxr-xr-x  2 ana     ana     4096 Oct 25 17:43 ana
drwxr-xr-x 15 student student 4096 Oct 25 17:17 student

Folosiți opțiunea - (sau -l), a comenzii su, pentru a schimba întregul context, nu doar utilizatorul.

student@midgard:~$ su - ana
Password: 
ana@midgard:~$ logout
student@midgard:~$ su ana
Password: 
ana@midgard:/home/student$ pwd
/home/student
ana@midgard:/home/student$ exit
student@midgard:~$ su - ana
Password: 
ana@midgard:~$ pwd
/home/ana

Drepturi pentru anumite comenzi (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 încrederea că ei nu vor face altceva decât să instaleze pachete. Soluția acestei probleme este comanda sudo.

Dorim să instalăm pachetul cowsay. Observați că nu funcționează fără sudo.

student@midgard:~$ 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?
student@midgard:~$ sudo apt-get install cowsay
[sudo] password for student: 
Reading package lists... Done
...
student@midgard:~$ cowsay "Meuh"
 ______
< Meuh >
 ------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
ana@midgard:~$ sudo apt-get install tree
[sudo] password for ana: 
ana is not in the sudoers file.  This incident will be reported.
 
ana@midgard:~$ logout
student@midgard:~$ sudo visudo # adăugăm linia ana	ALL=(ALL:ALL) ALL
 
student@midgard:~$ su - ana
Password: 
ana@midgard:~$ sudo apt-get install tree
[sudo] password for ana: 
Reading package lists... Done
...

Observați că fișierul /etc/sudoers este protejat.

student@midgard:~$ cat /etc/sudoers
cat: /etc/sudoers: Permission denied
student@midgard:~$ sudo cat /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
...

Schimbarea parolei (passwd)

Pentru a schimba parola utilizatorului curent folosim comanda passwd, fără argumente. De asemenea, dacă dorim schimbarea parolei altui utilizator, îi putem oferi comenzii passwd numele acestuia ca parametru. Mai departe vom vedea un exemplu de cum facem acest lucru.

student@midgard:~$ passwd
Changing password for student.
(current) UNIX password: 
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
 
root@midgard:~# passwd student
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully

</hidden>

Gestiunea utilizatorilor (adduser/deluser)

Acum că știm cum vedem informații despre un utilizator, cum schimbăm o parolă sau cum schimbăm utilizatorul curent, hai să vedem cum adăugăm utilizatori noi sau cum ștergem un utilizator dintre cei existenți. 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.

Adăugăm un alt utilizator, bogdan.

student@midgard:~$ finger bogdan
finger: bogdan: no such user.
 
student@midgard:~$ 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:
...
 
student@midgard:~$ finger bogdan
Login: bogdan         			Name: 
Directory: /home/bogdan             	Shell: /bin/bash
Never logged in.

După aceasta ne și autentificăm ca utilizatorul bogdan.

student@midgard:~$ su - bogdan
Password: 
bogdan@midgard:~$ whoami
bogdan

Dorim să ștergem un utilizator:

student@midgard:~$ sudo deluser bogdan
Removing user `bogdan' ...
Warning: group `bogdan' has no more members.
Done.
student@midgard:~$ finger bogdan
finger: bogdan: no such user.
student@midgard:~$ su bogdan
No passwd entry for user 'bogdan'

De reținut!

La orice moment de timp, așa cum te uiți în oglinda retrovizoare a unei mașini și știi mereu ce ai în spate, trebuie să știi trei lucruri, mai ales în contextul folosirii mașinilor virtuale:

  • care este hostname-ul (pe ce sistem te afli). Comenzi utile: cat /etc/hostname, hostname
  • care este username-ul (cu ce utilizator ești autentificat): whoami, id (fără parametrii),
  • care este working directory-ul (în ce director lucrezi): pwd

Toate informațiile de mai sus se găsesc în prompt-ul terminalului: username@hostname:working-directory.

E important să reținem că urmărirea prompt-ului este o convenție. Acesta poate fi schimbat foare ușor folosind bashrc. Detalii puteți găsi pe cyberciti.

[1] Adăugarea de noi utilizatori și de grupuri (1.5p)

Ca administratori ai infrastructurii IT a școlii de care răspundeți ați primit următorul excel cu nume de utilizatori și grupuri din care trebuie să facă parte, conform cu politica școlii.

Sarcina voastră este să adăugați în sistem grupurile și apoi utilizatorii, utilizatorii să îi înscrieți în grupuri conform cu excelul primit.

De asemenea, trebuie să configurați următoarele parole:

  • Studenții vor avea parola student
  • Profesorii vor avea parola profesor007
  • Adminii vor avea parola admin1234

Pentru cei care sunt în mai multe grupuri simultan alegeți parola mai dificilă (să conțină cifre diferite).

Pentru verificarea adăugării utilizatorilor în sistem trebuie să inspectăm fișierele: /etc/passwd și pentru grupuri /etc/group. De asemenea, pentru a vedea grupurile din care face parte un anumit utilizator (să zicem dan) și totodată existența sa în sistem mai putem folosi comanda:

student@uso~$ id dan

De asemenea, pentru a nu cauta in fisierele /etc/passwd sau /etc/group putem folosi comanda getent ca mai jos pentru verificarea direct a setarilor pentru un user sau un 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] Schimbarea homedir-ului altui utilizator (1p)

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

Indicație: Folosim usermod (modify a user account). Căutați după new login directory.

Pentru verificare : Apăsați Ctrl+D 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.

Pentru a ne autentifica cu un anumit utilizator și a ne muta în homedir-ul lui folosim su - dan in loc de simplu su dan

[3a] Drepturi de sudo pentru un utilizator (0.5p)

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.

Pentru a acorda drepturi de sudo unui utilizator se folosește comanda visudo. Reveniți la shellul utilizatorului student (Ctrl+D) ș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.

Verificare: Reautentificați-vă drept corina și încercați din nou să rulați o comandă de instalare de pachete în sistem folosind sudo.

[3b] Drepturi de sudo pentru un grup (0.5p)

În același mod configurați sistemul astfel încât utilizatorii din grupul admin să aibă drepturi depline de sudo în sistem.

Autentificați-vă în sistem ca geo și ca răzvan și verificați că funcționează comanda:

geo@uso:~$ sudo apt-get install rig

Asigurați-vă că nu apare eroarea (dacă apare înseamnă că ați greșit configurația din visudo):

(...)
geo is not in the sudoers file. This incident will be reported.
(...)
linux-admin/capitole/capitol-05.1474619732.txt.gz · Last modified: 2016/09/23 11:35 by mihaic