Afin de configurer et de gérer le système d'autorisation, l'administrateur a besoin d'une liste de tous les utilisateurs. Il existe des commandes pour créer un utilisateur, supprimer un utilisateur, mais il est essentiel de répertorier tous les utilisateurs du système Linux. De plus, il est tout à fait nécessaire pour des raisons de sécurité de s'assurer que vous avez le bon nombre d'utilisateurs et que vous n'avez pas oublié d'en supprimer.
Chez LinuxAPT, dans le cadre de nos services de gestion de serveur, nous aidons régulièrement nos clients à effectuer des requêtes liées au système Linux.
Dans ce contexte, nous verrons comment répertorier les utilisateurs dans les systèmes Linux.
Comment répertorier tous les utilisateurs à l'aide du fichier /etc/passwd ?
Les informations utilisateur sont stockées dans le fichier /etc/passwd. Il contient une ligne avec le nom d'utilisateur pour chaque compte d'utilisateur sur le système. Vous pouvez utiliser la commande less ou cat pour voir le contenu du fichier :
$ cat /etc/passwd
Dans la sortie, vous verrez que chaque ligne comporte sept champs délimités par des deux-points contenant les informations suivantes :
- Nom d'utilisateur.
- Mot de passe crypté où x signifie que le mot de passe est enregistré dans le fichier etc/shadow.
- UID (ID utilisateur).
- GID (ID de groupe d'utilisateurs).
- Nom complet de l'utilisateur.
- Répertoire $HOME de l'utilisateur.
- Chemin du shell de connexion.
Si vous souhaitez répertorier uniquement le nom d'utilisateur, vous pouvez utiliser les commandes awk ou cut pour imprimer uniquement le nom d'utilisateur :
awk -F: '{ print $1}' /etc/passwd
cut -d: -f1 /etc/passwd
La sortie sera la suivante :
Output
root
daemon
bin
sys
sync
games
man
lp
news
uucp
proxy
www-data
...
...
geoclue
gdm
gnome-initial-setup
sshd
Comment répertorier tous les utilisateurs à l'aide de la commande getent ?
La commande Getent lira les entrées des bases de données. Il listera les utilisateurs de la base de données LDAP et du fichier /etc/passwd.
Pour obtenir une liste de tous les utilisateurs Linux, tapez la commande suivante :
$ getent passwd
La sortie sera identique au contenu du fichier /etc/passwd. Vous pouvez également utiliser awk ou cut pour imprimer uniquement le nom d'utilisateur :
getent passwd | awk -F: '{ print $1}'
getent passwd | cut -d: -f1
Comment vérifier si un utilisateur existe dans le système Linux ?
Nous savons maintenant comment obtenir la liste des utilisateurs. Mais que se passe-t-il si vous voulez vérifier si un utilisateur existe sur le système actuel ou non. Vous pouvez vérifier en utilisant la commande grep et sans utiliser la commande grep.
Par exemple, nous voulons vérifier que l'utilisateur linuxapt existe ou non, alors vous devez émettre la commande comme ci-dessous :
$ getent passwd | grep linuxapt
$ getent passwd linuxapt
Output
linuxapt:x:1001:1001:,,,:/home/linuxapt:/bin/bash
Si l'utilisateur existe dans le système, il imprimera les détails de cet utilisateur, sinon il n'imprimera rien.
Si vous voulez que le nombre total d'utilisateurs existe sur votre système, vous pouvez l'obtenir en :
$ getent passwd | wc -l
Il renverra le nombre d'utilisateurs comme suit :
Output
47
Comment différencier les utilisateurs système et normaux ?
Les utilisateurs système sont créés lorsque vous installez le système d'exploitation ou mettez à jour de nouveaux packages. Il n'y a plus de différence entre les utilisateurs du système et les utilisateurs normaux.
Les utilisateurs normaux sont les utilisateurs créés par la racine ou un autre utilisateur avec des privilèges sudo. Habituellement, un utilisateur normal dispose d'un véritable shell de connexion et d'un répertoire personnel.
Chaque utilisateur a un UID (User ID) qu'il soit utilisateur système ou utilisateur normal. Lorsqu'un utilisateur normal ajoute un utilisateur à l'aide de la commande adduser. L'utilisateur sera ajouté et l'UID sera attribué automatiquement avec la référence UID_MIN et UID_MAX à partir du fichier /etc/login.defs.
Vous pouvez vérifier UID_MIN et UID_MAX avec la commande ci-dessous :
$ grep -E '^UID_MIN|^UID_MAX' /etc/login.defs
Il affichera la sortie comme ci-dessous :
Output
UID_MIN 1000
UID_MAX 60000
À partir de la sortie ci-dessus, nous pouvons voir que tous les utilisateurs normaux doivent avoir un identifiant unique entre 1 000 et 60 000.
Nous allons maintenant émettre une commande pour obtenir la liste des utilisateurs normaux dont l'ID unique est compris entre 1 000 et 60 000.
$ getent passwd {1000..60000}
Output
linuxapt:x:1000:1000:LinuxAPT,,,:/home/linuxapt:/bin/bash
demouser:x:1001:1001:,,,:/home/demouser:/bin/bash
Pour imprimer uniquement les noms d'utilisateur, tapez la commande suivante :
$ eval getent passwd {$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)} | cut -d: -f1
Output
linuxapt
demouser
Comment obtenir la liste des groupes sous Linux ?
Vous pouvez lister tous les groupes sous Linux en utilisant la commande suivante :
$ getent group
Vous pouvez obtenir la liste de tous les groupes avec un utilisateur spécifique en utilisant la commande suivante :
$ getent group | grep linuxapt