La gestion des groupes sous Linux : commandes et exemples pratiques
Sommaire
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 :
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