Gestion des groupes sous Linux
Les groupes sont une structure organisationnelle qui fait partie du contrôle d'accès discrétionnaire (DAC) de Linux. Le DAC est le contrôle de sécurité traditionnel de Linux, où l'accès à un fichier, ou à tout autre objet, est basé sur l'identité de l'utilisateur et son appartenance actuelle à un groupe. Lorsqu'un compte utilisateur est créé, il est rattaché à un groupe particulier, appelé groupe par défaut du compte. Bien qu'un compte d'utilisateur puisse avoir de nombreuses appartenances à des groupes, son processus ne peut avoir qu'un seul groupe courant désigné à la fois. Le groupe par défaut est le groupe actuel d'un compte, lorsque l'utilisateur se connecte pour la première fois au système.
Les groupes sont identifiés par leur nom ainsi que par leur numéro d'identification de groupe (GID). Ceci est similaire à la façon dont les utilisateurs sont identifiés par des UIDs, dans la mesure où le GID est utilisé par Linux pour identifier un groupe particulier, alors que les humains utilisent des noms de groupes.
Si un groupe par défaut n'est pas désigné lors de la création d'un compte d'utilisateur, un nouveau groupe est alors créé. Ce nouveau groupe porte le même nom que le nom du compte d'utilisateur, et un nouveau GID. Pour connaître le groupe par défaut d'un compte, utilisez la commande getent pour afficher l'enregistrement /etc/passwd pour ce compte. Le quatrième champ de l'enregistrement est le GID du groupe par défaut du compte.
devinfo@ubuntu:~$ getent passwd mostafa mostafa:x:1001:50::/home/mostafa:/bin/bash devinfo@ubuntu:~$ sudo groups mostafa mostafa : staff devinfo@ubuntu:~$ getent group staff staff:x:50: devinfo@ubuntu:~$ grep 50 /etc/group staff:x:50: devinfo@ubuntu:~$
La première commande montre que le groupe du compte mostafa a un GID de 50, mais elle ne fournit pas de nom de groupe. La commande groups affiche le nom du groupe, qui est staff. La troisième commande, une autre commande getent, montre que le groupe 'staff' correspond bien au 50 GID. La quatrième commande confirme cette information.
Ajouter des groups
Pour ajouter un utilisateur à un nouveau groupe ou modifier le groupe par défaut du compte, le groupe doit préexister. Cette tâche est accomplie via l'utilitaire groupadd et les privilèges de super utilisateur.
sudo] Mot de passe de devinfo : devinfo@ubuntu:~$ getent group ecole ecole:x:1001:
L'utilitaire getent affiche le nouvel enregistrement de groupe dans le fichier de groupe. Les champs du fichier /etc/group sont délimités par un deux-points ( :) et sont les suivants :
- Nom de groupe
- Mot de passe de groupe (Un x indique que, si un mot de passe de groupe existe, il est stocké dans le fichier /etc/gshadow.)
- GID
- Membres du groupe (comptes d'utilisateurs appartenant au groupe, séparés par une virgule)
Une fois qu'un nouveau groupe est créé, vous pouvez ajouter des membres individuels au groupe avec la commande usermod.
devinfo@ubuntu:~$ sudo groups mostafa mostafa : staff devinfo@ubuntu:~$ sudo usermod -aG ecole mostafa devinfo@ubuntu:~$ sudo groups mostafa mostafa : staff ecole devinfo@ubuntu:~$ getent group ecole ecole:x:1001:mostafa devinfo@ubuntu:~$
Remarquez que la commande usermod utilise deux options, -aG. L'option -G ajoute le compte mostafa en tant que membre du groupe ecole, mais l'option -a est importante car elle préserve toute appartenance antérieure du compte mostafa au groupe. Après l'ajout du compte mostafa en tant que membre du groupe ecole, vous pouvez voir dans les deux derniers résultats de la commande que l'enregistrement du fichier /etc/group pour ecole a été mis à jour.
Pour qu'un utilisateur puisse accéder à un groupe dont il est membre alors que ce n'est pas son groupe par défaut ou courant, il doit utiliser une commande spéciale, newgrp. Affichez votre groupe actuel à l'aide de la commande id -gn puis changez votre groupe actuel avec la commande newgrp.
devinfo@ubuntu:~$ whoami devinfo devinfo@ubuntu:~$ id -gn devinfo devinfo@ubuntu:~$ newgrp ecole devinfo@ubuntu:~$ id -gn ecole devinfo@ubuntu:~$ groups ecole adm cdrom sudo dip plugdev lpadmin lxd sambashare devinfo devinfo@ubuntu:~$
Remarquez qu'après l'utilisation de la commande newgrp, la commande id -gn montre que ecole est le groupe actuel pour le compte devinfo. Vous pouvez également voir tous les membres de votre groupe ainsi que le groupe actuel grâce à la commande groups. Votre groupe actuel est le premier de la liste affichée.
Pour qu'un utilisateur revienne à son groupe par défaut, il peut utiliser à nouveau newgrp suivi du nom du groupe. Alternativement, la commande exit fera également revenir un utilisateur dans le groupe par défaut, car newgrp crée un nouveau processus utilisateur lorsqu'il est utilisé.
Suppression de groupes
Pour supprimer un groupe, utilisez l'utilitaire groupdel.
ubuntu:~$ sudo groupdel ecole devinfo@ubuntu:~$ getent group ecole devinfo@ubuntu:~$ sudo groups mostafa mostafa : staff devinfo@ubuntu:~$
Notez qu'après la suppression du groupe ecole, la commande getent indique que l'enregistrement du groupe ecole a été supprimé du fichier /etc/group. Ce qui est vraiment bien, c'est que tout membre de ce groupe supprimé a également mis à jour les informations de son groupe, comme indiqué dans la troisième commande.