Administrare server open source

Platforma de hosting cu software liber, gratuit, open source.

Comentariile sunt închise pentru Rularea comenzilor cu UID diferit

In functie de context se gasesc diferite situatii in care e necesara rularea unei comenzi cu credentialele unui utilizator diferit. Cel mai des se intampla cand lucram ca utilizator simplu si avem de rulat o comanda ca root. Pentru a rula comenzile exista doua variante. Prima ar fi sa schimbam utilizatorul curent ceea ce inseamna fie sa ne logam cu un alt utilizator fie sa folosim comanda „su„. A doua varianta e sa folosim comanda „sudo” care ne permite sa rulam o comanda cu credentialele altui utilizator fara a fi nevoit sa ne delogam sau sa ne logam cu un alt utilizator folosind „su„.

Prima varianta, cea in care ne autentificam ca utilizator diferit, foloseste comanda „su„. Apelam comanda urmata de numele de utilizator, introducem parola si daca parola e valida suntem lasati in shell-ul utilizatorului:

[sergiu@devel ~]# su root
Password:
[root@devel /home/sergiu]#

Dupa cum spuneam, exista si o alternativa si anume comanda „sudo” care in unele situatii este mai utila pentru ca poate fi configurata pentru a nu cere parola cand se incearca executarea unei comenzi. Pentru a configura comanda „sudo” folosim „visudo„, comanda care ne deschide fisierul de configurare. Daca dorim ca utilizatorul „devel” sa poata rula orice comanda sub un alt utilizator fara a i se cere parola adaugam urmatoarea linie:

devel        ALL=(ALL) NOPASSWD: ALL

Daca dorim sa oferim acces doar pe anumite comenzi inlocuim ultimul „ALL” cu lista de comenzi la care ii permitem accesul.

devel        ALL=(ALL) NOPASSWD: /sbin/mount /cdrom,/sbin/umount /cdrom

Acum, pentru a rula o comanda sub un alt user vom folosi:

[devel@devel ~]$ sudo -u root ls /etc

Comanda de mai sus va rula „ls /etc” avand credentialele utilizatorului „root„.

Exista situatii in care utilitarul „sudo” nu este instalat iar comanda „su” nu poate fi folosita. Un astfel de caz ar fi rularea de comenzi interactive avand credentialele unui utilizator fara shell functional. Pentru astfel de situatii putem folosi totusi comanda „su” pentru a lansa in executie un shell:

[devel@devel ~]$ su -m nobody -c /bin/tcsh
[nobody@devel ~]$

Folosind comanda de mai sus, chiar daca utilizatorul nobody nu are un shell asociat, am reusit sa deschid un shell avand credentialele nobody. Astfel de situatii sunt intalnite des in cazul serviciilor care ruleaza sub utilizatori restrictionati – nobody pentru serverul web, mailman pentru serverul de mail etc.

Linux

Comments are closed.