Commande id : vérifier l'UID et les groupes, whoami, groups et groupes secondaires
Pour vérifier l'UID et les groupes du compte courant sur un serveur Linux, on utilise la commande id ; si l'on n'a besoin que du nom du compte, on utilise whoami, et groups si l'on n'a besoin que des noms de groupes. En lançant les trois commandes l'une après l'autre sur des serveurs AlmaLinux 9 et Debian 12 puis en comparant les sorties, on a vu que id -un et whoami affichaient le même nom de compte, et que groups affichait la liste des groupes de id en ne gardant que les noms.
La sortie ci-dessous provient d'un serveur AlmaLinux 9.8 avec le compte root et d'un serveur Debian 12 avec un compte ordinaire. Le nom et les numéros du compte de connexion ainsi que ses groupes secondaires ont été remplacés par des valeurs d'exemple (user1, 1000, adm, systemd-journal).
1️⃣ Utilisation de base de la commande id
Sans option, id affiche sur une ligne les informations du compte qui a lancé le shell courant. Avec le compte root, les trois champs valaient tous 0(root).
iduid=0(root) gid=0(root) groups=0(root)Le champ uid donne le numéro et le nom du compte, et le champ gid le numéro et le nom du groupe principal (primary group). Le champ groups contient tous les groupes auxquels le compte appartient, avec le groupe principal en premier.
Si l'on écrit un nom de compte après id, on obtient les informations de ce compte. Pour le compte ordinaire user1, qui a des groupes secondaires, adm et systemd-journal suivaient le groupe principal user1 dans le champ groups. Ces groupes auxquels le compte appartient en plus du groupe principal sont les groupes secondaires (supplementary group).
id user1uid=1000(user1) gid=1000(user1) groups=1000(user1),4(adm),190(systemd-journal)Beaucoup de comptes ont le même numéro pour l'UID et le gid, si bien qu'on prend facilement les deux nombres pour la même valeur ; pourtant le compte adm, présent par défaut sur le serveur, avait l'UID 3 et le numéro de groupe principal 4. Le compte operator avait root comme groupe principal.
id admuid=3(adm) gid=4(adm) groups=4(adm)id operatoruid=11(operator) gid=0(root) groups=0(root)Si l'on écrit plusieurs comptes, on obtient une ligne par compte.
id root binuid=0(root) gid=0(root) groups=0(root)
uid=1(bin) gid=1(bin) groups=1(bin)Si l'on écrit un compte qui n'existe pas, l'erreur [no such user] s'affiche, et le code de sortie était 1.
id no-such-user9id: 'no-such-user9': no such userecho $?1Le code de sortie pour un compte existant est 0, ce qui permet de s'en servir dans un script comme condition pour vérifier qu'un compte existe.
2️⃣ Options de la commande id
Pour ne passer à un script qu'un seul numéro de toute la sortie, on choisit un seul champ avec une option. -u affiche l'UID, -g le numéro du groupe principal et -G tous les numéros des groupes auxquels le compte appartient.
id -u0id -u daemon2id -G user11000 4 190Avec -n en plus, on obtient des noms à la place des numéros. En vérifiant les groupes de user1 avec [id -Gn], les trois numéros sont devenus trois noms.
id -Gn user1user1 adm systemd-journalid -gn user1user1-n et -r s'utilisent avec l'une des options -u, -g et -G. En écrivant -n seul, on a obtenu l'erreur ci-dessous.
id -nid: cannot print only names or real IDs in default format-r affiche l'ID réel (real) à la place de l'ID effectif (effective). Dans un shell du compte root, [id -ur] a affiché 0. Si l'on écrit ensemble deux options ou plus qui choisissent un numéro, comme -u et -g, l'erreur [cannot print "only" of more than one choice] s'affiche. Voici le récapitulatif des options.
| Option | Copier | Description |
|---|---|---|
| -u--user | Affiche le numéro d'UID | |
| -g--group | Affiche le numéro du groupe principal | |
| -G--groups | Affiche tous les numéros des groupes d'appartenance | |
| -n--name | Avec -u, -g ou -G, affiche le nom à la place du numéro | |
| -r--real | Avec -u, -g ou -G, affiche l'ID réel (real) à la place de l'ID effectif |
| Option | Copier | Description |
|---|---|---|
| -Z--context | Affiche seulement le contexte de sécurité du processus | |
| -z--zero | Sépare les éléments de la sortie par des caractères NUL au lieu d'espaces ; inutilisable dans le format par défaut | |
| -a | Accepté seulement pour la compatibilité avec d'autres versions de id, puis ignoré | |
| --help | Affiche l'aide | |
| --version | Afficher la version |
🔲 Simulateur de la commande id
Le simulateur ci-dessous démarre avec le compte user1, qui a des groupes secondaires. Après avoir ajouté le groupe wheel avec la puce [🖊 Autre fenêtre], on peut comparer [id] et [id user1], puis vérifier les groupes d'un nouveau shell avec la puce [🔁 Se reconnecter].
3️⃣ La commande whoami et id -un
Si l'on n'a besoin que du nom du compte du shell courant, on lance whoami. La page de man décrit whoami comme la même commande que [id -un]. Avec le compte root, les deux commandes ont affiché root.
whoamirootid -unrootAvec un compte ordinaire sur le serveur Debian 12, les deux commandes ont aussi affiché le même nom de compte.
whoamiuser1id -unuser1whoami affiche le nom du compte qui correspond à l'UID effectif (effective) courant. Cette commande ne vérifie que le compte courant, donc une erreur s'affiche si l'on ajoute un nom de compte derrière.
whoami user1whoami: extra operand 'user1'
Try 'whoami --help' for more information.Pour vérifier le nom ou le numéro d'un autre compte, on écrit ce compte après id.
id -un user1user1Si l'on écrit -u à la place de -un, le numéro d'UID s'affiche au même endroit à la place du nom du compte.
4️⃣ La commande groups et les groupes secondaires
groups affiche seulement les noms de groupes sur une ligne. Sans nom de compte, on obtient les groupes du shell courant ; avec le compte root, il n'y avait que root.
groupsrootAvec un nom de compte, on obtient le nom du compte puis, après les deux-points, les groupes. Avec plusieurs comptes, on a obtenu une ligne par compte.
groups user1 daemonuser1 : user1 adm systemd-journal
daemon : daemonLe groupe principal et les groupes secondaires ne sont pas enregistrés au même endroit. Les groupes secondaires sont inscrits comme membres dans le quatrième champ de la base des groupes (/etc/group), et le groupe principal est inscrit sous forme de numéro dans le quatrième champ des informations du compte (/etc/passwd).
getent group admadm:x:4:user1getent group user1user1:x:1000:getent passwd daemondaemon:x:2:2:daemon:/sbin:/sbin/nologinLe groupe user1, groupe principal de user1, avait un quatrième champ vide, et user1 était inscrit comme membre du groupe secondaire adm. Le 2 du quatrième champ de la ligne du compte daemon est le numéro du groupe principal.
Pour ajouter un compte à un groupe secondaire, on utilise la commande usermod sous la forme [usermod -aG groupe compte]. Avec -G seul, sans -a, le compte sort des groupes secondaires existants qui ne figurent pas dans la liste ; on écrit donc -a avec.
groups lancé sans nom de compte affiche les groupes du processus du shell courant. La page de man explique que cette valeur peut différer de la base quand la base des groupes change.
C'est pourquoi, juste après un changement de groupes, on vérifie les groupes de la base avec [groups compte] ou [id compte], et on se reconnecte pour les appliquer au shell. Pour changer l'ID de groupe courant sans se déconnecter, il existe la commande newgrp.
🔢 FAQ & contenus recommandés
Créer des comptes
Linux : commande useradd & commande passwd
Des commandes qui créent un nouveau compte utilisateur et définissent le mot de passe de ce compte.
Suppression de compte
[Linux] Commande userdel : supprimer un compte utilisateur
Une commande qui supprime un compte utilisateur inutilisé et nettoie aussi son dossier personnel.
Expiration du mot de passe
Commande chage sous Linux
Une commande qui vérifie et modifie la durée de validité et la date d'expiration du mot de passe d'un compte utilisateur.
ℹ️ Mention d'affiliation
Le contenu de ce site contient des liens d'affiliation. Lorsqu'un visiteur achète un produit ou un service via l'un de ces liens, le site perçoit une commission du vendeur. Le montant payé par l'acheteur(il baisse lors des promotions ↓), lui, n'augmente pas. Les prix, remises et stocks indiqués correspondent à la date de rédaction et peuvent différer ; vérifiez-les donc auprès du vendeur avant d'acheter. Les produits sont choisis et évalués selon nos propres critères, et les commissions n'influencent ni l'ordre de présentation ni le contenu des évaluations.