Sécurité

Où et comment les mots de passe sont-ils stockés sur Linux?

Où et comment les mots de passe sont-ils stockés sur Linux?
Le nom d'utilisateur avec un mot de passe correspondant pour un compte spécifique est la principale exigence à travers laquelle un utilisateur peut accéder à un système Linux. Le mot de passe de tous les comptes d'utilisateurs est enregistré dans un fichier ou une base de données afin qu'un utilisateur puisse être vérifié lors de la tentative de connexion au système. Chaque utilisateur n'a pas suffisamment de compétences et d'expertise pour localiser ce fichier sur son système. Cependant, si vous avez accès à la base de données ou à un fichier qui conserve tous les mots de passe de l'utilisateur de connexion, vous pouvez facilement accéder au système Linux. Lorsqu'un utilisateur saisit un nom d'utilisateur et un mot de passe sur Linux pour la connexion, il vérifie le mot de passe saisi par rapport à une entrée dans divers fichiers du répertoire '/etc'.

Les fichiers /etc/passwd conservent toutes les informations importantes nécessaires à la connexion de l'utilisateur. Pour l'expliquer en termes plus simples, le fichier /etc/passwd stocke les détails du compte de l'utilisateur. Ce fichier est un fichier texte brut qui contient une liste complète de tous les utilisateurs de votre système Linux. Il contient les informations sur le nom d'utilisateur, le mot de passe, l'UID (ID utilisateur), le GID (ID de groupe), le shell et le répertoire personnel. Ce fichier doit avoir des autorisations de lecture car de nombreux utilitaires de ligne de commande sont utilisés pour mapper les ID utilisateur au nom d'utilisateur. Mais, devrait avoir des autorisations d'accès en écriture limitées uniquement pour les comptes de superutilisateur ou d'utilisateur root.

Cet article montrera comment et où vous pouvez stocker les mots de passe des comptes d'utilisateurs du système sur la distribution Linux. Nous avons implémenté toutes les démonstrations sur Ubuntu 20.04 système. Cependant, vous pouvez trouver le fichier /etc/passwd sur n'importe quelle distribution Linux.

Conditions préalables

Vous devez avoir les privilèges root pour exécuter des commandes d'administration.

Compréhension de base sur le fichier /etc/passwd

Le fichier /etc/passwd contient les informations sur le compte utilisateur de votre système. Tous les champs stockés sont séparés du signe deux-points « : ».
Lorsque vous exécutez la commande suivante, vous verrez chaque entrée de fichier du fichier /etc/passwd :

$ cat /etc/passwd

La commande ci-dessus listera tous les utilisateurs de votre système Linux.
Le type de format suivant s'affichera sur l'écran de votre terminal :

Détails sur les champs /etc/passwd Format
À partir de l'image ci-dessus :

Nom d'utilisateur: Le champ un représente le nom de l'utilisateur. La longueur du champ nom d'utilisateur est définie entre 1 et 32 ​​caractères. Ceci est utilisé lorsqu'un utilisateur se connecte au système. Dans l'exemple ci-dessus, 'khuzdar' est le nom d'utilisateur.
Mot de passe: Dans l'exemple ci-dessus, le caractère « x » indique que le mot de passe est stocké sous forme cryptée dans le fichier /etc/shadow.
Identifiant utilisateur (UID) : L'ID utilisateur doit être attribué séparément à chaque utilisateur. L'UID zéro est attribué à l'utilisateur racine et les ID utilisateur de 1 à 99 sont attribués à des comptes prédéfinis ou standard. Les autres UID de 100 à 999 sont attribués aux comptes ou groupes d'administration du système. Dans la capture d'écran ci-dessus, l'ID utilisateur est 1001.
Identifiant de groupe (GID) : Le champ suivant représente l'ID du groupe. Le GID est stocké dans le fichier /etc/group. Sur la base de l'exemple ci-dessus, l'utilisateur appartient à l'ID de groupe 1001.
Informations sur l'ID utilisateur : Le champ suivant est destiné aux commentaires. Dans ce champ, vous pouvez ajouter des informations supplémentaires sur l'utilisateur spécifié, telles que le nom complet de l'utilisateur, son numéro de téléphone, etc. Cependant, dans l'exemple ci-dessus, aucun numéro de téléphone n'est fourni par l'utilisateur.
Répertoire d'accueil : Ce champ affiche l'emplacement du répertoire personnel qui est attribué à l'utilisateur actuel. Si le répertoire spécifié n'existe pas, il affichera "/". L'image ci-dessus montre l'emplacement de l'utilisateur en surbrillance dans le répertoire personnel, qui est home/kbuzdar.
Commande // shell : Le chemin absolu par défaut d'un shell ou d'une commande est /bin/bash. C'est ce qu'on appelle la coquille. Par exemple, sysadmin utilisant le shell nologin. Il se comporte comme le shell de remplacement pour les comptes d'utilisateurs du système. Si le shell est situé sur le chemin de /sbin/nologin et que l'utilisateur souhaite se connecter directement au système Linux, le shell /sbin/nologin fermera ou désactivera la connexion.

Rechercher un utilisateur dans le fichier /etc/passwd

Vous pouvez rechercher un utilisateur spécifique avec le fichier /etc/passwd, en utilisant la commande grep. Par exemple, nous voulons rechercher le nom d'utilisateur « kbuzdar » dans le fichier /etc/passwd, en utilisant la syntaxe suivante, puis nous pouvons facilement rechercher un utilisateur spécifié, ce qui nous fait gagner du temps :

$ grep nom d'utilisateur /etc/passwd

La syntaxe ci-dessus prendra la forme suivante :

$ grep kbuzdar /etc/passwd


Ou alors

$ grep -w '^kbuzdar' /etc/passwd

Afficher les autorisations sur le fichier /etc/passwd

Comme nous l'avons mentionné ci-dessus, tous les autres utilisateurs, à l'exception de root, devraient pouvoir lire l'autorisation sur le fichier /etc/passwd, et que le propriétaire doit être superutilisateur ou root.
Tapez ce qui suit pour vérifier les autorisations de lecture sur le fichier :

$ ls -l /etc/passwd

L'exemple de sortie suivant s'affichera sur le terminal :

Lecture du fichier /etc/passwd

Vous pouvez lire le fichier /etc/passwd sur votre système Linux en utilisant le script bash suivant ou exécuter directement ce qui est écrit ci-dessous pendant les commandes de boucle sur le terminal.
Créez un fichier texte et collez-y le code suivant :

#!/bin/bash
# total de sept champs de /etc/passwd stockés sous $f1,f2… ,$f7
tandis que IFS=: read -r f1 f2 f3 f4 f5 f6 f7
fais
echo "L'utilisateur $f1 utilise $f7 shell et stocke les fichiers dans le répertoire $f6."
Fini < /etc/passwd

En utilisant la boucle while, il lira les sept champs, puis affichera de manière itérative le contenu du fichier sur le terminal.
Enregistrez le fichier ci-dessus sous le nom 'readfile.merde.

Maintenant, exécutez le fichier ci-dessus en utilisant la commande suivante :

$ bash fichier de lecture.sh

Explorer le fichier /etc/shadow

Le fichier /etc/shadow contient tous vos mots de passe cryptés qui sont stockés dans ce fichier qui ne sont lisibles que pour les utilisateurs root.
Exécutons la commande suivante pour afficher le contenu :

$ sudo cat /etc/shadow

Vous pouvez voir tous les mots de passe au format crypté :

Conclusion

Nous avons vu dans l'article ci-dessus, tous les détails du compte de l'utilisateur et les mots de passe stockés sur le fichier /etc/passwd dans le système Linux. Vous pouvez lire ce fichier, mais seuls les utilisateurs root ont les « autorisations d'écriture ». De plus, nous avons également vu tous les mots de passe cryptés stockés sur le fichier /etc/shadow. Vous pouvez également explorer le fichier /etc/group pour obtenir des détails sur le groupe de l'utilisateur.

Comment utiliser AutoKey pour automatiser les jeux Linux
AutoKey est un utilitaire d'automatisation de bureau pour Linux et X11, programmé en Python 3, GTK et Qt. En utilisant ses fonctionnalités de script e...
Comment afficher le compteur FPS dans les jeux Linux
Les jeux Linux ont reçu une impulsion majeure lorsque Valve a annoncé la prise en charge de Linux pour le client Steam et leurs jeux en 2012. Depuis l...
Comment télécharger et jouer à Civilization VI de Sid Meier sur Linux
Présentation du jeu Civilization 6 est une version moderne du concept classique introduit dans la série de jeux Age of Empires. L'idée était assez sim...