This is an old revision of the document!
TODO
sudo
- execută o comandă cu drepturi de utilizator privilegiatsu
- schimbă utilizatorul cu care suntem autentificațiid
- afișează id-ul și grupurile din care face parte un utilizatorfinger
- afișează un sumar despre un anumit utilizatorwhoami
- afișează utilizatorul curent (cu care suntem autentificați)who
- lista de utilizatori autentificați la un moment datpasswd
- schimbă parola unui utilizator adduser
- adaugă un utilizatordeluser
- șterge un utilizatorusermod
- modifică informații despre un utilizar (exemplu: grupul din care face parte)addgroup
- adaugă un grup de utilizatoridelgroup
- șterge un grup de utilizatoriÎn general, pe un sistem Linux, sunt două ierarhii de utilizatori:
root
Utilizatorul root este prezent, în general, pe orice sistem Linux, rolul său fiind de administrare și gestionarea celorlalți utilizatori.
sudo
.
<hidden> Întrebați-i pe ei ce cred despre asta și apoi explicați-le ce riscuri implică abuzarea de utilizatorul root
(rularea GUI-ului ca root
, de exemplu).
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:
Le arătăm câteva detalii despre utilizatorul student
și despre root
. Să vedem că există, în principal, dar pomeniți-le și de home directory, shell etc. Sugerez să folosim comanda finger
.
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.
Le spunem apoi că o altă metodă pentru a verifica cu ce utilizator suntem autentificați (în afară de a ne uita la prompt) este comanda whoami
student@midgard:~$ whoami student
Pentru a le arăta un use-case concret, puteți modifica temporar variabila PS1
, ca mai jos.
student@midgard:~$ PS1="Obama@Whitehouse# " Obama@Whitehouse# whoami student
</hidden>
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.
<hidden>
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
, să vadă că fiecare 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
Spuneți-le de 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
</hidden>
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
.
<hidden> Hai să le arătăm încă o dată că nu putem instala pachete decât cu sudo
, în mod normal. Aratați-le că eroarea generată are legătură cu permisiunile utilizatorului, încercăm să-i obișnuim de fiecare dată să se uite pe mesajele de eroare (la mine, cel puțin, am observat că au problema asta: se sperie de wall of text la o eroare și nu mai citesc nimic, se blochează acolo).
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 ...
Putem face și un mic intro pentru laboratorul cu permisiuni și să le arătăm 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. ...
</hidden>
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.
<hidden> Partea asta ar trebui să dureze 2-3 minute. Nu cred că are sens să le arătăm și alte opțiuni pentru passwd
deocamdată.
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>
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
.
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
.
<hidden> Adăugăm un alt utilizator, bogdan
. E o ocazie bună să le spunem de uid
, de grupuri, de faptul că home-ul arată la început exact ca directorul /etc/skel
etc.
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
În final, le arătăm și cum se șterge 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'
</hidden>
cat /etc/hostname
, hostname
whoami
, id
(fără parametrii), pwd
Toate informațiile de mai sus se găsesc în prompt-ul terminalului: username@hostname:working-directory
.
bashrc
. Detalii puteți găsi pe cyberciti.
TODO
TODO