Comment vérifier si un compte utilisateur existe sous Linux

LinuxBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire (lab), vous apprendrez à vérifier si un compte utilisateur existe sur un système Linux en utilisant plusieurs méthodes courantes. Nous allons explorer comment interroger l'existence d'un utilisateur avec la commande id, rechercher les entrées utilisateur dans le fichier /etc/passwd et valider les informations utilisateur à l'aide de la commande getent passwd. Ces techniques offrent différentes manières de déterminer rapidement et efficacement la présence d'un compte utilisateur.

Interroger l'existence d'un utilisateur avec la commande id

Dans cette étape, nous allons apprendre à vérifier si un utilisateur spécifique existe sur le système en utilisant la commande id. La commande id est un outil polyvalent qui affiche les informations sur l'utilisateur et le groupe pour l'utilisateur actuel ou un utilisateur spécifié.

Nous avons déjà utilisé id pour voir vos propres informations d'utilisateur et de groupe. Maintenant, utilisons - la pour interroger les informations sur un autre utilisateur.

La syntaxe de base pour vérifier un utilisateur spécifique est :

id [username]

Si l'utilisateur existe, la commande affichera son identifiant utilisateur (User ID - uid), son identifiant de groupe (Group ID - gid) et les groupes auxquels il appartient. Si l'utilisateur n'existe pas, la commande retournera généralement un message d'erreur indiquant que l'utilisateur est inconnu.

Essayons de vérifier l'existence d'un utilisateur qui existe, comme root. Tapez la commande suivante dans votre terminal et appuyez sur Entrée :

id root

Vous devriez voir une sortie similaire à celle - ci :

uid=0(root) gid=0(root) groups=0(root)

Cela confirme que l'utilisateur root existe et affiche ses identifiants d'utilisateur et de groupe.

Maintenant, essayons de vérifier l'existence d'un utilisateur qui n'existe probablement pas sur ce système, par exemple, un utilisateur nommé nonexistentuser. Tapez la commande suivante et appuyez sur Entrée :

id nonexistentuser

Vous devriez voir un message d'erreur indiquant que l'utilisateur n'a pas été trouvé, comme ceci :

id: ‘nonexistentuser’: no such user

Cela montre comment la commande id peut être utilisée pour déterminer rapidement si un compte utilisateur existe sur le système.

N'oubliez pas que la commande id est un moyen puissant d'obtenir des informations détaillées sur les utilisateurs et leur appartenance à des groupes.

Cliquez sur Continuer pour passer à l'étape suivante.

Rechercher un utilisateur dans le fichier /etc/passwd

Dans cette étape, nous allons explorer une autre façon de vérifier l'existence d'un utilisateur en examinant le fichier /etc/passwd. Ce fichier est une partie essentielle des systèmes Linux et contient des informations sur les comptes utilisateurs.

Le fichier /etc/passwd stocke des détails essentiels pour chaque utilisateur, notamment son nom d'utilisateur, son identifiant utilisateur (User ID - UID), son identifiant de groupe (Group ID - GID), son répertoire personnel et son interpréteur de commandes par défaut. Chaque ligne du fichier représente un compte utilisateur unique, les champs étant séparés par des deux - points (:).

Nous pouvons utiliser la commande cat pour afficher le contenu du fichier /etc/passwd et la commande grep pour rechercher un nom d'utilisateur spécifique dans ce fichier.

Tout d'abord, affichons le contenu entier du fichier /etc/passwd. Tapez la commande suivante dans votre terminal et appuyez sur Entrée :

cat /etc/passwd

Vous verrez une longue liste de lignes, chacune représentant un compte utilisateur. La sortie ressemblera à ceci (en montrant seulement quelques lignes) :

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
...
labex:x:5000:5000:LabEx user,,,:/home/labex:/bin/zsh
...

Maintenant, utilisons grep pour rechercher un utilisateur spécifique, comme labex. Nous allons rediriger la sortie de cat /etc/passwd vers grep labex. Le symbole de tube (|) envoie la sortie de la commande de gauche en tant qu'entrée à la commande de droite.

Tapez la commande suivante et appuyez sur Entrée :

cat /etc/passwd | grep labex

Si l'utilisateur labex existe, vous verrez la ligne correspondant à l'utilisateur labex dans le fichier /etc/passwd :

labex:x:5000:5000:LabEx user,,,:/home/labex:/bin/zsh

Si l'utilisateur n'existe pas, grep ne trouvera pas de correspondance et il n'y aura pas de sortie.

Essayons de rechercher de nouveau l'utilisateur nonexistentuser :

cat /etc/passwd | grep nonexistentuser

Cette commande ne devrait produire aucune sortie, indiquant que l'utilisateur nonexistentuser n'est pas trouvé dans le fichier /etc/passwd.

Rechercher directement dans le fichier /etc/passwd est une méthode courante pour vérifier l'existence d'un utilisateur, notamment dans les scripts. Cependant, il est important de noter que ce fichier ne contient que les comptes utilisateurs locaux. Les utilisateurs gérés via des services réseau (comme LDAP) peuvent ne pas apparaître ici.

Cliquez sur Continuer pour passer à la méthode suivante.

Valider un utilisateur avec la commande getent passwd

Dans cette étape, nous allons apprendre à utiliser la commande getent, qui est un moyen plus robuste pour récupérer des entrées à partir des bases de données Name Service Switch (NSS), y compris la base de données des mots de passe. La commande getent est particulièrement utile car elle peut interroger non seulement des fichiers locaux comme /etc/passwd, mais aussi des sources basées sur le réseau telles que LDAP ou NIS.

La syntaxe de base pour utiliser getent pour interroger la base de données des mots de passe est :

getent passwd [username]

Si l'utilisateur existe dans l'une des sources NSS configurées, getent affichera la ligne correspondante de la base de données des mots de passe, de manière similaire à ce que vous avez vu lorsque vous avez utilisé cat /etc/passwd. Si l'utilisateur n'existe pas, getent ne produira aucune sortie et se terminera avec un code de sortie non nul.

Utilisons getent pour vérifier l'existence de l'utilisateur labex. Tapez la commande suivante dans votre terminal et appuyez sur Entrée :

getent passwd labex

Vous devriez voir la ligne correspondant à l'utilisateur labex :

labex:x:5000:5000:LabEx user,,,:/home/labex:/bin/zsh

Maintenant, utilisons getent pour vérifier à nouveau l'existence de l'utilisateur nonexistentuser. Tapez la commande suivante et appuyez sur Entrée :

getent passwd nonexistentuser

Cette commande ne devrait produire aucune sortie, tout comme lorsque nous avons utilisé grep sur /etc/passwd. Cependant, getent est généralement préféré à l'analyse directe de /etc/passwd car il respecte la configuration NSS du système et peut trouver des utilisateurs à partir de diverses sources.

Pour voir la différence dans le code de sortie, vous pouvez vérifier la valeur de $? après avoir exécuté une commande. $? contient le code de sortie de la dernière commande exécutée. Une valeur de 0 indique généralement un succès, tandis qu'une valeur non nulle indique une erreur.

Exécutez à nouveau la commande getent pour labex, puis vérifiez le code de sortie :

getent passwd labex
echo $?

Vous devriez voir les informations de l'utilisateur suivies de 0.

Maintenant, exécutez la commande getent pour nonexistentuser et vérifiez le code de sortie :

getent passwd nonexistentuser
echo $?

Vous devriez voir aucune sortie de getent, suivie d'une valeur non nulle (souvent 1 ou 2).

L'utilisation de getent et la vérification de son code de sortie est un moyen fiable pour déterminer de manière programmée si un utilisateur existe sur un système Linux, que l'utilisateur soit défini localement ou via un service réseau.

Vous avez maintenant appris trois méthodes différentes pour vérifier l'existence d'un utilisateur sous Linux !

Cliquez sur Continuer pour terminer ce laboratoire.

Résumé

Dans ce laboratoire, nous avons appris trois méthodes pour vérifier si un compte utilisateur existe sous Linux. Tout d'abord, nous avons utilisé la commande id, qui fournit les informations sur l'utilisateur et le groupe si l'utilisateur existe, et affiche une erreur s'il n'existe pas. Nous avons démontré cela en vérifiant l'existence de l'utilisateur root et d'un utilisateur inexistant.

Ensuite, nous avons exploré le fichier /etc/passwd, un fichier système central contenant les détails des comptes utilisateurs. En recherchant dans ce fichier, nous pouvons déterminer si une entrée pour un utilisateur est présente. Enfin, nous avons utilisé la commande getent passwd, qui est un moyen plus robuste pour interroger les informations utilisateur à partir de diverses sources, y compris /etc/passwd, et est généralement préférée pour les scripts et l'automatisation.