Linux / Commande groups : vérifier les groupes d’un compte ou d’une session

groups affiche les noms des groupes principaux et supplémentaires associés au processus courant ou aux comptes indiqués. Sans nom d'utilisateur, il examine les groupes de votre contexte d'exécution. Avec un nom, il consulte les informations du compte, ce qui peut donner un résultat différent après un changement d'appartenance.

Consulter les groupes de la session courante

groups

La commande affiche une liste de noms, dont le contenu dépend de votre machine et des groupes hérités par le processus. Elle ne modifie aucune appartenance et n'ouvre pas un nouveau shell. Avec GNU Coreutils, cette liste correspond à celle de id -Gn.

Pour distinguer les noms et les identifiants numériques, comparez avec id et ses sélections de groupes :

id
id -g
id -G

Le GID, pour Group Identifier, est le nombre qui identifie un groupe. id -g sélectionne le GID principal effectif ; id -G donne les identifiants de la liste de groupes. Ne supposez pas que le nom d'un utilisateur est aussi son groupe principal : ce sont deux informations distinctes.

Interroger un compte nommé

groups [utilisateurs…]

Remplacez alice par un compte qui existe sur la machine :

groups alice
id alice

Un affichage possible, fictif, est :

alice : users sudo

Quand ce préfixe est affiché, alice avant les deux-points désigne le compte interrogé ; users et sudo après les deux-points sont les noms de groupes. La présentation dépend de l'implémentation et du nombre de comptes demandés. Les noms de cet exemple ne sont pas une liste à attendre sur toutes les distributions.

La consultation n'exécute rien sous l'identité d'alice. Un compte inexistant produit une erreur plutôt qu'une nouvelle entrée. Pour plusieurs comptes, la forme groups alice bob demande leurs informations séparément, si ces noms existent sur votre système.

Comprendre une différence après un changement de groupes

Un processus reçoit normalement ses groupes de son parent. Une session déjà ouverte peut donc conserver une ancienne liste alors que les bases de comptes et de groupes ont été mises à jour.

groups
groups "$(id -un)"

La première ligne interroge le contexte courant ; la seconde consulte le compte désigné par son nom effectif. Elles sont souvent similaires, mais une différence peut révéler que la session n'a pas encore acquis une nouvelle appartenance.

Pour diagnostiquer un accès refusé, exécutez groups et id dans la session qui rencontre l'erreur. Vérifiez ensuite les informations du compte nommé. Une nouvelle connexion peut être nécessaire pour obtenir la liste mise à jour ; un service doit être examiné dans son propre contexte. Une simple consultation groups alice ne met pas à jour les groupes du shell existant.

Si un identifiant ne peut pas être résolu en nom, la commande peut signaler une erreur et afficher une valeur numérique. Consultez le diagnostic et le statut, puis comparez aux GID fournis par id -G. Une sortie partielle ne doit pas être traitée comme une résolution complète de tous les noms.

Relier la liste à un problème d'accès

Une appartenance à un groupe aide à comprendre les permissions d'un fichier partagé, mais elle ne garantit pas l'accès à tous les chemins. Vérifiez le groupe propriétaire, les permissions de chaque répertoire à traverser et les éventuelles listes de contrôle d'accès, ou ACL pour Access Control Lists. D'autres mécanismes du système peuvent également intervenir.

De même, la présence d'un groupe nommé sudo ne décrit pas à elle seule la politique d'élévation de droits. Pour savoir ce qu'un compte est autorisé à faire, distinguez son appartenance des règles qui utilisent cette appartenance.

Commande Information
groups Noms des groupes du processus courant.
groups utilisateur Groupes du compte consultés à nouveau.
id -g GID principal effectif courant.
id -G Liste des identifiants numériques de groupes.
id -Gn Noms associés à cette liste, lorsque leur résolution réussit.

GNU groups propose --help et --version. Consultez man groups pour votre implémentation et le manuel officiel de GNU groups pour la différence entre les groupes hérités par un processus et la consultation des bases de comptes.