(Remarque: La groups
commande, bien que toujours utile, est principalement remplacée par la commande id .)
Un utilisateur a un groupe principal qui est traditionnellement défini dans le fichier
/etc/passwd
avec lequel il se connecte, mais qui peut avoir aujourd'hui d'autres sources. Il peut également être membre de groupes supplémentaires, dits groupes secondaires ou supplémentaires, traditionnellement spécifiés dans le fichier /etc/groups
, mais qui peuvent aujourd'hui également provenir ou être impliqués par des sources supplémentaires (telles que NIS, LDAP, SAMBA, etc.).
Les groupes primaires et supplémentaires sont définis au moment de la connexion et restent à jour . Cependant, l'utilisateur peut à tout moment modifier son groupe principal actif actuel
à l'aide de la newgrp
commande.
Le processus de connexion définit les groupes principal et supplémentaire. Pour les versions ultérieures, il appelle généralement la fonction
libgroup initgroups , qui compile la liste des données de groupe supplémentaires et la transmet à la
fonction setgroups , qui l'établit dans le contexte du processus.
Les sources d'information pour initgroups
sont:
utilisé par la bibliothèque GNU C et certaines autres applications pour déterminer les sources à partir desquelles obtenir des informations sur les services de noms dans une série de catégories et dans quel ordre. Chaque catégorie d'informations est identifiée par un nom de base de données.
La groups
commande affiche les groupes actuellement appliqués à votre utilisateur, et la liste commencera par le groupe principal actuel suivi des groupes supplémentaires à partir de la connexion. Les modifications apportées aux sources des données après la connexion ne sont pas reflétées dans la liste affichée.
La groups username
commande demande Linux pour calculer les groupes pour cet utilisateur, ce qu'il fera en utilisant principalement les fichiers /etc/password
et /etc/groups
puis les autres sources. Cela reflétera la situation actuelle des fichiers système et peut ne pas correspondre aux groupes actuels qui sont toujours en vigueur au moment de la connexion.
La groups username
commande peut donner un résultat différent lorsqu'elle n'utilise pas toutes les sources utilisées par le processus de connexion pour calculer vos groupes supplémentaires, ce qui s'est apparemment produit dans votre cas. Ces sources peuvent ne pas être accessibles depuis votre identifiant ou peuvent tout simplement ne pas être consultées par la commande.
L'utilisation de la id username
commande peut donner de meilleurs résultats, mais elle n'est pas non plus garantie d'être aussi complète que celle du processus de connexion. La id
commande est plus récente que l'ancienne groups
commande et devait être plus précise que celle-ci .
Bien que la groups
commande donne un résultat précis et correct, vous avez bien démontré que la groups username
commande ne peut pas dépendre de faire de même.
Sans examiner le code source de la groups
commande, je suppose que l'implémentation de la groups username
commande dans vos analyses de distribution Linux /etc/groups
, qui dans votre cas ne contenait rien, mais n'utilise pas /etc/nsswitch.conf
, d'où venaient tous vos groupes supplémentaires. Est donc classé que le nom du groupe primaire,
jacob
.
Pour plus d'informations, voir: