Cum să listați toți utilizatorii dintr-un grup pe Linux

Publicat: 2022-08-29
Laptop Linux afișează un prompt bash
fatmawati achmad zaenuri/Shutterstock.com

Pe Linux, fișierele au trei seturi de permisiuni. Un set este pentru grupul fișierului. Înainte de a aloca un fișier unui grup, poate doriți să verificați cine sunt membrii grupului.

Permisiuni pentru fișiere și directoare

Fișierele și directoarele pe Linux au un set de permisiuni pentru proprietar, un alt set pentru grupul căruia îi este alocat fișierul și permisiuni pentru toți cei care nu se află în una dintre cele două categorii anterioare.

Fiecare set de permisiuni definește dacă membrii acelei categorii pot citi, scrie sau executa fișierul. În cazul unui director, acțiunea de execuție echivalează cu posibilitatea de a introduce cd în director.

Grupul implicit pentru un fișier sau director este grupul implicit al proprietarului. Aceasta este de obicei persoana care a creat-o. Permisiunile de grup sunt folosite pentru a permite unei colecții de utilizatori să aibă acces controlat la fișierele și directoarele celorlalți membri ai grupului respectiv.

De exemplu, este posibil să aveți o echipă de dezvoltatori, o echipă de documentare, o echipă de cercetare și așa mai departe. Membrii fiecărei echipe pot fi adăugați într-un grup numit corespunzător, pentru a ajuta colaborarea. Utilizatorii pot fi în mai multe grupuri simultan.

Este o schemă simplă, dar robustă. Dar dacă fișierele tale sunt sensibile, s-ar putea să te simți mai fericit dacă verifici cine sunt membrii grupului, înainte de a le împărtăși munca. Există diferite moduri de a face acest lucru. Dar ia notă. Cele două metode cel mai frecvent recomandate sunt problematice.

LEGATE: Cum să utilizați comanda chgrp pe Linux

Fișierul /etc/groups

Fișierul „/etc/group” conține o listă delimitată cu două puncte „ : ” de grupuri și membri ai grupului. Fiecare linie are patru câmpuri.

  • Nume : Numele unic al grupului.
  • Parola : Nu este folosită. Acesta va menține întotdeauna „x”.
  • ID grup : identificatorul unic de grup.
  • Utilizatori : o listă delimitată de virgulă a membrilor grupului. Lista este de obicei goală pentru conturile de sistem și demon.

Pentru a descărca conținutul fișierului în fereastra terminalului, puteți utiliza cat , dar este mai convenabil să puteți derula conținutul fișierului cu less .

 mai puțin /etc/group 

Folosind cat pentru a vedea conținutul fișierului /etc/group

Majoritatea intrărilor din partea de sus a listei nu au membri, deși grupul „adm” are doi, iar grupul „cdrom” are unul.

Prima parte a fișierului /etc/groups în vizualizatorul de fișiere mai puține

Dacă vrem să descoperim grupurile în care se află un anumit utilizator, putem folosi grep pentru a căuta intrări cu numele contului său de utilizator. Aceasta nu este sarcina noastră la îndemână. Vrem să vedem pe toți cei care sunt membri ai unui grup, nu grupurile cărora le aparține o persoană. Dar este instructiv pentru noi să aruncăm o privire.

 grep "dave" /etc/group 

Lista de grupuri la care utilizatorul dave este membru

Intrările care conțin șirul „dave” sunt listate pentru noi. Și ascuns printre ele este un semn că lucrurile s-ar putea să nu fie atât de simple cum credeam.

Când un utilizator este adăugat la Linux, acțiunea implicită este de a-l plasa într-un grup cu același nume ca și contul de utilizator. Acesta este grupul lor principal . Orice alte grupuri la care sunt adăugate sunt cunoscute ca grupuri secundare .

Problema este că utilizatorii nu sunt listați ca membri ai grupurilor lor principale . De aceea, grupul „dave” nu afișează niciun membru, deși utilizatorul „dave” este membru al grupului respectiv.

Desigur, administratorii de sistem pot schimba grupul principal al oricărui utilizator cu cel al oricărui alt grup. Aceasta înseamnă că un utilizator poate fi membru al oricărui grup, dar nu va fi listat ca atare în fișierul „/etc/group”. Aceasta este o problemă.

A doua problemă este că fișierul „/etc/group” nu este o singură sursă de adevăr. Instalările Linux moderne pot stoca informații despre utilizatori și grupuri în mai multe locuri decât „/etc/passwd” și „/etc/group”, mai ales în situațiile corporative în care sunt implementate servicii precum Protocolul de acces la directory ușor. Privind doar într-un singur loc, este posibil să nu vezi imaginea de ansamblu.

În scenariul nostru de testare, am creat patru grupuri pentru un departament de dezvoltare. Sunt:

  • resteam : Echipa de cercetare.
  • devteam : echipa de dezvoltare.
  • pvqteam : Echipa de verificare și calitate a produsului.
  • docteam : Echipa de documentare.

Am adăugat oameni în aceste echipe. Unii oameni fac parte din mai mult de o echipă. Dacă deschidem fișierul „/etc/group” în less și derulăm în partea de jos a fișierului, vom vedea noile grupuri și membrii grupului. Cel puțin, atât de mulți membri cât știe fișierul „/etc/group”.

Partea de jos a fișierului /etc/group în vizualizatorul de fișiere mai puține

Dacă dorim să extragem un singur grup, putem căuta folosind grep . Semnul „ ^ ” reprezintă începutul unei linii.

 grep "^devteam" /etc/group 

Folosind grep pentru a extrage membrii unui singur grup

Aceasta extrage intrarea „devteam” din fișier și listează toți membrii grupului. Sau o face?

Comandamentul getent

Comanda getent verifică mai multe baze de date pentru informații despre grupul de utilizatori, nu doar „/etc/group”. Vom folosi getent pentru a ne arăta grupurile de utilizatori.

 grup getent 

Folosind getent pentru a lista toate grupurile definite

Utilizarea getent cu opțiunea de group produce — pe această mașină de testare — aceleași rezultate ca și utilizarea fișierului „/etc/group”. Asta pentru că nu folosim LDAP sau orice alt serviciu centralizat de denumire. Deci nu există alte surse la care getent să se refere.

Ieșirea din grupul getent care arată grupurile și membrii

Nu este o surpriză atunci că rezultatele se potrivesc cu cele din fișierul „/etc/group”. Poate că ceea ce vedem este cu adevărat realitatea situației. Poate că totul este simplu și — pe acest computer — ceea ce vezi este ceea ce obții? Să ne rezervăm judecata în acest sens.

Comanda getent poate privi un singur grup pentru noi. Ne vom uita la grupul „devteam”.

 echipa de dezvoltare a grupului getent 

Utilizarea getent group pentru a extrage detaliile unui singur grup

Obținem exact aceleași rezultate ca înainte. Există totuși o modalitate de a săpa mai adânc.

LEGATE: Cum să enumerați utilizatorii în Linux

Comanda capacului

Comanda lid face parte din colecția de instrumente libuser . Era deja instalat pe computerul nostru de testare Fedora 36, ​​dar trebuia instalat pe Ubuntu 22.04 și Manjaro 21.

De asemenea, comanda se numește lid pe Fedora și Manjaro, dar pe Ubuntu, trebuie să utilizați libuser-lid .

Pentru a instala comanda pe Ubuntu, tastați:

 sudo apt install libuser 

Instalarea libuser pe Ubuntu

Pe Manjaro, libuser este instalat din AUR, așa că va trebui să utilizați ajutorul AUR preferat. Noi am folosit yay .

 da libuser 

Instalarea libuser pe Manjaro

Puteți utiliza libuser-lid pentru a afișa informații de grup despre grupuri sau utilizatori. Pentru a afișa grupurile în care se află o persoană, transmiteți numele contului de utilizator pe linia de comandă. Pe Fedora și Manjaro nu uitați să folosiți lid în loc de libuser-lid .

 sudo libuser-lib dave 

Folosind libuser-lid pentru a afișa grupurile din care este membru utilizatorul dave

Pentru a vedea membrii unui grup, utilizați opțiunea -g (grup) împreună cu numele grupului.

 sudo libuser-lid -g devteam 

folosind libuser-lid pentru a lista membrii grupului devteam

Iată, un utilizator numit „francis” a apărut ca membru al listei. Este prima dată când îl vedem. Nu este listat în „/etc/group” și nici getent nu l-a descoperit.

Să ne uităm la câțiva utilizatori cu comanda groups .

 grupuri abigail
 grupuri Hayden
 grupuri francis 

Utilizarea comenzii groups pe o selecție de utilizatori

  • Utilizatorul „abigail” se află într-un grup numit „abigail” și în alte două grupuri, „resteam” și „devteam”.
  • Utilizatorul „hayden” se află într-un grup numit „hayden” și în alte două grupuri, „pvqteam” și „docteam”.
  • Utilizatorul „francis” este într-un singur grup, grupul „devteam”. Este de remarcat faptul că ei nu fac parte dintr-un grup numit „francis”.
Adăugați un utilizator la un grup (sau al doilea grup) pe Linux
RELATE Adăugați un utilizator la un grup (sau al doilea grup) pe Linux

Știm că fiecare utilizator trebuie să fie membru al unui grup principal și că, implicit, grupul principal are un GID și un nume care se potrivesc cu UID-ul utilizatorului și numele contului. S-ar părea că este ceva diferit la utilizatorul „francis”.

Să folosim comanda id și să vedem ce ne spun UID-urile și GID-urile.

 id abigail
 id francis 

Folosind comanda id pentru utilizatorii abigail și francis

Utilizatorul „abigail” are un UID de 1002 și un GID de 1002. Sunt în trei grupuri, dintre care unul se numește „abigail”. Are un GID de 1002. Acesta este grupul lor principal implicit .

Utilizatorul „francis” are un GID de 1019, care se potrivește cu GID-ul grupului „devteam”. Acest utilizator fie a primit un nou grup principal, fie grupul „devteam” a fost setat ca grup principal atunci când acest utilizator a fost adăugat la sistem.

Oricare ar fi fost, doar libuser-lid i-a detectat și a raportat prezența lor în grupul „devteam”.

Diavolul e în detalii

Prin urmare, este important să vedeți detaliile autentice.

Grupurile sunt o modalitate excelentă de a stabili colaborarea, atâta timp cât știți cu cine deschideți.

LEGATE: Cum se schimbă datele utilizatorului cu chfn și usermod pe Linux