Comment lister les utilisateurs d’une machine Linux ?
Sommaire
I. Présentation
Dans ce tutoriel, nous allons voir comment obtenir une liste exhaustive des utilisateurs présents sur une machine Linux, que ce soit sur une distribution Debian, Ubuntu, Rocky Linux, etc... Puisque, malgré les différences entre certaines distributions, il y a tout de même de nombreux points communs. C'est une manipulation facile peut s'avérer utile dans différents cas : par exemple, si vous souhaitez analyser votre machine à la recherche d'un compte suspect ou vérifier la présence d'un compte.
II. Le fichier /etc/passwd
Sous Linux, les informations sur les comptes utilisateurs locaux sont stockées dans un fichier système, qui est le suivant :
/etc/passwd
Chaque ligne de ce fichier représente des informations d'un seul et unique utilisateur. Il y a des utilisateurs natifs, comme "root", "daemon" ou encore "bin" et les utilisateurs propres à la machine locale, notamment votre compte, ou encore le compte de certains services. Par exemple, si un serveur Apache est mis en place sur la machine, il y aura un compte pour ce service : généralement "www-data" mais le nom peut varier selon les distributions.
Pour être plus précis, chaque ligne va contenir le nom d'utilisateur, le mot de passe chiffré (quand c'est indiqué "x", c'est qu'il faut se référer au fichier /etc/shadow), l'UID de l'utilisateur, le nom complet, le chemin vers le home, et le shell par défaut à la connexion.
Maintenant, voyons comment lister les utilisateurs de la machine Linux.
III. Lister les utilisateurs sous Linux
En consultant le contenu du fichier "/etc/passwd", on peut obtenir la liste des utilisateurs, mais c'est en quelque sorte pollué par toutes les informations complémentaires. Ce qui donne, par exemple :
cat /etc/passwd less /etc/passwd
En sortie :
Pour obtenir uniquement la liste des utilisateurs en sélectionnant seulement le nom, pour avoir une sortie épurée, on peut s'appuyer sur des commandes comme "cut" et "awk" pour récupérer uniquement la première valeur.
Avec la commande cut, cela donne :
cut -d: -f1 /etc/passwd
Avec la commande awk, cela donne :
awk -F: '{ print $1}' /etc/passwd
Je vous donne les deux possibilités, comme ça vous choisissez celle que vous préférez selon vos habitudes.
Dans les deux cas, on obtient une sortie similaire :
Pour savoir si un utilisateur existe, en le recherchant par son nom, on peut ajouter un "grep" en complément pour affiner la sortie :
cut -d: -f1 /etc/passwd | grep "flo"
Dans le cas où l'utilisateur existe, le nom s'affiche sinon la commande retourne une sortie vide.
Comme je le disais précédemment, chaque utilisateur dispose d'un UID. C'est une information importante pour faire la différence entre les comptes utilisateurs standards et les autres comptes. Par exemple, mon utilisateur "flo" dispose de l'UID "1000" et si j'en crée un autre, il aura l'UID "1001".
Du coup, on peut utiliser la commande getent qui permet d'obtenir des informations à partir de différents fichiers, dont passwd, pour lister les utilisateurs qui ont un UID compris entre 1000 et 60000. Par exemple :
getent passwd {1000..60000}
Ce qui donne :
IV. Compter le nombre d'utilisateurs sous Linux
Bonus avant de vous laisser, comment compter le nombre d'utilisateurs locaux présents sur une machine Linux ? Et bien, tout simplement en utilisant la commande "wc" correspondante à "Word Count" et pas à autre chose...!
Voici un exemple :
cut -d: -f1 /etc/passwd | wc -l
Sur ma machine Linux de test, la valeur 37 est retournée ! Ce n'est pas surprenant même si j'utilise principalement un seul compte à mon nom, il y a tous les comptes associés au système et aux services.
V. Conclusion
Grâce à ce tutoriel, vous êtes capable de lister les utilisateurs de votre poste de travail ou serveur sous Linux à l'aide de diverses commandes ! N'oubliez pas que ces commandes sont valides sur les différentes distributions Linux.