Linux / Commande id : vérifier UID, GID et groupes d’un utilisateur
id affiche les identifiants utilisateur et les groupes du processus courant, ou les informations d'un compte indiqué en argument. Sans argument utilisateur, il sert à examiner le contexte dans lequel une commande fonctionne réellement. Avec un nom de compte, il consulte les informations de ce compte sans changer l'identité de votre session.
L'UID, pour User Identifier, identifie l'utilisateur ; le GID, pour Group Identifier, identifie un groupe. Ces nombres interviennent dans les contrôles d'accès Linux. Les noms associés facilitent la lecture, mais les valeurs et les groupes disponibles dépendent de chaque système.
Lire la sortie sans confondre utilisateur et groupe
id
Voici un résultat fictif destiné à expliquer les champs :
uid=1000(alice) gid=100(users) groups=100(users),27(sudo)
uid=1000(alice) désigne l'utilisateur. gid=100(users) désigne son groupe principal dans cet exemple. La liste groups contient ce groupe et un groupe supplémentaire nommé sudo. Les nombres 1000, 100 et 27 ne sont pas des valeurs universelles à recopier.
Dans la sortie GNU par défaut, uid et gid correspondent aux identifiants réels du processus. Si les identifiants effectifs diffèrent, id les affiche aussi avec des champs distincts. Un contexte de sécurité peut également apparaître selon les mécanismes activés sur le système. Les options qui ne sélectionnent qu'une valeur ont leurs propres règles, détaillées ci-dessous.
Demander seulement les valeurs nécessaires
Pour l'utilisateur effectif, choisissez un nombre ou un nom :
id -u
id -un
Sur le compte fictif ordinaire de l'exemple, les sorties pourraient être 1000 puis alice. id -un est équivalent à whoami et son nom d'utilisateur effectif dans GNU Coreutils.
Pour le groupe principal effectif, puis les groupes du contexte courant :
id -g
id -gn
id -G
id -Gn
-g affiche un seul identifiant de groupe ; -G affiche la liste comprenant le groupe principal et les groupes supplémentaires. -n, combiné à -u, -g ou -G, demande les noms plutôt que les nombres.
Dans un script qui a besoin d'un nombre, préférez l'option précise à une extraction fragile du texte complet de id. Le nom d'un groupe ou son ordre d'affichage ne doit pas être supposé identique entre machines.
Si le système ne peut pas associer un GID à un nom, une sélection avec -n peut produire un diagnostic et un statut non nul, même si une valeur numérique apparaît dans la sortie. Consultez alors id -g ou id -G pour les nombres et vérifiez la résolution des groupes. Ne traitez pas une sortie partielle comme une liste de noms entièrement résolue.
Distinguer identifiant réel et identifiant effectif
Un processus peut posséder un identifiant réel et un identifiant effectif différents. Sans -r, les sélections -u et -g affichent les valeurs effectives. Pour demander les valeurs réelles :
id -ru
id -rg
Dans un shell ordinaire, ces nombres sont souvent les mêmes que ceux obtenus avec id -u et id -g. L'option est utile pour examiner une distinction lorsqu'elle existe ; elle ne crée pas cette distinction.
L'UID réel du processus ne signifie pas forcément « compte de la première connexion ». Un programme qui change d'identité peut aussi modifier ses identifiants réels. Ne cherchez donc pas à reconstituer toute l'histoire d'une connexion à partir du seul résultat de id -ru. La portée de chaque identifiant est celle du processus interrogé.
Comparer la session courante et un compte nommé
Pour consulter un autre compte, indiquez son nom. Remplacez alice par un compte qui existe réellement sur votre système :
id alice
Cette commande ne devient pas le compte alice ; elle interroge les sources de comptes et de groupes configurées sur la machine. Un nom inexistant provoque une erreur, pas la création d'un utilisateur.
Vous pouvez aussi comparer votre processus actuel à une nouvelle consultation de son nom :
id
id "$(id -un)"
Les deux sorties sont souvent proches, mais elles n'ont pas la même source d'information. Sans nom, id examine les identifiants et les groupes du processus. Avec un nom, il consulte à nouveau les bases de comptes et de groupes.
Après un changement d'appartenance à un groupe, une session déjà ouverte peut conserver son ancienne liste. La consultation du compte nommé peut afficher le changement alors que le processus qui rencontre une erreur d'accès ne le possède pas encore. Pour diagnostiquer ce cas, lancez id dans la session ou le service qui rencontre le problème, puis comparez à la consultation du compte.
Une nouvelle connexion peut être nécessaire pour obtenir les groupes actualisés dans une session ; un service possède son propre contexte à contrôler. Ne modifiez pas au hasard les permissions du fichier pour masquer une différence de groupes non prise en compte.
Utiliser le résultat dans un diagnostic d'accès
Commencez par vérifier l'utilisateur, le groupe principal et les groupes supplémentaires du contexte concerné. Comparez ensuite ces identifiants aux propriétaires et aux permissions du chemin visé. Une appartenance à un groupe est un élément du diagnostic, pas une preuve suffisante que toutes les opérations sont autorisées.
Un groupe nommé sudo ne décrit pas à lui seul la politique sudo. De même, d'autres mécanismes d'accès peuvent intervenir au-delà des permissions classiques. Distinguez ce que id vous montre de la décision complète prise lors d'un accès ou d'une élévation de droits.
| Option | Résultat |
|---|---|
-u |
UID effectif seulement, sans -r. |
-g |
GID principal effectif seulement, sans -r. |
-G |
Groupe principal et groupes supplémentaires. |
-n |
Noms au lieu de nombres, avec -u, -g ou -G. |
-r |
Valeurs réelles plutôt qu'effectives avec une sélection compatible. |
Vérifiez man id pour l'implémentation installée. Le manuel officiel de GNU id précise les champs par défaut, les options et la différence entre les groupes hérités par le processus et les informations du compte consultées à nouveau.




