Je ne sais pas pourquoi les éléments suivants ont une sortie différente. Ma compréhension est que les groupes sans spécifier un utilisateur donnent tous les groupes dont l'utilisateur actuellement connecté est membre.
jacob@box:~$ groups
jacob adm lp dialout cdrom plugdev lpadmin sambashare
jacob@box:~$ groups jacob
jacob : jacob
Qu'est-ce que cela signifie également "groupes du processus actuel" (à partir de la page de manuel des groupes)? Où sont-ils installés?
REMARQUE: ma distribution est Ubuntu.
Réponses:
Il pourrait s'agir de l'un des éléments suivants:
Les groupes sont définis dans le
/etc/group
.la source
Tout comme chaque processus a un ID utilisateur réel et efficace actuel, et un ID de groupe réel et efficace, il a également une liste de groupes supplémentaires . Ce sont des nombres (pas des noms) tous maintenus par le noyau. Ils sont définis par le processus de connexion (ou le gestionnaire d'affichage) lorsque vous le connectez, tout comme votre ID utilisateur. Ils sont hérités par des sous-processus, tout comme votre ID utilisateur.
Lorsque vous exécutez
groups
sans arguments, il appelle finalement getgroups () pour obtenir la liste des groupes supplémentaires à partir du noyau. (Sur mon système Linux, / usr / bin / groups est un script shell qui exécute "id -Gn", qui à son tour appelle getgroups ().)Lorsque vous exécutez
groups username
, la commande doit "deviner" quels seront les groupes supplémentaires lorsque cet utilisateur se connectera. Elle le fait généralement en lisant / etc / group ou en parlant à NIS ou en parlant à nscd ou ... Eh bien, il y a un beaucoup de façons dont cela pourrait fonctionner.Ce que vous observez revient à découvrir que votre véritable identifiant utilisateur actuel et votre entrée dans / etc / passwd sont incohérents. Cela signifie qu'il y a quelque chose d'un peu étrange dans la configuration de votre système, mais il est difficile de dire quoi sans enquête supplémentaire.
la source
(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: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. Laid
commande est plus récente que l'anciennegroups
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 lagroups 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 lagroups 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:
la source