Hoe u alle gebruikers in een groep op Linux kunt weergeven

Hoe u alle gebruikers in een groep op Linux kunt weergeven
fatmawati achmad zaenuri/Shutterstock.com

Op Linux hebben bestanden drie sets machtigingen. Eén set is voor de groep van het bestand. Voordat u een bestand aan een groep toewijst, wilt u misschien controleren wie de groepsleden zijn.

Bestands- en directorymachtigingen

Bestanden en mappen op Linux hebben een set permissies voor de eigenaar, een andere set voor de groep waaraan het bestand is toegewezen, en permissies voor iedereen die niet in een van de vorige twee categorieën valt.

Elke set machtigingen bepaalt of de leden van die categorie het bestand kunnen lezen, schrijven of uitvoeren. In het geval van een map komt de actie uitvoeren overeen met het kunnen: cd in de map.

De standaardgroep voor een bestand of map is de standaardgroep van de eigenaar. Dat is meestal de persoon die het heeft gemaakt. De groepsmachtigingen worden gebruikt om een ​​verzameling gebruikers gecontroleerde toegang te geven tot de bestanden en mappen van de andere leden van die groep.

U hebt bijvoorbeeld een team van ontwikkelaars, een documentatieteam, een onderzoeksteam, enzovoort. De leden van elk team kunnen worden toegevoegd aan een groep met de juiste naam om de samenwerking te vergemakkelijken. Gebruikers kunnen in veel groepen tegelijk zijn.

Het is een eenvoudig maar robuust schema. Maar als uw bestanden gevoelig zijn, vindt u het misschien prettiger om te controleren wie de leden van de groep zijn, voordat u uw werk met hen deelt. Er zijn verschillende manieren om dit te doen. Maar let op. De twee meest aanbevolen methoden zijn problematisch.

Het /etc/groups-bestand

Het bestand “/etc/group” bevat een dubbele punt “:” gescheiden lijst van groepen en groepsleden. Elke regel heeft vier velden.

  • Naam: De unieke naam van de groep.
  • Wachtwoord: Niet gebruikt. Dit zal altijd “x” bevatten.
  • Groeps-ID: De unieke groepsidentificatie.
  • Gebruikers: Een door komma’s gescheiden lijst van de leden van de groep. De lijst is meestal leeg voor systeem- en daemon-accounts.

Om de inhoud van het bestand naar het terminalvenster te dumpen, kunt u gebruik maken van catmaar het is handiger om door de inhoud van het bestand te kunnen scrollen met less.

less /etc/group

Cat gebruiken om de inhoud van het /etc/group-bestand te zien

De meeste vermeldingen bovenaan de lijst hebben geen leden, hoewel de groep ‘adm’ er twee heeft en de groep ‘cdrom’ er één.

Het eerste deel van het bestand /etc/groups in de viewer voor minder bestanden

Als we willen ontdekken in welke groepen een specifieke gebruiker zich bevindt, kunnen we gebruik maken van grep om te zoeken naar items met hun gebruikersnaam. Dit is niet onze taak. We willen iedereen zien die lid is van een groep, niet de groepen waartoe één persoon behoort. Maar het is leerzaam voor ons om een ​​kijkje te nemen.

grep "dave" /etc/group

De lijst met groepen waarvan gebruiker dave lid is

De vermeldingen die de tekenreeks “dave” bevatten, worden voor ons vermeld. En verscholen tussen hen is een teken dat de dingen misschien niet zo eenvoudig zijn als we dachten.

Wanneer een gebruiker wordt toegevoegd aan Linux, is de standaardactie om deze in een groep te plaatsen met dezelfde naam als hun gebruikersaccount. Dit is hun primair groep. Alle andere groepen waaraan ze worden toegevoegd, staan ​​bekend als ondergeschikt groepen.

Het probleem is dat gebruikers niet worden vermeld als leden van hun primaire groepen. Daarom toont de groep “dave” geen leden, hoewel de gebruiker “dave” wel lid is van die groep.

Natuurlijk kunnen systeembeheerders de primaire groep van een gebruiker wijzigen in die van een andere groep. Dat betekent dat een gebruiker lid kan zijn van elke groep, maar niet als zodanig wordt vermeld in het bestand “/etc/group”. Dat is één probleem.

Het tweede probleem is dat het bestand “/etc/group” geen enkele bron van waarheid is. Moderne Linux-installaties kunnen gebruikers- en groepsinformatie op meer plaatsen opslaan dan “/etc/passwd” en “/etc/group”, vooral in bedrijfssituaties waar services zoals Lightweight Directory Access Protocol worden geïmplementeerd. Door slechts op één plek te kijken, ziet u misschien niet het grote geheel.

In ons testscenario hebben we vier groepen gemaakt voor een ontwikkelafdeling. Zij zijn:

  • herstomen: Het onderzoeksteam.
  • ontwikkelteam: Het ontwikkelteam.
  • pvqteam: Het productverificatie- en kwaliteitsteam.
  • docteam: Het documentatieteam.

We hebben mensen aan deze teams toegevoegd. Sommige mensen zitten in meer dan één team. Als we het bestand “/etc/group” openen in less en scroll naar de onderkant van het bestand, we zien de nieuwe groepen en groepsleden. Tenminste, zoveel leden als het bestand “/etc/group” kent.

De onderkant van het bestand /etc/group in de viewer voor minder bestanden

Als we een enkele groep willen extraheren, kunnen we zoeken met grep. het karretje “^” staat voor het begin van een regel.

grep "^devteam" /etc/group

grep gebruiken om de leden voor een enkele groep te extraheren

Dit extraheert het “devteam”-item uit het bestand en geeft een overzicht van alle groepsleden. Of doet het dat?

Het getent Commando

De getent commando controleert meerdere databases op gebruikersgroepinformatie, niet alleen “/etc/group.” We gebruiken getent om ons de gebruikersgroepen te laten zien.

getent group

Getent gebruiken om alle gedefinieerde groepen weer te geven

Gebruik makend van getent met de group optie produceert – op deze testmachine – dezelfde resultaten als het gebruik van het “/etc/group”-bestand. Dat komt omdat we geen LDAP of een andere gecentraliseerde naamgevingsservice gebruiken. Er zijn dus geen andere bronnen voor getent verwijzen naar.

De output van getent group met de groepen en leden

Het is dan ook geen verrassing dat de resultaten overeenkomen met die uit het bestand “/etc/group”. Misschien is wat we zien echt de realiteit van de situatie. Misschien is alles eenvoudig en – op deze computer – is wat je ziet wat je krijgt? Laten we daar een oordeel over behouden.

De getent commando kan voor ons naar een enkele groep kijken. We kijken naar de groep “devteam”.

getent group devteam

Getent group gebruiken om de details van een enkele groep te extraheren

We krijgen precies dezelfde resultaten als voorheen. Er is echter een manier om dieper te graven.

Het deksel Commando

De lid commando is onderdeel van de libuser verzameling gereedschappen. Het was al geïnstalleerd op onze Fedora 36-testcomputer, maar moest worden geïnstalleerd op de Ubuntu 22.04 en Manjaro 21.

Het commando wordt ook genoemd lid op Fedora en Manjaro, maar op Ubuntu moet je gebruiken libuser-lid.

Om de opdracht op Ubuntu te installeren, typt u:

sudo apt install libuser

Libuser installeren op Ubuntu

op Manjaro, libuser wordt geïnstalleerd vanaf de AUR, dus u moet uw favoriete AUR-helper gebruiken. We gebruikten yay.

yay libuser

Libuser installeren op Manjaro

Je kunt gebruiken libuser-lid om groepsinformatie over groepen of gebruikers weer te geven. Om te laten zien in welke groepen een persoon zich bevindt, geeft u de naam van hun gebruikersaccount door op de opdrachtregel. Denk eraan om op Fedora en Manjaro te gebruiken lid in plaats van libuser-lid.

sudo libuser-lib dave

libuser-lid gebruiken om de groepen te tonen waarvan gebruiker dave lid is

Gebruik de om de leden van een groep te zien -g (groep) optie samen met de naam van de groep.

sudo libuser-lid -g devteam

libuser-lid gebruiken om de leden van de devteam-groep weer te geven

Kijk, een gebruiker genaamd “francis” is verschenen als lid van de lijst. Dit is de eerste keer dat we hem zien. Hij staat niet in “/etc/group” en getent heb hem ook niet ontdekt.

Laten we eens kijken naar een paar gebruikers met de groups opdracht.

groups abigail
groups hayden
groups francis

Het groepscommando gebruiken voor een selectie van gebruikers

  • Gebruiker “abigail” bevindt zich in een groep genaamd “abigail” en twee andere groepen, “resteam” en “devteam”.
  • Gebruiker “hayden” bevindt zich in een groep genaamd “hayden” en twee andere groepen, “pvqteam” en “docteam”.
  • Gebruiker “francis” bevindt zich in een enkele groep, de groep “devteam”. Het is opmerkelijk dat ze zijn niet in een groep genaamd ‘francis’.
Een gebruiker toevoegen aan een groep (of tweede groep) op Linux

VERWANTEen gebruiker toevoegen aan een groep (of tweede groep) op Linux

We weten dat elke gebruiker lid moet zijn van een primaire groep en dat de primaire groep standaard een GID en naam heeft die overeenkomen met de UID en accountnaam van de gebruiker. Het lijkt erop dat er iets anders is aan de gebruiker ‘francis’.

Laten we de gebruiken id commando en kijk wat de UID en GID’s ons vertellen.

id abigail
id francis

Het id-commando gebruiken op de gebruikers abigail en francis

Gebruiker “abigail” heeft een UID van 1002 en een GID van 1002. Ze zijn in drie groepen, waarvan er één “abigail” wordt genoemd. Het heeft een GID van 1002. Dit is hun standaard primaire groep.

Gebruiker “francis” heeft een GID van 1019, wat overeenkomt met de GID van de groep “devteam”. Aan deze gebruiker is ofwel een nieuwe primaire groep toegewezen, of de groep “devteam” is ingesteld als hun primaire groep toen deze gebruiker aan het systeem werd toegevoegd.

Welke het ook was, alleen libuser-lid detecteerde ze en meldde hun aanwezigheid in de “devteam” -groep.

De duivel zit in de details

Het is dus belangrijk om de echte details te zien.

Groepen zijn een geweldige manier om samenwerking op te zetten, zolang je maar weet met wie je het begint.

Nieuwste artikelen

Gerelateerde artikelen