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

Pour un système d'exploitation basé sur Linux, cela implique généralement la création de comptes d'utilisateurs, la modification de comptes existants, comme le changement de leur répertoire de base, le shell par défaut, le verrouillage/déverrouillage d'un ou plusieurs comptes et la suppression de comptes d'utilisateurs.

Avant d'étudier les commandes et les processus permettant d'effectuer ces tâches, examinons brièvement comment 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.

User Types

Utilisateur racine

Le root l'utilisateur est l'administrateur du système d'exploitation avec toutes les autorisations pour effectuer des opérations. Habituellement, seulement root peut installer/désinstaller ou mettre à jour les programmes et bibliothèques système de base. C'est le seul compte d'utilisateur avec des privilèges à l'échelle du système.

Ainsi, l'utilisateur root est l'utilisateur le plus puissant du système.

Utilisateur spécial

Ce sont les utilisateurs sans login. Ils n'ont pas tous les privilèges du root utilisateur. Selon les comptes, ils assument des rôles spécialisés différents.

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

Utilisateurs communs

Les utilisateurs communs ont des privilèges complets uniquement dans leur répertoire de travail, généralement leur répertoire personnel. Ils n'ont pas de privilèges pour gérer le système ou installer le logiciel. Ils ne peuvent pas effectuer ces tâches sans avoir des privilèges spéciaux via sudo.

Adding User

Debian / Ubuntu

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

Étant donné que l'ajout d'un utilisateur est une tâche privilégiée, vous devrez utiliser sudo comme préfixe et username comme argument. D'autres détails peuvent être spécifiés lorsque vous y êtes invité. À l'exception du nom d'utilisateur et du mot de passe, le reste des détails est facultatif. Nous pouvons vérifier que l'utilisateur a été créé en utilisant id commander.

$ 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 (y compris Debian/Ubuntu)

La prochaine commande, useradd fonctionnera sur les distributions de système d'exploitation basées sur RHEL ainsi que sur les hôtes Ubuntu/Debian. La syntaxe la plus simple (sans aucune option supplémentaire) pour créer un nouvel utilisateur est :

$ sudo useradd <username>

Mise en situation :

$ sudo useradd janedoe

Le useradd La commande prend en charge plusieurs options qui peuvent être spécifiées lors de la création de l'utilisateur, les plus courantes étant l'ID utilisateur (UID), l'ID de groupe (GID), le shell par défaut et le répertoire personnel, 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éé en utilisant id commander:

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

Modifying User

Il est souvent nécessaire de modifier certaines propriétés des utilisateurs existants en fonction des exigences de l'organisation, des demandes des utilisateurs ou des migrations du système. La plupart de ces propriétés sont faciles à modifier, bien que nous devions nous assurer de la manière dont cela affectera l'environnement de l'utilisateur et l'accès aux fichiers détenus ou accessibles par l'utilisateur.

Shell par défaut

Le shell par défaut est le shell CLI créé lorsqu'un utilisateur lance une nouvelle session CLI localement ou via SSH. La plupart des systèmes modernes ont un utilisateur par défaut Bash bien que cela puisse varier en fonction de la distribution Linux ou de l'environnement de l'utilisateur. Pour modifier le shell par défaut d'un utilisateur, utilisez :

$ sudo usermod -s <shell> <username>

Mise en situation :

$ 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

Comme le shell par défaut, le répertoire personnel d'un utilisateur peut être modifié vers un autre emplacement en utilisant :

$ sudo usermod -d <new_directory_path> <username>

Dans l'exemple ci-dessous, le répertoire personnel de l'utilisateur janedoe a été changé 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 d'effectuer le changement, assurez-vous que le nouveau répertoire dispose des droits de propriété et des autorisations appropriés. Sinon, l'utilisateur peut rencontrer des problèmes lors de la connexion ou du travail dans le nouveau répertoire de base.

ID utilisateur

Vous pouvez modifier l'ID utilisateur d'un utilisateur existant en utilisant :

$ sudo usermod -u <new_uid> <username>

Mise en situation :

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

Encore une fois, la modification de l'UID modifie la façon dont le système de fichiers Linux mappe la propriété et l'autorisation sur un fichier ou un répertoire. Assurez-vous que le répertoire de base de l'utilisateur et son contenu et tous les autres fichiers n'importe où dans le système, appartenant à l'origine à l'utilisateur (avec l'ancien UID), sont modifiés en UID mappé. Ne pas le faire peut entraîner des problèmes dans la session CLI et 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 en utilisant usermod commande aussi. Voici la syntaxe à utiliser :

$ sudo usermod -g <new_gid or group_name> <username>

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
$

Encore une fois, assurez-vous que le nouvel ID de groupe est défini sur le répertoire de base de l'utilisateur, le contenu et tous les autres fichiers ou répertoires applicables pour migrer correctement leurs autorisations de propriété.

Ajouter/supprimer des groupes

Outre le groupe par défaut, un utilisateur sous Linux peut faire partie de groupes secondaires. Nous pouvons toujours ajouter ou supprimer des groupes supplémentaires auxquels un utilisateur appartient en utilisant usermod commander.

$ sudo usermod -a -G <group_id or group_name> <username>

Mise en situation :

$ 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 gpasswd commande comme indiqué ci-dessous:

$ sudo gpasswd -d <username> <groupname>

Mise en situation :

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

domaine GECOS en /etc/passwd contient des informations ou des commentaires sur l'utilisateur. Nous pouvons modifier ces informations pour un utilisateur existant comme :

$ sudo usermod -c <comment> <username>

Mise en situation :

$ 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 vos informations d'utilisateur contiennent des espaces, placez ce champ entre guillemets comme dans l'exemple ci-dessus.

Nom de connexion

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

$ sudo usermod -l <new_username> <old_username>

Mise en situation :

$ 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 utilisateur selon le nouveau nom, où qu'elles soient utilisées. Même dans des commandes comme id, le nouveau nom d'utilisateur doit être spécifié.

Removing User

Un utilisateur peut être supprimé de Linux en utilisant userdel commander.

$ sudo userdel <username>

Mise en situation :

$ 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 avec son répertoire personnel et son spool de messagerie, ajoutez -r drapeau aussi.

$ sudo userdel -r <username>

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

$ sudo deluser <username>

De même, pour supprimer également le répertoire personnel et le spool de messagerie, utilisez :

$ sudo deluser --remove-home <username>

Pour des informations détaillées et d'autres options prises en charge, reportez-vous à la page principale des différentes commandes à l'aide de :

$ 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. Cela inclut une explication des différentes catégories d'utilisateurs et comment les ajouter et les supprimer. Il couvre également diverses options qui aident à modifier les paramètres d'un utilisateur existant. Bien qu'il ne couvre pas toutes les possibilités prises en charge par diverses commandes, il couvre de nombreuses tâches d'administration courantes qu'un administrateur système rencontrera dans son travail quotidien.

Vous pourriez également être intéressé à lire : Comment supprimer des fichiers et des répertoires sous Linux ?