Accueil
» LINUX
»
Linux : Comment lister tous les utilisateurs
Linux : Comment lister tous les utilisateurs
Pour lister tous les utilisateurs sous Linux, la commande la plus polyvalente est `getent` getent passwd. Si vous ne souhaitez que les noms d'utilisateur, exécutez `getent` getent passwd | cut -d: -f1. Cette commande est généralement plus complète que la lecture /etc/passwddirecte, car `getent` suit la configuration NSS (Name Service Switch) du système et peut donc inclure les comptes fournis par des services tels que LDAP ou d'autres sources d'identité configurées.
Lister tous les utilisateurs avec getent
Ouvrez un terminal et exécutez :
getent passwd
Chaque ligne correspond à un enregistrement utilisateur. Pour afficher uniquement les noms d'utilisateur, utilisez :
getent passwd | cut -d: -f1
Vous pouvez également consulter un compte connu sans avoir à parcourir la liste complète :
getent passwd alice
La documentation de la bibliothèque GNU C explique que NSS contrôle la manière dont les bases de données système, telles que `/etc/ src` passwd, sont résolues /etc/nsswitch.conf. Voir la documentation NSS de la bibliothèque GNU C.
getent passwdaffiche les enregistrements de compte disponibles via les sources de base de données utilisateur configurées.
Liste des utilisateurs locaux à partir de /etc/passwd
Si vous souhaitez que les comptes soient stockés dans la base de données locale des mots de passe, consultez le /etc/passwdfichier correspondant. Ce fichier contient un enregistrement par compte local, séparé par deux-points. Un enregistrement type comprend le nom d'utilisateur, un espace réservé pour le mot de passe, l'UID, le GID principal, un champ de commentaire, le répertoire personnel et l'interpréteur de commandes.
Pour les noms d'utilisateur uniquement :
cut -d: -f1 /etc/passwd
Le même résultat peut être obtenu avec awk:
awk -F: '{print $1}' /etc/passwd
Cette liste comprend généralement à la fois les utilisateurs humains et les comptes de service tels que root, daemon, ou les comptes créés par les logiciels installés.
La cutcommande extrait uniquement le premier champ, qui est le nom d'utilisateur.
Consulter l'intégralité des enregistrements du compte local
Pour consulter l'intégralité du fichier local, utilisez cette fonction lessafin de pouvoir faire défiler confortablement :
less /etc/passwd
Vous pouvez également imprimer le fichier directement :
cat /etc/passwd
Sur les systèmes Linux modernes, le champ du mot de passe contient généralement un espace de noms x. Cela ne signifie pas que le mot de passe est stocké en clair dans ce champ/etc/passwd ; les hachages de mots de passe sont normalement conservés séparément dans un autre champ /etc/shadow, dont les permissions sont plus restrictives. Le projet Linux man-pages documente les sept champs et ce comportement de mot de passe chiffré dans passwd(5) .
Une /etc/passwdentrée complète contient le nom d'utilisateur, l'UID, le GID, le répertoire personnel, le shell et d'autres champs de compte.
Lister les noms d'utilisateur avec Bash compgen
Si vous utilisez Bash, compgenvous pouvez générer des candidats pour la complétion de nom d'utilisateur :
compgen -u
Pour obtenir un résultat long, parcourez-le page par page avec :
compgen -u | less
Ou supprimez les noms en double et triez le résultat :
compgen -u | sort -u
compgenIl s'agit d'une fonction intégrée à Bash, elle est donc moins universelle que getentpour les scripts qui doivent fonctionner sur différents shells. Le manuel de GNU Bash la documente compgencomme faisant partie des fonctionnalités de complétion programmable de Bash.
En Bash, compgen -u | lesscela fournit une liste de noms d'utilisateur paginée.
Comment afficher les utilisateurs réguliers au lieu des comptes de service ?
Il n'existe pas de seuil d'UID unique qui convienne à toutes les distributions Linux ou organisations. De nombreux systèmes réservent les UID les plus bas aux comptes système et attribuent aux utilisateurs classiques un UID minimum configuré, mais cette politique peut varier. Si votre système utilise un UID minimum /etc/login.defs, vous pouvez vérifier sa configuration minimale avec :
grep '^UID_MIN' /etc/login.defs
Vous pouvez également rechercher des comptes avec des shells interactifs comme indice pratique :
Il ne s'agit que d'une heuristique : un compte peut avoir un shell interactif sans être un utilisateur de bureau normal, et les utilisateurs gérés en externe peuvent suivre des politiques UID différentes.
Enregistrer, compter ou rechercher dans la liste des utilisateurs
Une fois la liste nécessaire établie, les outils shell standard facilitent sa réutilisation :
Nombre de comptes retournés :getent passwd | cut -d: -f1 | wc -l
Trouver un compte :getent passwd username
Quelle méthode devez-vous utiliser ?
Commande
Idéal pour
getent passwd
Meilleure valeur par défaut ; suit les sources utilisateur NSS configurées
cut -d: -f1 /etc/passwd
Noms d'utilisateur locaux uniquement
cat /etc/passwdouless /etc/passwd
Inspection complète des registres de compte locaux
compgen -u
Liste rapide des noms d'utilisateur depuis Bash
Pour la plupart des administrateurs et des utilisateurs d'ordinateurs de bureau, commencez par getent passwd | cut -d: -f1. Utilisez-le /etc/passwdlorsque vous n'avez besoin que de comptes locaux.