Ce didacticiel se concentre sur l'administration des utilisateurs sur les hôtes Linux, la gestion des utilisateurs et des groupes.
En tant qu'administrateur système, vous manipulation des utilisateurs et des groupes tout le temps.
Vous devrez peut-être créer un nouveau compte utilisateur pour un nouveau membre dans votre équipe par exemple.
Il peut également vous être demandé de créer des comptes spécifiques pour des bases de données ou pour des outils spéciaux que vous installez sur votre hébergeur.
Si votre hébergeur grandit, vous pouvez également être tenté de créer des groupes afin de mieux comprendre les droits que vous accordez aux membres de votre système.
Par conséquent, avoir une compréhension parfaite de l'administration des utilisateurs est une compétence essentielle que les administrateurs expérimentés doivent maîtriser.
Dans le tutoriel d'aujourd'hui, nous examinons de très près l'administration des utilisateurs :comment créer des utilisateurs , supprimez-les mais aussi comment configurer une politique de mot de passe claire sur votre système .
Vous allez découvrir toutes les commandes associées à l'administration des utilisateurs ainsi que les fichiers spécifiques qu'il vous faudra regarder de près.
Prêt ?
Ce que vous allez apprendre
En lisant ce tutoriel jusqu'à la fin, vous allez en apprendre davantage sur les sujets suivants.
- Quels comptes utilisateur ? sont sous Linux et en quoi ils diffèrent les uns des autres ;
- Que sont les groupes ? sous Linux et quels sont les différents types de groupes ;
- Comment créer , supprimer et modifier utilisateurs existants sur un hôte Linux ;
- Quels sont les mots de passe et ombre les fichiers sur votre système et les informations qu'ils contiennent ;
- Comment vous pouvez configurer le vieillissement du mot de passe avec la commande chage ;
- Comment vous pouvez accorder aux utilisateurs des droits privilégiés via visudo et usermod;
Comme d'habitude, c'est un programme assez long, alors sans plus tarder, regardons quels sont les comptes d'utilisateurs sous Linux.
Bases de l'administration des utilisateurs sous Linux
Si vous utilisez votre système Linux, il fonctionne très probablement en tant que système multi-utilisateurs .
Cela signifie que plusieurs utilisateurs sont autorisés à se connecter au même hôte afin de partager des ressources ou d'effectuer différentes opérations sur le système.
Cependant, comme vous l'avez peut-être déjà remarqué, tous les comptes d'utilisateurs ne sont pas identiques.
Certains peuvent avoir plus d'autorisations que d'autres. D'un autre côté, certains peuvent être plus restreints que d'autres, ne pouvant même pas lancer un simple processus shell.
Types de comptes utilisateur
Sous Linux, vous aurez affaire à trois types de comptes utilisateurs différents :
- Compte racine :qui est par définition le compte utilisateur le plus puissant de votre système. L'utilisateur root peut effectuer n'importe quelle opération (comme changer les mots de passe par exemple), il peut tuer n'importe quel processus et il peut accéder à n'importe quel répertoire du système de fichiers.
- Comptes système :les comptes système sont des comptes utilisés par des processus ou des programmes sur votre hôte. Vous avez peut-être vu que des comptes spécifiques sont utilisés pour l'administration du courrier ou pour exécuter un simple serveur Apache. Ces comptes reçoivent souvent des autorisations restreintes et ne peuvent pas accéder à un shell interactif.
Il est recommandé de ne pas modifier ces comptes par vous-même.
- Comptes d'utilisateurs :les comptes d'utilisateurs sont des comptes utilisés par de vrais utilisateurs. Il peut s'agir de membres de votre équipe ou de comptes que vous avez créés afin qu'ils puissent récupérer certains fichiers sur l'hébergeur. Contrairement aux comptes système, il est fortement recommandé de modifier ces comptes afin de leur donner une configuration correcte.
Ces comptes reçoivent la plupart du temps des shells interactifs (comme bash ou sh) afin d'exécuter des commandes sur le système.
Remarque :sur certains hébergeurs, il peut être recommandé de verrouiller le compte root afin d'éviter tout problème de sécurité.
Identifiants des comptes d'utilisateurs
Sous Linux, les comptes sont identifiés par un ID utilisateur , également appelé UID .
Ceci est très proche du concept de PID pour les processus, les UID sont utilisés afin d'identifier de manière unique les utilisateurs sur un système.
De plus, ils sont souvent utilisés pour catégoriser les comptes d'utilisateurs sur un système Linux.
Comme nous l'avons déjà mentionné, les comptes d'utilisateurs sont divisés en trois catégories. Par conséquent, les UID sont également attribués aux utilisateurs en fonction de la catégorie à laquelle ils appartiennent.
Pour voir les informations liées à votre ID, exécutez la commande suivante
$ id
Comme vous pouvez le voir, mon propre UID personnel est 1000.
Mais pourquoi n'est-ce pas zéro ou un ?
Sous Linux, les ID utilisateur sont attribués selon la règle suivante :
- Le compte root reçoit l'UID 0 , ainsi que le GID 0 .
- Comptes système , celui créé par les programmes que vous utilisez sur votre système, se voit attribuer une plage personnalisée pouvant aller de 1 à 500 ou de 1 à 999. Sur les systèmes basés sur Debian, la plage des comptes système va de 1 à 999.
- Comptes d'utilisateurs reçoivent des UID supérieurs à 1000. C'est ce que vous avez réellement vu sur l'image ci-dessus.
Personnalisation des identifiants utilisateur
Dans des cas particuliers, vous pourriez être tenté de personnaliser la façon dont l'UID et le GID sont attribués sur un système Linux.
Parfois, les utilisateurs sont définis localement sur le système, mais ils peuvent également être définis dans un système d'administration des utilisateurs externe comme LDAP par exemple.
Par conséquent, si LDAP conserve l'UID entre 1 000 et 9 999, vous pouvez attribuer à l'utilisateur local un UID supérieur à 10 000 par défaut.
La personnalisation des identifiants des utilisateurs se fait dans un fichier nommé login.defs sur votre hébergeur (situé dans etc )
Pour voir les identifiants par défaut donnés sur votre hébergeur, jetez un œil au fichier login.defs et trouvez la section suivante.
$ nano /etc/login.defs
Groupes et types de groupe sous Linux
Par défaut, les utilisateurs de votre hébergeur se voient attribuer un ou plusieurs groupes.
Sous Linux, des groupes sont créés afin que les utilisateurs partagent le même ensemble d'autorisations ou les mêmes restrictions sur un hôte Linux.
Par défaut, lorsque vous créez un compte utilisateur, un groupe portant le même nom est créé avec celui-ci. Par conséquent, chaque utilisateur appartient à au moins un groupe.
Pour l'illustrer, exécutez la commande suivante sur votre système
$ groups <user>
Par défaut, les groupes sont divisés en deux catégories sous Linux :
- Groupe principal :un utilisateur peut avoir un (et un seul) groupe principal à la fois. Un groupe principal est le groupe attribué lorsque l'utilisateur crée un fichier ou un répertoire sur le système. Par conséquent, vous pouvez être tenté de modifier un groupe principal d'utilisateurs afin de modifier son groupe de création de fichiers par défaut.
- Groupes secondaires :les utilisateurs peuvent appartenir à de nombreux autres groupes. S'ils appartiennent à une équipe spécifique sur votre hébergeur, ils appartiendront à ce groupe (administrateurs par exemple). Comme deuxième exemple, les utilisateurs privilégiés peuvent appartenir au groupe sudo (sur Debian) ou au groupe wheel (sur les distributions basées sur Red Hat)
Les groupes reçoivent également des identifiants spécifiques afin de les différencier les uns des autres sur le système.
Ils sont appelés GID et peuvent également être modifiés en inspectant le fichier login.defs sur votre système de fichiers.
Maintenant que vous avez une meilleure compréhension de ce que sont les utilisateurs et les groupes sous Linux, voyons quelles commandes vous pouvez exécuter pour ajouter ou supprimer des utilisateurs sur votre système.
Commandes d'administration des utilisateurs sous Linux
Sur votre système, vous pouvez choisir d'ajouter, de supprimer ou de modifier des comptes locaux.
Avertissement :vous devrez disposer des privilèges sudo sur votre hôte afin d'exécuter ces commandes ou de vous connecter en tant que root.
Voici un guide pour les systèmes basés sur Debian et un autre pour les systèmes basés sur Red Hat.
Création de comptes utilisateur locaux
Pour créer des comptes d'utilisateurs locaux sous Linux, vous devez utiliser la commande useradd .
$ useradd <user>
Par défaut, à moins que vous ne modifiiez les fichiers de configuration, la commande créera un répertoire personnel pour votre utilisateur ainsi que des fichiers prédéfinis tels que .bashrc, .profile et .bash_logout.
Cependant, la commande useradd expose différentes options pour modifier la création de compte utilisateur :
- -d :pour le répertoire personnel. Par défaut, les comptes seront créés dans /home mais vous pouvez choisir d'avoir un chemin différent sur votre système de fichiers ;
- -e :date d'expiration. Utile lorsque vous créez des comptes pour des consultants externes qui doivent partir à une date précise ;
- -g :pour GID, cette option est définie pour avoir un GID personnalisé pour l'utilisateur lors de la création du compte ;
- -G :pour les groupes supplémentaires, cette option est définie pour que les groupes secondaires soient attribués à l'utilisateur par défaut ;
- -M :pour no-home, cette option est utilisée pour empêcher le système de créer un répertoire personnel pour l'utilisateur ;
- -r :afin de créer un compte système pour l'utilisateur ;
- -s :pour le shell, cette option permet de personnaliser le shell attribué par défaut à l'utilisateur (/bin/bash, /bin/nologin, /bin/false, /bin/sh etc...)
- -u :pour l'UID, de la même manière que l'option -g, elle est utilisée afin de personnaliser l'UID par défaut attribué à l'utilisateur.
Par exemple, vous pouvez créer un compte utilisateur standard sur le système.
$ useradd john
Vous pouvez ensuite consulter le répertoire personnel pour vérifier si une entrée a été créée pour l'utilisateur.
Comme vous pouvez le voir, aucun répertoire personnel n'a été créé par défaut pour l'utilisateur.
Pour résoudre ce problème, spécifions la bonne option et réessayons.
$ useradd -m bob
Maintenant que votre utilisateur est créé, vous allez devoir lui attribuer un mot de passe, sinon il ne sera pas accessible.
Modification d'un mot de passe utilisateur sous Linux
Pour modifier un mot de passe utilisateur sous Linux , vous devez utiliser le passwd avec des privilèges élevés.
$ sudo passwd <user>
Si nous prenons l'exemple du compte que nous avons créé précédemment, nous exécuterions la commande suivante.
$ sudo passwd bob
Maintenant que le mot de passe utilisateur est défini, vous pouvez vous connecter rapidement au compte utilisateur avec la commande su.
$ su - <user>
Comme vous pouvez le constater, le shell donné à l'utilisateur par défaut est assez particulier.
Ce n'est pas un shell bash normal, en fait, il a été affecté à un shell complètement différent appelé dash shell (/bin/sh).
Pourquoi ?
Par défaut, useradd utilise un ensemble d'options par défaut qui sont entièrement personnalisables sur votre hébergeur.
Modifier les valeurs par défaut d'useradd sous Linux
Afin de vérifier les différentes options par défaut de la commande useradd, exécutez la commande suivante
$ useradd -D
Vous pouvez également trouver le même contenu dans le /etc/default/useradd fichier sur votre système.
Comme vous pouvez le voir, le shell par défaut est défini sur /bin/sh par défaut.
C'est exactement pourquoi le nouvel utilisateur a défini ce shell par défaut.
Pour modifier les valeurs par défaut, vous ne devez pas directement le fichier par défaut sur votre système.
Si vous faites des erreurs dans le processus, vous risquez de ne plus pouvoir exécuter votre commande useradd.
Par exemple, pour changer le shell par défaut utilisé, il faudrait exécuter
$ useradd -Ds /bin/bash
Squelette du répertoire d'accueil de l'utilisateur
Si vous avez choisi de créer un répertoire personnel pour votre utilisateur, vous avez peut-être remarqué que certains fichiers y sont disponibles par défaut.
D'où viennent ces fichiers ?
Lors de la création d'un répertoire personnel, votre système Linux copiera les fichiers d'un répertoire appelé "skel ” sur votre système qui se trouve dans /etc .
Si vous deviez jeter un œil aux fichiers situés dans /etc/skel , vous auriez exactement les mêmes fichiers que dans un répertoire de base par défaut
$ ls -al /etc/skel
Comme vous l'avez probablement deviné, l'ajout de certains fichiers à ce répertoire skel ajoutera les fichiers aux répertoires personnels par défaut de votre hôte. Cela peut être particulièrement utile lorsque vous devez ajouter des fichiers README si vous avez des règles personnalisées sur votre serveur.
Supprimer un compte d'utilisateur local sous Linux
Pour supprimer un compte utilisateur sur votre système, vous devez utiliser la commande suivante
$ userdel <user>
Cependant, il existe une règle importante que vous devez connaître à propos de userdel.
La commande userdel ne supprimera pas le répertoire personnel ainsi que les fichiers appartenant à l'utilisateur sur le système par défaut.
Si des fichiers ou des répertoires sont toujours présents sur le système sans utilisateur, ils seront marqués avec l'UID et le GID précédents de l'utilisateur.
Pour supprimer un répertoire personnel avec l'utilisateur, vous devez utiliser l'option -r.
$ userdel -r <user>
Cela ne supprimera pas les fichiers situés en dehors du répertoire personnel.
Pour rechercher des fichiers situés en dehors du répertoire de base, vous devez exécuter la commande suivante.
$ find <path> -uid <uid>
Vous cherchez à trouver et localiser facilement des fichiers sur Linux, lisez le guide !
Modifier un compte utilisateur existant sous Linux
Dans certains cas, vous souhaiterez peut-être modifier un compte utilisateur existant sur votre système.
Pour modifier un utilisateur , vous devez exécuter la commande usermod
$ usermod <option> <user>
Avec usermod, vous avez de nombreuses options différentes :
- -c :pour commentaire, cette commande permet de modifier un commentaire associé à un utilisateur dans le fichier passwd;
- -d :répertoire personnel, utilisé pour modifier le répertoire personnel par défaut de l'utilisateur ;
- -g :utilisé pour modifier le groupe d'utilisateur principal ;
- -a :pour ajouter, ceci est utilisé pour attribuer des groupes secondaires à un utilisateur en l'ajoutant à la liste existante des groupes pour l'utilisateur
- -G :utilisé pour attribuer des groupes secondaires à un utilisateur (par exemple un groupe sudo ou wheel );
- -L :utilisé pour verrouiller le compte utilisateur ;
- -U :utilisé pour déverrouiller un compte utilisateur
Par exemple, si vous souhaitez ajouter un utilisateur au groupe sudo, vous exécuterez
$ sudo usermod -aG sudo <user>
Maintenant que vous avez une meilleure compréhension des commandes que vous pouvez exécuter pour ajouter ou supprimer des utilisateurs, voyons quelques fichiers importants liés à l'administration des utilisateurs.
Fichiers de mot de passe et shadow
Sous Linux, il existe deux fichiers principaux liés à l'administration des utilisateurs :le fichier /etc/passwd et le fichier /etc/shadow.
Comprendre le fichier passwd
Par défaut, le fichier passwd affiche une liste de tous les utilisateurs disponibles localement sur votre système Linux.
Pour avoir cette liste, exécutez la commande suivante
$ cat /etc/passwd
Comme vous pouvez le voir, le fichier passwd est un fichier séparé par deux-points ayant plusieurs entrées, une pour chaque utilisateur disponible sur votre système.
De gauche à droite, les colonnes affichent les informations suivantes :
- Nom d'utilisateur :le nom d'utilisateur réel de l'utilisateur sur le système ;
- Mot de passe :avoir une entrée "x" signifie simplement que le mot de passe est disponible dans le fichier shadow dans un format crypté ;
- UID :l'ID utilisateur unique que nous avons décrit précédemment ;
- GID :l'ID du groupe principal de l'utilisateur (qui peut différer si vous l'avez personnalisé) ;
- Commentaire :un commentaire descriptif qui peut être utile pour identifier l'utilisateur, ce champ est également appelé GECOS champ ;
- Répertoire d'accueil :si l'utilisateur s'est vu attribuer un répertoire personnel ou un champ personnalisé, c'est là que les informations sont stockées ;
- Shell par défaut :le shell attribué à l'utilisateur lors de sa création.
Si vous deviez créer un nouvel utilisateur avec la commande useradd, une nouvelle entrée serait automatiquement ajoutée à ce fichier.
D'autre part, le fichier shadow contient des informations plus sensibles sur votre système.
Comprendre le fichier fantôme
Pour avoir une liste du fichier shadow, assurez-vous que vous exécutez la commande en tant qu'utilisateur privilégié
$ sudo cat /etc/shadow
Par défaut, le fichier shadow présente les colonnes suivantes :
- Nom d'utilisateur :le nom d'utilisateur réel de l'utilisateur sur le système ;
- Mot de passe :c'est là que le mot de passe crypté sera stocké. Par défaut, vous pouvez trouver des informations sur le système de cryptage en inspectant les trois premiers caractères (dans ce cas, $6$ est un cryptage SHA-512) ;
- Dernière fois que le mot de passe a été modifié :nombre de jours depuis le 1er janvier 1970 jusqu'à la dernière modification du mot de passe. Dans ce cas, 18146 jours donne le 7 septembre 2019 ;
- Nombre minimum de jours entre les changements de mot de passe :c'est-à-dire le nombre de jours avant qu'un utilisateur soit autorisé à changer son mot de passe ;
- Nombre maximum de jours pour un mot de passe valide :la durée de validité maximale d'un mot de passe sur le système ;
- Période d'avertissement :cette option définit le nombre de jours avant l'expiration d'un mot de passe pour que l'utilisateur reçoive un message d'avertissement concernant son compte ;
- Période d'inactivité :lorsque votre mot de passe expire, il définit la période avant que le compte ne soit désactivé ;
- Date d'expiration :définit le nombre de jours depuis le 1er janvier 1980 avant que le compte ne soit désactivé.
Remarque :un "!" ou un "*" dans le mot de passe signifie que la connexion de l'utilisateur est désactivée sur le système, car vous avez probablement affaire à un compte système.
Maintenant que vous avez une meilleure compréhension du passwd et du fichier shadow, voyons comment vous pouvez gérer le vieillissement du mot de passe avec des commandes.
Gestion du vieillissement du mot de passe avec chage
Sous Linux, la façon de modifier tous les paramètres que nous avons vus précédemment est d'utiliser la commande chage.
$ chage <options> <user>
Où les options sont les suivantes :
- -d :pour le dernier jour, cette option définit le nombre de jours depuis que le mot de passe a été changé pour le compte utilisateur ;
- -E :pour expiration :fixe une date d'un certain nombre (depuis le 1er janvier 1970) à laquelle le compte utilisateur ne sera plus accessible ;
- -je :pour inactif, cette option définit le nombre de jours d'inactivité avant que le compte utilisateur ne soit désactivé sur le système ;
- -m :pour min jours, définit le nombre de jours avant deux changements de mot de passe consécutifs. Si vous définissez cette valeur sur zéro, cela signifie que l'utilisateur est autorisé à saisir son mot de passe à tout moment ;
- -M :pour max jours, cette option définit la validité maximale d'un mot de passe sur le système. C'est l'une des options que vous devez configurer avec soin si vous définissez une bonne politique de mot de passe sur vos hôtes. De plus, si vous calculez le dernier changement de mot de passe avec l'option max days, vous trouverez le jour où l'utilisateur doit changer son mot de passe ;
- -W :for warn days :définit le nombre de jours avant l'expiration du mot de passe pendant lesquels le compte utilisateur recevra un avertissement pour l'expiration du mot de passe.
Afin d'avoir une liste complète des politiques de mot de passe actives pour votre compte, vous devez exécuter la commande suivante
$ chage -l <user>
Comme vous pouvez le voir ici, je reçois toutes les entrées relatives aux options spécifiées auparavant.
Dans ce cas, j'ai changé mon mot de passe le 12 octobre 2019 et je ne serai plus jamais obligé de changer mon mot de passe. Cependant, ces options peuvent être facilement modifiées.
Forcer le changement de mot de passe
Afin de définir un changement de mot de passe immédiat pour un utilisateur sur l'hôte, vous devez exécuter la commande suivante
$ chage -d 0 <user>
Comme vous pouvez le voir ici, le mot de passe de l'utilisateur devra être changé lors de la prochaine connexion.
Essayez de vous connecter en tant qu'utilisateur afin de voir que vous êtes invité à modifier votre mot de passe.
$ su <user>
Lors de la modification de votre mot de passe, vous pourrez accéder à votre compte utilisateur comme auparavant.
Définir facilement une date d'expiration de compte
Comme décrit précédemment, vous pourrez peut-être modifier la date d'expiration du compte avec l'option -E.
Cependant, il peut être difficile de deviner la date dans vingt, trente ou quatre-vingts jours.
Afin de définir la date d'expiration d'un compte dans cinquante jours , tapez la commande suivante
$ date -d '+50days' +%F
À partir de là, vous pouvez facilement définir la date d'expiration de ce compte.
$ chage -E <date> <user>
Définir l'expiration du mot de passe pour un utilisateur
Afin de définir une expiration de mot de passe pour un utilisateur, vous devez modifier le nombre maximum de jours jusqu'à ce qu'il doive changer son mot de passe.
Pour cela, vous devez utiliser l'option -M.
$ chage -M <days> <user>
Par conséquent, la date d'expiration du mot de passe sera définie lors de l'exécution de la commande chage.
Verrouiller et déverrouiller un compte utilisateur
Certains jours, l'expiration du mot de passe ne suffit tout simplement pas.
Pour des raisons de sécurité, vous souhaiterez peut-être faire expirer (ou verrouiller) complètement un compte d'utilisateur. Cela peut être utilisé pour empêcher un utilisateur d'accéder à vos hôtes alors qu'il ne devrait pas pouvoir le faire.
Pour verrouiller un compte utilisateur, vous devez utiliser la commande usermod.
$ usermod -L <user>
Par conséquent, l'utilisateur ne pourra pas se connecter au compte utilisateur.
Pour le déverrouiller, vous pouvez utiliser la commande usermod avec l'option -U.
Accorder des droits privilégiés aux utilisateurs
Sous Linux, vous avez essentiellement deux façons de définir des droits privilégiés, c'est-à-dire sudo, sur les comptes d'utilisateurs.
Vous pouvez utiliser la commande usermod pour ajouter des utilisateurs au groupe sudo (basé sur Debian) ou au groupe wheel (basé sur Red Hat).
Pour ajouter rapidement un utilisateur aux sudoers, exécutez la commande suivante
$ sudo usermod -aG sudo <user>
Ou sur Red Hat
$ sudo usermod -aG wheel <user>
Vous pouvez également modifier directement le fichier sudoers avec la commande visudo.
Nous avons déjà expliqué ces étapes dans les articles suivants :
- Ajouter un utilisateur aux sudoers sur Debian 10
- Ajout d'un utilisateur aux sudoers sur RHEL 8/CentOS 8
Conclusion
Dans le didacticiel d'aujourd'hui, vous en avez appris davantage sur les bases de l'administration des utilisateurs sous Linux.
Vous avez appris que vous pouvez ajouter, supprimer et modifier des utilisateurs et que vous pouvez également modifier la politique de mot de passe afin de vous assurer de ne pas laisser de failles de sécurité sur votre système.
Vous avez également vu que vous pouvez lire des fichiers spécifiques sur le système de fichiers afin d'avoir des informations complètes sur les utilisateurs et les groupes.
Si vous cherchez à répertorier les utilisateurs sous Linux, vous pouvez lire le guide suivant.
De plus, si vous êtes curieux de connaître l'administration système Linux, vous devriez consulter tous les guides que nous avons déjà publiés dans cette section.