Cum să listați toți utilizatorii dintr-un grup pe Linux
Publicat: 2022-08-29Pe 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
Majoritatea intrărilor din partea de sus a listei nu au membri, deși grupul „adm” are doi, iar grupul „cdrom” are unul.
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
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”.
Dacă dorim să extragem un singur grup, putem căuta folosind grep
. Semnul „ ^
” reprezintă începutul unei linii.
grep "^devteam" /etc/group
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
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.
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
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
Pe Manjaro, libuser
este instalat din AUR, așa că va trebui să utilizați ajutorul AUR preferat. Noi am folosit yay
.
da libuser
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
Pentru a vedea membrii unui grup, utilizați opțiunea -g
(grup) împreună cu numele grupului.
sudo libuser-lid -g 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
- 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”.
Ș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
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