La gestion des groupes sous Linux : commandes et exemples pratiques

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.


Voici un aperçu du fichier :

Son contenu suit la syntaxe suivante :


  • 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.).


Voici un autre exemple de ligne que vous pourriez rencontrer :


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” :


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” :


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” :


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 :


Terminons par un exemple de création d’un groupe système nommé “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“.


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é) :


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


Exemple de résultat :


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.


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).


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



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 :


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 :


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 :

SOURCE