Linux / Commande getent : consulter les comptes, groupes et hôtes avec NSS
getent consulte les bases de comptes, de groupes ou de noms d'hôtes au moyen de NSS, pour Name Service Switch. Il utilise les sources configurées par le système, qui peuvent inclure des fichiers locaux et un annuaire externe. Son résultat peut donc différer d'une recherche limitée à /etc/passwd ou /etc/group.
Choisir une base et une clé
getent [options] base [clé…]
Indiquez d'abord la base, puis le nom ou l'identifiant recherché. Les exemples suivants sont des consultations ; alice et editors doivent être remplacés par un utilisateur et un groupe pertinents sur votre machine :
getent passwd alice
getent group editors
getent hosts localhost
passwd est ici le nom d'une base d'identités, pas une demande de changement de mot de passe. group consulte une entrée de groupe et hosts recherche un nom ou une adresse selon la configuration de résolution. La réponse pour localhost peut varier, notamment entre IPv4 et IPv6.
La configuration /etc/nsswitch.conf indique les services et leurs règles de recherche. Lire seulement un fichier local avec grep ne consulte pas les autres sources configurées ; c'est pourquoi un compte provenant d'un annuaire peut être visible avec getent sans ligne correspondante dans le fichier local.
Lire une entrée de compte
getent passwd root
Exemple de réponse, dont le commentaire, le dossier personnel et le shell dépendent du système :
root:x:0:0:root:/root:/bin/bash
Les sept champs séparés par deux-points désignent le nom, le champ de mot de passe, l'identifiant utilisateur UID, le groupe principal GID, un commentaire, le dossier personnel et le shell. Dans cet exemple, les troisième et quatrième champs valent 0. Le x n'est pas le mot de passe réel ; une consultation de la base passwd ne fournit pas ce secret en clair.
Ne déduisez pas de cette seule ligne que la connexion est autorisée : les règles d'authentification et l'état du compte interviennent également. Pour examiner un compte nommé et ses identifiants de groupes, complétez avec la commande id.
Lire un groupe sans le confondre avec une session
Une réponse fictive à une recherche de groupe pourrait être :
editors:x:1050:alice,bob
Le premier champ nomme le groupe ; le troisième est son GID ; le dernier contient une liste de membres séparés par des virgules. Les détails du format sont décrits dans la page group(5).
Cette entrée ne décrit pas les groupes déjà hérités par chaque processus en cours. Après une modification d'appartenance, une session ouverte peut conserver ses anciennes informations. Comparez avec groups dans la session concernée avant d'expliquer un accès refusé par le seul contenu d'une entrée d'annuaire.
Interpréter une absence de résultat
Relevez le code de sortie immédiatement après la consultation :
getent passwd alice
printf 'Code de sortie : %s\n' "$?"
| Code documenté | Signification |
|---|---|
0 |
Commande terminée avec succès. |
1 |
Arguments manquants ou base inconnue. |
2 |
Au moins une clé demandée n'a pas été trouvée. |
3 |
L'énumération n'est pas prise en charge pour cette base. |
Une clé non trouvée ne prouve pas à elle seule que le compte n'existe nulle part : une source attendue peut être indisponible ou absente de la configuration de ce système. Vérifiez le nom exact, le contexte de la machine et le service NSS concerné. Avec plusieurs clés, contrôlez aussi les réponses effectivement renvoyées : une sortie partielle et un code non nul peuvent coexister.
Limiter l'énumération et cibler un service
Sans clé, getent passwd tente d'énumérer les entrées accessibles. Certaines bases ne permettent pas cette opération et certains annuaires limitent l'énumération. Une recherche ciblée reste plus utile pour diagnostiquer un compte précis et évite un volume de sortie inutile.
Dans l'implémentation glibc, l'option -s service remplace le service utilisé pour toutes les bases, tandis que -s base:service limite ce remplacement à la base indiquée. Par exemple, la comparaison suivante consulte d'abord le chemin NSS normal, puis explicitement le service de fichiers pour passwd :
getent passwd alice
getent -s passwd:files passwd alice
Une différence entre ces résultats peut aider à repérer une source externe, mais n'en identifie pas automatiquement le serveur. L'option ne modifie pas nsswitch.conf et ne change pas la configuration des autres programmes.
La page de manuel getent répertorie les bases, les options et les codes de sortie. Vérifiez getent --help ou man getent sur la distribution concernée avant de reprendre une option spécifique à glibc.




