La gestion des utilisateurs dans tout système d’exploitation est l’une des tâches routinières de base d’un administrateur système.

Pour un système d’exploitation basé sur Linux, il s’agit généralement de créer des comptes d’utilisateurs, de modifier les comptes existants en changeant leur répertoire personnel, leur shell par défaut, en verrouillant/déverrouillant un ou plusieurs comptes et en supprimant des comptes d’utilisateurs.

Avant d’étudier les commandes et les processus permettant d’effectuer ces tâches, examinons brièvement la manière dont les comptes d’utilisateurs peuvent être classés sous Linux. Notez également que, sauf indication contraire, les commandes données fonctionneront dans la plupart des distributions Linux courantes.

Types d’utilisateurs

Utilisateur racine

L’utilisateur root est l’administrateur du système d’exploitation et dispose de toutes les autorisations nécessaires pour effectuer des opérations. En général, seul l’utilisateur root peut installer/désinstaller ou mettre à jour les programmes et bibliothèques de base du système. Il s’agit du seul compte d’utilisateur disposant de privilèges sur l’ensemble du système.

L’utilisateur root est donc l’utilisateur le plus puissant du système.

Utilisateur spécial

Il s’agit des utilisateurs qui n’ont pas d’identifiant. Ils ne disposent pas de tous les privilèges de l’utilisateur root. En fonction du compte, ils assument différents rôles spécialisés.

Ceux-ci sont créés automatiquement lors de l’installation d’une application. bin, sync, lp, mail, operator, squid sont quelques exemples d’utilisateurs spéciaux.

Utilisateurs communs

Les utilisateurs communs ne disposent de tous les privilèges que dans leur répertoire de travail, généralement leur répertoire personnel. Ils n’ont pas les privilèges nécessaires pour gérer le système ou installer le logiciel. Ils ne peuvent pas effectuer ces tâches sans disposer de privilèges spéciaux via sudo.

Ajout d’un utilisateur

Debian/Ubuntu

Sur un système basé sur Debian ou Ubuntu, il existe plusieurs options pour ajouter des utilisateurs à partir de l’interface de gestion. La première commande est adduser, qui est un script Perl et utilise la commande useradd dans le backend dont nous verrons l’utilisation plus tard.

Comme l’ajout d’un utilisateur est une tâche privilégiée, vous devez utiliser sudo comme préfixe et nom d'utilisateur comme argument. D’autres détails peuvent être spécifiés à l’invite. À l’exception du nom d’utilisateur et du mot de passe, les autres détails sont facultatifs. Nous pouvons vérifier que l’utilisateur a été créé en utilisant la commande id.

sudo adduser johndoe
Ajout de l'utilisateur `johndoe' ...
Ajout d'un nouveau groupe `johndoe' (1003) ...
Ajout d'un nouvel utilisateur `johndoe' (1003) avec le groupe `johndoe' ...
Création du répertoire personnel `/home/johndoe' ...
Copie des fichiers de `/etc/skel' ...
Nouveau mot de passe :
Retapez le nouveau mot de passe :
passwd : password updated successfully
Modification des informations de l'utilisateur pour johndoe
Saisissez la nouvelle valeur ou appuyez sur ENTRÉE pour la valeur par défaut
        Nom complet [] : John Doe
        Numéro de chambre [] :
        Téléphone professionnel [] :
        Téléphone à domicile [] :
        Autre [] :
Les informations sont-elles correctes ? [O/n] O
$
$ id johndoe
uid=1003(johndoe) gid=1003(johndoe) groups=1003(johndoe)
$

CentOS/RHEL/Fedora (y compris Debian/Ubuntu)

La commande suivante, useradd, fonctionnera dans toutes les distributions de systèmes d’exploitation basées sur RHEL, ainsi que sur les hôtes Ubuntu/Debian. La syntaxe la plus simple (sans options supplémentaires) pour créer un nouvel utilisateur est la suivante :

$ sudo useradd 

Exemple :

$ sudo useradd janedoe

La commande useradd prend en charge de nombreuses options qui peuvent être spécifiées lors de la création de l’utilisateur, les plus courantes étant l’identifiant de l’utilisateur (UID), l’identifiant du groupe (GID), l’interpréteur de commandes par défaut et le répertoire d’origine, etc. Un exemple est donné ci-dessous :

sudo useradd -s /bin/sh -d /data/newhome -c "Jane Doe" -u 1005 janedoe

Vous pouvez vérifier l’utilisateur nouvellement créé à l’aide de la commande id:

$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe)
$

Modification de l’utilisateur

Il est souvent nécessaire de modifier certaines propriétés des utilisateurs existants en fonction des besoins de l’organisation, des demandes des utilisateurs ou des migrations du système. La plupart de ces propriétés sont faciles à modifier, mais il faut s’assurer de l’impact sur l’environnement de l’utilisateur et sur l’accès aux fichiers qu’il possède ou auxquels il accède.

Shell par défaut

L’interpréteur de commandes par défaut est l’interpréteur de commandes créé lorsqu’un utilisateur lance une nouvelle session d’interpréteur de commandes, soit localement, soit via SSH. La plupart des systèmes modernes disposent d’un Bash utilisateur par défaut, bien qu’il puisse varier en fonction de la distribution Linux ou de l’environnement de l’utilisateur. Pour modifier l’interpréteur de commandes par défaut d’un utilisateur, utilisez :

$ sudo usermod -s  

Exemple : $ getent passwd janed

$ getent passwd janedoe
janedoe:x:1005:1005::/data/newhome:/bin/sh
$ sudo usermod -s /bin/bash janedoe
$ getent passwd janedoe
janedoe:x:1005:1005::/data/newhome:/bin/bash
$

Comme vous pouvez le voir dans la sortie ci-dessus, le shell a été modifié de /bin/sh à /bin/bash pour l’utilisateur janedoe.

Répertoire personnel

Tout comme l’interpréteur de commandes par défaut, le répertoire personnel d’un utilisateur peut être modifié en utilisant la commande suivante :

sudo usermod -d <nouveau_chemin_du_répertoire> <nom_d'utilisateur>.

Dans l’exemple ci-dessous, le répertoire personnel de l’utilisateur janedoe a été modifié en /data/janedoe:

$ getent passwd janedoe
janedoe:x:1005:1005::/data/newhome:/bin/bash
$ sudo usermod -d /data/janedoe janedoe
$ getent passwd janedoe
janedoe:x:1005:1005::/data/janedoe:/bin/bash
$

Avant de procéder au changement, assurez-vous que le nouveau répertoire dispose des droits de propriété et des autorisations nécessaires. Dans le cas contraire, l’utilisateur risque de rencontrer des problèmes lors de la connexion ou du travail dans le nouveau répertoire personnel.

ID de l’utilisateur

Vous pouvez modifier l’identifiant d’un utilisateur existant en utilisant la commande suivante

sudo usermod -u  

Exemple : $ getent passwd janedoe

$ getent passwd janedoe
janedoe:x:1005:1005::/data/janedoe:/bin/bash
$ sudo usermod -u 1010 janedoe
$ getent passwd janedoe
janedoe:x:1010:1005::/data/janedoe:/bin/bash
$

Une fois encore, la modification de l’UID change la façon dont le système de fichiers Linux attribue la propriété et l’autorisation à un fichier ou à un répertoire. Assurez-vous que le répertoire personnel de l’utilisateur et son contenu, ainsi que tous les autres fichiers du système appartenant à l’origine à l’utilisateur (avec l’ancien UID), sont modifiés pour être mappés avec l’UID. Si vous ne le faites pas, vous risquez de rencontrer des problèmes lors de la session CLI et de l’accès aux fichiers par l’utilisateur.

Groupe par défaut

Le groupe par défaut est généralement l’ID de groupe par défaut de l’utilisateur, qui est créé lors de la création de l’utilisateur, à moins qu’un autre GID ne soit spécifié. Linux vous permet de modifier le groupe par défaut d’un utilisateur à l’aide de la commande usermod. Voici la syntaxe à utiliser :

sudo usermod -g  <nom_d'utilisateur>.

Voici un exemple :

$ getent passwd janedoe
janedoe:x:1010:1005::/data/janedoe:/bin/bash
$ sudo usermod -g 1001 janedoe
$ getent passwd janedoe
janedoe:x:1010:1001::/data/janedoe:/bin/bash
$

Une fois encore, assurez-vous que le nouvel identifiant de groupe est défini dans le répertoire personnel de l’utilisateur, dans son contenu et dans tous les autres fichiers ou répertoires applicables afin de migrer correctement leurs droits de propriété.

Ajout/suppression de groupes

Outre le groupe par défaut, un utilisateur sous Linux peut faire partie de groupes secondaires. Il est toujours possible d’ajouter ou de supprimer des groupes supplémentaires auxquels un utilisateur appartient à l’aide de la commande usermod.

sudo usermod -a -G  

Exemple : $ id janedoe

$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe)
$ sudo usermod -a -G docker janedoe
$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe),1001(docker)
$

De même, pour supprimer un utilisateur de l’un des groupes secondaires, utilisez la commande gpasswd comme indiqué ci-dessous :

$ sudo gpasswd -d  

Exemple : $ sudo gpasswd -d

$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe),1001(docker)
sudo gpasswd -d janedoe docker
Suppression de l'utilisateur janedoe du groupe docker
$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe)
$

Commentaire GECOS

Le champ GECOS dans /etc/passwd contient des informations sur l’utilisateur ou un commentaire. Nous pouvons modifier ces informations pour un utilisateur existant en procédant comme suit :

sudo usermod -c  

Exemple : $ getent passwd Janed

$ getent passwd janedoe
janedoe:x:1005:1005::/data/janedoe:/bin/bash
$ sudo usermod -c "Jane Doe - System Admin" janedoe
$ getent passwd janedoe
janedoe:x:1005:1005:Jane Doe - System Admin:/data/janedoe:/bin/bash
$

Veuillez noter que si votre commentaire ou les détails de l’utilisateur contiennent des espaces, mettez ce champ entre guillemets comme dans l’exemple ci-dessus.

Nom d’utilisateur

Le nom de connexion de l’utilisateur peut également être modifié à l’aide de la commande usermod en utilisant le drapeau -l:

$ sudo usermod -l <nouveau_nom_d'utilisateur> <ancien_nom_d'utilisateur>

Exemple :

$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe)
$ sudo usermod -l jane_doe janedoe
$ id jane_doe
uid=1005(jane_doe) gid=1005(janedoe) groups=1005(janedoe)
$

N’oubliez pas de mettre à jour les références de l’utilisateur en fonction du nouveau nom lorsqu’il est utilisé. Même dans des commandes comme id, le nouveau nom d’utilisateur doit être spécifié.

Suppression d’un utilisateur

Un utilisateur peut être supprimé de Linux à l’aide de la commande userdel.

sudo userdel 

Exemple :

$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe)
$ sudo userdel janedoe
$ id janedoe
id : 'janedoe' : no such user
$

Pour supprimer un utilisateur ainsi que son répertoire personnel et son répertoire de courrier, ajoutez le drapeau -r.

sudo userdel -r  $ sudo userdel -r 

Pour les systèmes basés sur Ubuntu, vous pouvez également utiliser la commande deluser pour supprimer un utilisateur :

$ sudo deluser <nomd'utilisateur>

De même, pour supprimer le répertoire personnel et le spool de courrier, utilisez la commande sudo deluser :

$ sudo deluser --remove-home 

Pour des informations détaillées et d’autres options prises en charge, reportez-vous à la page principale des différentes commandes en utilisant : $ man adduser

$ man adduser
$ man useradd
$ man usermod
$ man deluser
$ man userdel

Conclusion

Cet article a montré divers aspects de la gestion des utilisateurs dans un système Linux. Il explique notamment les différentes catégories d’utilisateurs et la manière de les ajouter et de les supprimer. Il couvre également les différentes options qui permettent de modifier les paramètres d’un utilisateur existant. Bien qu’il ne couvre pas toutes les possibilités offertes par les différentes commandes, il traite d’un grand nombre de tâches d’administration courantes qu’un administrateur système rencontrera dans son travail quotidien.

Vous pouvez également être intéressé par la lecture de ce document : Comment supprimer des fichiers et des répertoires sous Linux ?