Când gestionați un sistem cu multe conturi de utilizator, grupuri și, implicit, parole, este necesar ca informații individuale pentru un anumit cont să poată fi vizualizate rapid. Poate fi obositor să încercăm să localizăm informații despre un anumit utilizator într-un fișier cu sute sau mii de înregistrări.
De cele mai multe ori este folosită comanda grep
pentru a căuta înregistrări specifice într-un fișier:
$ grep bobses /etc/passwd
bobses:x:1000:100::/home/bobses:/bin/bash
$
O altă metodă de a obține informații este comanda getent
(get entry). Comanda getent permite accesarea informațiilor stocate într-una din bazele de date ale sistemului. Pot fi accesate doar bazele de date specificate în fișierul NSS (Name Service Switch) - /etc/nsswitch.conf.
Sintaxa generală a comenzii getent
este:
getent bază_de_date cheie
Parametrul bază_de_date poate fi una din bazele de date configurate în fișierul NSS. Pentru scopul nostru, acest parametru poate fi unul din următoarele fișiere:
passwd (fișierul /etc/passwd)
shadow (fișierul /etc/shadow)
group (fișierul /etc/group)
Parametrul cheie reprezintă elementul din baza de date pe care dorim să-l vizualizăm. Pentru scopul nostru, vom folosi un nume de utilizator. Să presupunem că vrem să căutăm în fișierul /etc/passwd după contul cu numele bobses:
$ getent passwd bobsesa
bobses:x:1000:100::/home/bobses:/bin/bash
$
Nu se poate căuta în mai multe baze de date în același timp. Pentru a căuta în baza de date shadow (fișierul /etc/shadow) sunt necesare privilegii de superutilizator. Oricine altcineva va primi un răpsuns ca cel de mai jos:
$ getent shadow bobses
$
Dacă solicităm aceeași informație cu drepturi de root, răspunsul extras din fișierul /etc/shadow va fi de forma:
$ sudo getent shadow bobses
[sudo] password for bobses:
bobses:$6$msqwgJMWkNaq[...].:17322:0:99999:7:::
$
De asemenea, comanda getent
este utilă și pentru a vizualiza care dintre utilizatori fac parte dintr-un anumit grup. În acest caz, parametrul cheie al comenzii getent
este numele grupului:
Trebuie avut în vedere că în fișierul /etc/group, o înregistrare pentru un anumit utilizator nu arată toate grupurile din care face parte utilizatorul respectiv. Astfel, dacă folosim comanda getent pentru un anumit utilizator în baza de date group, va fi returnat numai grupul primar al userului respectiv:
$ getent group bobses
bobses:x:1000:
$
Pentru a vedea cvtoate grupurile unui utilizator vom folosi comanda groups
:
$ groups bobses
bobses : bobses proiecte
$
Dacă la scrierea comenzii getent
nu trecem parametrul cheie, va fi afișat întreg conținutul bazei de date pe interogate:
Pentru a afla mai multe despre comanda getent, scrieți în terminal man getent
.
Lasă un răspuns