29/01/2025

Linux

La gestion des groupes sous Linux : commandes et exemples pratiques

I. Présentation

Cet article évoque la gestion des groupes sur Linux, avec notamment l'importance du fichier "/etc/group" et l'utilisation de plusieurs commandes essentielles pour accomplir plusieurs tâches d'administration.

Sur un poste de travail ou un serveur, qu'il soit sous Linux ou sous Windows, la gestion des groupes est une opération que tout administrateur système doit être en mesure d'effectuer. Cela est notamment utile avec les systèmes multi-utilisateurs ou les systèmes sur lesquels différents services sont déployés.

Pour rappel, les groupes permettent de regrouper plusieurs utilisateurs afin de leur attribuer des permissions communes. Il peut s'agir notamment de permissions sur des fichiers ou des répertoires. Cela simplifie la gestion des droits d'accès tout en offrant une flexibilité accrue dans l'administration.

Version originale de l'article : 29 novembre 2011

II. Le fichier /etc/group

Sur les machines Linux, le fichier "/etc/group" joue un rôle central dans la gestion des groupes. Pourquoi ? Tout simplement parce qu'il contient la liste de tous les groupes présents sur le système, avec leurs attributs. Dans ce fichier, que vous pouvez consulter en exécutant la commande ci-dessous, chaque ligne représente un groupe.

cat /etc/group

Voici un aperçu du fichier :

Son contenu suit la syntaxe suivante :

[nom_du_groupe]:x:[GID]:[liste_des_utilisateurs]
  • nom_du_groupe : le nom du groupe.
  • x : indique que le mot de passe du groupe est stocké ailleurs (souvent inutilisé).
  • GID : l'identifiant unique du groupe.
  • liste_des_utilisateurs : les membres du groupe, séparés par des virgules.

Chaque utilisateur peut appartenir à un ou plusieurs groupes et chaque groupe dispose d'un identifiant unique appelé GID (Group ID).

Lorsqu'un utilisateur est créé, il y a généralement un groupe portant son nom qui est également créé. C'est pour cette raison que vous pourriez voir une ligne similaire à celle ci-dessous, où "flo" correspond au nom d'utilisateur. Pour les éléments créés par l'administrateur système, le GID commence à partir de 1000 et il va ensuite s'incrémenter de 1 (1001, 1002, etc.).

flo:x:1000:

Voici un autre exemple de ligne que vous pourriez rencontrer :

it-connect:x:1001:flo,sysadmin

Dans cet exemple, le groupe "it-connect" a pour GID 1001 et il a les membres suivants : flo, sysadmin.

III. Linux : groupe primaire et groupe secondaire

Sur une machine Linux, chaque utilisateur est associé à un groupe primaire et peut également appartenir à plusieurs groupes secondaires. Qu'est-ce que cela signifie ? Quelles sont les différences ? C'est ce que nous allons voir.

A. Groupe primaire

Le groupe primaire est le groupe principal auquel un utilisateur est associé. Il est défini au moment de la création de l'utilisateur et est généralement utilisé par défaut pour les fichiers qu'il crée.

Chaque utilisateur est associé à un groupe primaire. Le groupe primaire est spécifié dans le fichier "/etc/passwd" pour chaque utilisateur. Par exemple, l'utilisateur "flo" a comme groupe primaire, un groupe portant son nom (créé lors de la création de l'utilisateur). Il s'agit du comportement par défaut. C'est pour cette raison que nous avons la ligne suivante dans le fichier "/etc/passwd" :

flo:x:1000:1000:flo:/home/flo:/bin/bash

Lorsqu'un utilisateur crée un fichier ou un répertoire, le groupe propriétaire du fichier est défini avec son groupe primaire, sauf si une autre configuration est en place (setgid).

B. Groupes secondaires

Les groupes secondaires sont des groupes supplémentaires auxquels un utilisateur peut appartenir. Ils permettent de donner à un utilisateur des permissions supplémentaires sur des fichiers ou des ressources qui sont associées à ces groupes (répertoire partagé, ressources communes, etc.). Il peut s'agir d'un groupe personnalisé que vous créez et auquel vous ajoutez votre utilisateur.

Un utilisateur peut appartenir à plusieurs groupes secondaires. Ces groupes sont définis dans le fichier "/etc/group". Lorsqu'un utilisateur accède à un fichier ou un répertoire, Linux vérifie donc ses permissions en tenant compte des groupes secondaires pour déterminer si l'accès est autorisé ou non.

IV. Comment créer un groupe sous Linux ?

A. Créer un groupe standard

La création d'un groupe se fait à l'aide de la commande groupadd, suivie du nom du groupe que vous souhaitez créer. Voici un exemple basique pour créer le groupe nommé "admins" :

sudo groupadd admins

Cette commande ajoute un groupe avec un GID attribué automatiquement, selon le principe d'incrémentation évoqué précédemment. Pour spécifier un GID manuellement, utilisez l'option "-g" :

sudo groupadd -g 1010 admins

La commande ci-dessous va créer un groupe nommé "admins" avec le GID "1010". S'il est déjà pris par un autre groupe, une erreur sera retournée. Dans tous les cas, dès qu'un groupe est créé, il est ajouté au fichier /etc/group.

B. Créer un groupe système

Un groupe créé avec l'option "-r" via la commande groupadd est un groupe système, tandis qu'un groupe créé sans cette option est un groupe standard. Précédemment, nous avons donc créé un groupe standard. Mais, alors, quelles sont les différences entre ces deux types de groupe ?

  • Les groupes système sont destinés à être utilisés par des services ou des démons du système. Par exemple, un service comme ssh ou cron peut avoir un groupe associé.
  • Les groupes standard sont destinés à être utilisés pour regrouper les utilisateurs ou gérer leurs permissions (sur un répertoire, par exemple)

Il y a également une différence notable au niveau de la plage des GID attribués. Retenez que :

  • Pour les groupes système, les GID attribués automatiquement se trouvent dans une plage réservée aux groupes système. Sur la plupart des distributions Linux, dont Ubuntu et Debian, cette plage est comprise entre 1 et 999. Tout en sachant que les premiers GID sont déjà réservés.
  • Pour les groupes standard, les GID attribués automatiquement se trouvent dans une plage, elle est aussi réservée. Généralement, à partir de 1000.

Ces plages de GID peuvent varier en fonction de la configuration du fichier "/etc/login.defs". Si vous consultez ce fichier, vous verrez que le contenu fait écho aux explications de cet article :

#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN			 1000
GID_MAX			60000
# System accounts
#SYS_GID_MIN		  100
#SYS_GID_MAX		  999

Terminons par un exemple de création d'un groupe système nommé "sauvegarde" :

sudo groupadd -r sauvegarde

V. Gérer les groupes sous Linux : les commandes à connaître

A. La commande usermod

Sous Linux, la commande usermod est utilisée pour modifier les attributs d'un utilisateur. Parmi les actions qu'elle peut accomplir, il y en a une qui nous intéresse particulièrement : l'ajout d'un utilisateur à un groupe.

La commande ci-dessous va ajouter l'utilisateur "flo" au groupe "admins". L'option "-aG" suivie du nom du groupe puis du nom de l'utilisateur sert à effectuer cette action, sans modifier les autres appartenances. Pour être plus précis, l'option "-a" signifie "--append" et l'option "-G" signifie "--groups".

sudo usermod -aG admins flo

Comment vérifier que l'utilisateur a bien été ajouté à ce groupe ? C'est ce que nous verrons dans la prochaine partie de cet article.

B. La commande groups

La commande groups permet de consulter les groupes auxquels appartient un utilisateur. Sans argument, elle affiche les groupes de l'utilisateur courant (avec lequel vous êtes connecté) :

groups

Pour connaître les groupes d'un utilisateur particulier, spécifiez son nom :

groups flo

Exemple de résultat :

flo : flo adm cdrom sudo dip plugdev users lpadmin admins

L'utilisateur est bien membre du groupe "admins" puisqu'il est retourné dans la liste !

C. La commande groupdel

Pour supprimer un groupe, utilisez la commande groupdel. La commande suivante retire le groupe "admins" du fichier "/etc/group". Notez que les utilisateurs du groupe ne perdront pas leurs comptes, mais ils ne feront plus partie de ce groupe.

sudo groupdel admins

D. La commande groupmod

La commande groupmod permet de modifier les attributs d'un groupe. Par exemple, pour renommer un groupe. L'exemple ci-dessous permet de renommer le groupe "admins" en "administrateurs" (attention à l'ordre des valeurs).

sudo groupmod -n administrateurs admins

Pour changer le GID d'un groupe, utilisez l'option "-g", comme ici pour associer le GID 2000 à notre groupe :

sudo groupmod -g 2000 administrateurs

E. La commande chgrp

Terminons par évoquer la commande chgrp. Sous Linux, elle est utilisée pour changer le groupe propriétaire d'un fichier ou d'un répertoire. C'est en quelque sorte l'équivalent de la commande chown, mais uniquement pour le groupe. Par exemple :

sudo chgrp administrateurs credentials.txt

L'image ci-dessous illustre le groupe présent sur un fichier avant et après l'exécution de la commande chgrp.

Il est tout à fait possible d'appliquer le changement de manière récursive sur un répertoire :

sudo chgrp -R administrateurs /chemin/vers/repertoire

VI. Conclusion

En tant qu'administrateur système ou simple utilisateur de Linux, il est important d'être capable de gérer les groupes sous Linux, notamment via les commandes évoquées dans cet article. La gestion des groupes est également liée à la gestion des permissions sous Linux. À ce sujet, vous pouvez lire cet article :

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

1 commentaire sur “La gestion des groupes sous Linux : commandes et exemples pratiques

  • Ce serait bien d’ajouter la commande permettant d’ajouter un utilisateur au groupe. Sinon, pas la peine de gérer des groupes !

    Merci pour ton info

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.