id-commando: UID en groepen controleren, whoami, groups en aanvullende groepen

TestomgevingRHEL-familieAlmaLinux 9.8coreutils 8.32root-accountDebian 12 · coreutils 9.1 gewoon account
Commando's voor gebruikers · groepenid, whoami, groupsLocatie/usr/bin/id

Om op een Linux-server de UID en de groepen van het huidige account te controleren, gebruik je het id-commando; heb je alleen de accountnaam nodig, dan gebruik je whoami, en voor alleen de groepsnamen groups. Toen de drie commando's na elkaar werden uitgevoerd op servers met AlmaLinux 9 en Debian 12 en de uitvoer werd vergeleken, gaven id -un en whoami dezelfde accountnaam, en gaf groups de groepenlijst van id met alleen de namen.

De uitvoer hieronder komt van een AlmaLinux 9.8-server met het root-account en van een Debian 12-server met een gewoon account. De naam en nummers van het inlogaccount en de aanvullende groepen zijn vervangen door voorbeeldwaarden (user1, 1000, adm, systemd-journal).

1️⃣ Basisgebruik van het id-commando

  • ↪️ De drie velden uid, gid en groups lezen

Als je id zonder opties uitvoert, verschijnt de informatie van het account dat de huidige shell heeft gestart op één regel. Uitgevoerd met het root-account waren alle drie de velden 0(root).

id
uid=0(root) gid=0(root) groups=0(root)

Het veld uid is het nummer en de naam van het account, en het veld gid is het nummer en de naam van de primaire groep (primary group). Het veld groups bevat alle groepen waartoe het account behoort, met de primaire groep vooraan.

Als je na id een accountnaam zet, verschijnt de informatie van dat account. Bij het gewone account user1, dat aanvullende groepen heeft, stonden in het veld groups na de primaire groep user1 ook adm en systemd-journal. Deze groepen waartoe het account naast de primaire groep behoort, zijn de aanvullende groepen (supplementary group).

id user1
uid=1000(user1) gid=1000(user1) groups=1000(user1),4(adm),190(systemd-journal)

Bij veel accounts hebben UID en gid hetzelfde nummer, waardoor je de twee getallen makkelijk als dezelfde waarde ziet, maar het account adm dat standaard op de server staat, had UID 3 en primaire-groepsnummer 4. Het account operator had root als primaire groep.

id adm
uid=3(adm) gid=4(adm) groups=4(adm)
id operator
uid=11(operator) gid=0(root) groups=0(root)

Als je meerdere accounts opgeeft, verschijnt er één per regel.

id root bin
uid=0(root) gid=0(root) groups=0(root)
uid=1(bin) gid=1(bin) groups=1(bin)

Bij een account dat niet bestaat, verschijnt de fout [no such user], en de afsluitcode was 1.

id no-such-user9
id: 'no-such-user9': no such user
echo $?
1

De afsluitcode bij een bestaand account is 0, zodat je die in een script kunt gebruiken als voorwaarde om te controleren of een account bestaat.

2️⃣ Opties van het id-commando

  • ↪️ -u, -g, -G voor nummers en -n voor namen

Om uit de hele uitvoer maar één nummer aan een script door te geven, kies je met een optie één veld. -u toont de UID, -g het nummer van de primaire groep en -G alle nummers van de groepen waartoe het account behoort.

id -u
0
id -u daemon
2
id -G user1
1000 4 190

Met -n erbij verschijnen namen in plaats van nummers. Bij het controleren van de groepen van user1 met [id -Gn] werden de drie nummers drie namen.

id -Gn user1
user1 adm systemd-journal
id -gn user1
user1

-n en -r gebruik je samen met een van de opties -u, -g en -G. Met alleen -n verscheen de fout hieronder.

id -n
id: cannot print only names or real IDs in default format

-r toont de echte (real) ID in plaats van de effectieve (effective) ID. In een shell van het root-account gaf [id -ur] 0. Als je twee of meer opties die een nummer kiezen, zoals -u en -g, samen opgeeft, verschijnt de fout [cannot print "only" of more than one choice]. Hieronder staan de opties op een rij.

OptieKopiërenUitleg
-u--userToont het UID-nummer
-g--groupToont het nummer van de primaire groep
-G--groupsToont alle nummers van de groepen waartoe het account behoort
-n--nameToont samen met -u, -g of -G de naam in plaats van het nummer
-r--realToont samen met -u, -g of -G de echte (real) ID in plaats van de effectieve ID
OptieKopiërenUitleg
-Z--contextToont alleen de beveiligingscontext van het proces
-z--zeroScheidt de uitvoeritems met NUL-tekens in plaats van spaties; niet te gebruiken in de standaardindeling
-aWordt alleen aanvaard voor compatibiliteit met andere versies van id en genegeerd
--helpToont de hulp
--versionVersie tonen

🔲 Simulator voor het id-commando

De simulator hieronder start met het account user1, dat aanvullende groepen heeft. Nadat je met de chip [🖊 Other window] de groep wheel hebt toegevoegd, kun je [id] en [id user1] vergelijken en met de chip [🔁 Log in again] de groepen van een nieuwe shell controleren.

Simulator voor het id-commandocoreutils 8.32
[root@server work]#
Werkt alleen in de browser. Wijzig de groepen met de chip [🖊 Other window], vergelijk daarna [id] en [id user1] en controleer met de chip [🔁 Log in again] de groepen van een nieuwe shell.

3️⃣ Het whoami-commando en id -un

  • ↪️ De huidige accountnaam controleren en andere accounts controleren

Heb je alleen de accountnaam van de huidige shell nodig, voer dan whoami uit. De man-pagina beschrijft whoami als hetzelfde commando als [id -un]. Met het root-account gaven beide commando's root.

whoami
root
id -un
root

Ook met een gewoon account op de Debian 12-server gaven de twee commando's dezelfde accountnaam.

whoami
user1
id -un
user1

whoami toont de accountnaam die hoort bij de huidige effectieve (effective) UID. Het commando controleert alleen het huidige account, dus als je er een accountnaam achter zet, verschijnt er een fout.

whoami user1
whoami: extra operand 'user1'
Try 'whoami --help' for more information.

De naam of het nummer van een ander account controleer je door dat account na id te zetten.

id -un user1
user1

Met -u in plaats van -un verschijnt op dezelfde plek het UID-nummer in plaats van de accountnaam.

4️⃣ Het groups-commando en aanvullende groepen

  • ↪️ Primaire en aanvullende groepen, en de shell na een groepswijziging

groups toont alleen de groepsnamen op één regel. Zonder accountnaam verschijnen de groepen van de huidige shell, en met het root-account was dat alleen root.

groups
root

Met een accountnaam verschijnen de accountnaam en na de dubbele punt de groepen. Met meerdere accounts verscheen er één per regel.

groups user1 daemon
user1 : user1 adm systemd-journal
daemon : daemon

De primaire groep en de aanvullende groepen worden op verschillende plekken vastgelegd. Aanvullende groepen staan als leden in het vierde veld van de groepsdatabase (/etc/group), en de primaire groep staat als nummer in het vierde veld van de accountinformatie (/etc/passwd).

getent group adm
adm:x:4:user1
getent group user1
user1:x:1000:
getent passwd daemon
daemon:x:2:2:daemon:/sbin:/sbin/nologin

Bij de groep user1, de primaire groep van user1, was het vierde veld leeg, en bij de aanvullende groep adm stond user1 als lid. De 2 in het vierde veld van de regel van het account daemon is het nummer van de primaire groep.

Om een account aan een aanvullende groep toe te voegen, gebruik je het usermod-commando in de vorm [usermod -aG groep account]. Met alleen -G zonder -a valt het account uit bestaande aanvullende groepen die niet in de lijst staan, dus zet je -a erbij.

groups zonder accountnaam toont de groepen van het huidige shellproces. De man-pagina legt uit dat deze waarde kan afwijken van de database als de groepsdatabase verandert.

Controleer daarom direct na een groepswijziging de groepen in de database met [groups account] of [id account], en log opnieuw in om ze in de shell door te voeren. Een commando dat de huidige groeps-ID wijzigt terwijl je ingelogd blijft, is newgrp.

🔢 FAQ & aanbevolen content

Ja, dat kan. Op de AlmaLinux 9.8-server gaf [id 0] hetzelfde als [id root]: uid=0(root) gid=0(root) groups=0(root).

Vanaf het nummer dat bij UID_MIN in /etc/login.defs staat. Op de AlmaLinux 9.8-server was dat 1000, en SYS_UID_MIN en SYS_UID_MAX in hetzelfde bestand waren 201 en 999, het bereik van de systeemaccounts.

who am i is who met twee woorden erachter; het werkt hetzelfde als de optie -m en toont één regel met de inloggegevens van de terminal waarin je typt. whoami toont alleen één regel met de accountnaam van de huidige effectieve UID.

ℹ️ Affiliatemelding
De content van deze site bevat affiliatelinks. Koopt een bezoeker via een van deze links een product of dienst, dan ontvangt deze site een commissie van de verkoper. Het bedrag dat de koper betaalt (bij acties gaat het omlaag ↓) wordt daardoor niet hoger. De vermelde prijzen, kortingen en voorraad gelden op het moment van schrijven en kunnen afwijken; controleer ze daarom vóór je aankoop bij de verkoper. Producten worden gekozen en beoordeeld volgens onze eigen criteria, en commissies hebben geen invloed op de volgorde of de inhoud van de beoordelingen.

Geef een reactie

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Laat zien dat je geen machine bent: 6   +   1   =