Comment ajouter, modifier et supprimer un utilisateur sous Linux ?



La gestion des comptes utilisateurs est une fonction fondamentale pour tout système d’exploitation, une tâche quotidienne pour un administrateur système.

Dans un environnement Linux, cette gestion implique principalement la création de nouveaux comptes, la modification des comptes existants (comme le changement du répertoire personnel ou du shell par défaut), le blocage/déblocage de comptes et la suppression de comptes inutiles.

Avant d’explorer les commandes et les processus permettant d’effectuer ces actions, il est utile de comprendre comment les comptes utilisateurs sont classifiés sous Linux. Il est important de noter que, sauf indication contraire, les commandes présentées ici fonctionneront sur la plupart des distributions Linux courantes.

Catégories d’Utilisateurs

Utilisateur Racine

L’utilisateur racine, ou « root », est l’administrateur du système. Il possède tous les droits et peut effectuer n’importe quelle opération. Généralement, seul l’utilisateur root peut installer, désinstaller ou mettre à jour les applications et les bibliothèques système. Il s’agit du seul compte avec des privilèges globaux sur le système.

Par conséquent, l’utilisateur root est l’utilisateur le plus puissant au sein du système.

Utilisateurs Spéciaux

Ces utilisateurs n’ont pas la possibilité de se connecter directement au système et ne possèdent pas les privilèges de l’utilisateur root. Ils sont conçus pour des rôles spécifiques en fonction des besoins de chaque application.

Ces comptes sont automatiquement créés lors de l’installation de différentes applications. Des exemples incluent ‘bin’, ‘sync’, ‘lp’, ‘mail’, ‘operator’ et ‘squid’.

Utilisateurs Standard

Les utilisateurs standard n’ont des droits que dans leur répertoire de travail, souvent leur répertoire personnel. Ils ne peuvent pas gérer le système ni installer des logiciels sans privilèges supplémentaires, généralement obtenus via ‘sudo’.

Créer un Utilisateur

Debian/Ubuntu

Sur les distributions basées sur Debian ou Ubuntu, il existe plusieurs méthodes pour créer de nouveaux utilisateurs via la ligne de commande. La première est ‘adduser’, un script Perl qui utilise en réalité la commande ‘useradd’ en arrière-plan. Nous examinerons l’utilisation de cette dernière plus tard.

Puisque la création d’un utilisateur nécessite des privilèges administratifs, il faut utiliser ‘sudo’ suivi du nom d’utilisateur. D’autres informations peuvent être fournies lors de l’invite, mais seul le nom d’utilisateur et le mot de passe sont obligatoires. On peut vérifier la création réussie de l’utilisateur avec la commande ‘id’.

$ sudo adduser johndoe
Adding user `johndoe' ...
Adding new group `johndoe' (1003) ...
Adding new user `johndoe' (1003) with group `johndoe' ...
Creating home directory `/home/johndoe' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for johndoe
Enter the new value, or press ENTER for the default
        Full Name []: John Doe
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n] Y
$
$ id johndoe
uid=1003(johndoe) gid=1003(johndoe) groups=1003(johndoe)
$

CentOS/RHEL/Fedora (et Debian/Ubuntu)

La commande ‘useradd’ est utilisable sur les distributions basées sur RHEL, et fonctionne aussi sur Ubuntu/Debian. La syntaxe la plus simple (sans options supplémentaires) pour créer un utilisateur est :

$ sudo useradd <nom_utilisateur>

Exemple :

$ sudo useradd janedoe

La commande ‘useradd’ supporte plusieurs options comme l’identifiant utilisateur (UID), l’identifiant du groupe (GID), le shell par défaut et le répertoire personnel. Un exemple est présenté ci-dessous :

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

Vous pouvez vérifier la création de l’utilisateur avec la commande ‘id’ :

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

Modifier un Utilisateur

Il est souvent nécessaire de modifier certaines propriétés des comptes existants en fonction de besoins organisationnels, de demandes d’utilisateurs ou de migrations de système. Bien que la plupart de ces changements soient simples, il est crucial de comprendre l’impact sur l’environnement de l’utilisateur et l’accès aux fichiers.

Shell par Défaut

Le shell par défaut est l’interface CLI qui démarre quand un utilisateur lance une session, que ce soit localement ou via SSH. Bien que Bash soit souvent le shell par défaut, cela peut varier. Pour changer le shell par défaut, utilisez :

$ sudo usermod -s <shell> <nom_utilisateur>

Exemple :

$ 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 on le voit, le shell de l’utilisateur ‘janedoe’ a été changé de ‘/bin/sh’ à ‘/bin/bash’.

Répertoire Personnel

Comme le shell, le répertoire personnel d’un utilisateur peut être changé avec la commande :

$ sudo usermod -d <nouveau_chemin> <nom_utilisateur>

Dans l’exemple suivant, le répertoire personnel de ‘janedoe’ a été déplacé à ‘/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 changer le répertoire, assurez-vous que le nouveau répertoire a le propriétaire et les permissions appropriées. Sinon, l’utilisateur peut avoir des difficultés pour se connecter ou travailler dans ce nouveau répertoire.

Identifiant Utilisateur

L’identifiant d’utilisateur (UID) peut aussi être modifié avec la commande :

$ sudo usermod -u <nouvel_uid> <nom_utilisateur>

Exemple :

$ 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
$

Modifier l’UID affecte la façon dont le système de fichiers gère la propriété et les autorisations. Assurez-vous que les fichiers, notamment le répertoire personnel, appartiennent au nouvel UID, sinon l’utilisateur pourrait rencontrer des problèmes d’accès.

Groupe par Défaut

Le groupe par défaut est généralement le groupe créé en même temps que l’utilisateur. Linux permet de modifier le groupe par défaut avec la commande ‘usermod’. La syntaxe est la suivante :

$ sudo usermod -g <nouveau_gid_ou_nom_groupe> <nom_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
$

Il est crucial de s’assurer que le nouvel identifiant de groupe soit appliqué au répertoire de l’utilisateur, son contenu et tous les autres fichiers et répertoires concernés afin de migrer correctement ses permissions.

Ajouter ou Supprimer des Groupes Secondaires

En plus du groupe par défaut, un utilisateur Linux peut appartenir à des groupes secondaires. On peut ajouter ou supprimer ces groupes avec la commande ‘usermod’.

$ sudo usermod -a -G <identifiant_ou_nom_groupe> <nom_utilisateur>

Exemple:

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

Pour retirer un utilisateur d’un groupe secondaire, on peut utiliser ‘gpasswd’ comme suit :

$ sudo gpasswd -d <nom_utilisateur> <nom_groupe>

Exemple:

$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe),1001(docker)
$ sudo gpasswd -d janedoe docker
Removing user janedoe from group docker
$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe)
$

Commentaire GECOS

Le champ GECOS dans ‘/etc/passwd’ permet d’ajouter des informations complémentaires sur l’utilisateur. On peut modifier ces informations de la manière suivante :

$ sudo usermod -c <commentaire> <nom_utilisateur>

Exemple :

$ 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
$

Si votre commentaire contient des espaces, il est préférable de le placer entre guillemets, comme dans l’exemple.

Nom d’Utilisateur

Le nom de connexion peut être modifié avec ‘usermod’ et l’option ‘-l’ :

$ sudo usermod -l <nouveau_nom_utilisateur> <ancien_nom_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. Même dans des commandes comme ‘id’, le nouveau nom d’utilisateur doit être utilisé.

Supprimer un Utilisateur

Un utilisateur peut être supprimé du système avec la commande ‘userdel’ :

$ sudo userdel <nom_utilisateur>

Exemple :

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

Pour supprimer également le répertoire personnel et les courriels, ajoutez l’option ‘-r’.

$ sudo userdel -r <nom_utilisateur>

Spécifiquement sur Ubuntu, on peut aussi utiliser la commande ‘deluser’ pour supprimer un utilisateur :

$ sudo deluser <nom_utilisateur>

Et pour supprimer le répertoire personnel et les courriels :

$ sudo deluser --remove-home <nom_utilisateur>

Pour plus de détails et d’options, consultez les pages de manuel de ces commandes :

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

Conclusion

Cet article a détaillé différents aspects de la gestion des utilisateurs dans un environnement Linux. Nous avons abordé les types d’utilisateurs, comment les ajouter et les supprimer, ainsi que différentes options pour modifier les paramètres d’un compte existant. Bien que toutes les possibilités ne soient pas couvertes, nous avons examiné de nombreuses opérations de routine qu’un administrateur système rencontrera au quotidien.

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