/etc/passwd

Le fichier /etc/passwd est un fichier de configuration essentiel pour la prise en charge des utilisateurs. Ce fichier contient la liste des utilisateurs du système ainsi que les informations sur chacun d'entre eux.

Historique

À l'origine, le fichier /etc/passwd contenait aussi les mots de passe cryptés des utilisateurs. Le fichier étant accessible en lecture, tout le monde avait accès à ceux-ci.

La disponibilité des mots de passe n'était pas un problème pour deux raisons: les utilisateurs n'avaient pas d'intention néfaste entre eux, et la puissance de calcul ne permettait pas de retrouver un mot de passe a partir de la version crypté. Ces deux arguments n'ont plus aucun sens aujourd'hui, et les mots de passes ne sont généralement plus stockés dans /etc/passwd.

Les mots de passes ont donc été déplacé vers un second fichier, qui n'est accessible que par le root. Ce fichier est le fichier /etc/shadow. Le champ qui contenait autrefois un mot de passe dans /etc/passwd contient désormais le caractère "x".

Format de fichier

Voyons un extrait de fichier /etc/passwd:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
...
ikipou:x:1007:1007:Benjamin Poulain:/home/ikipou:/bin/bash
bertrand:x:1008:1008:Bertrand Josse:/home/bertrand:/bin/bash
mask:x:1009:1009:Maxime Vantorre:/home/mask:/bin/bash
...

Chaque entrée du fichier est composés de 7 champs (ou colonnes):

  1. nom de connexion (login)
  2. mot de passe optionnel (ou x pour utiliser les mots de passes masquées (shadow))
  3. identifiant d'utilisateur (UID)
  4. identifiant de groupe (GID)
  5. informations libres
  6. répertoire utilisateur
  7. interpréteur de commande (shell) par défaut

Les champs sont séparés par le caractères double point (:).

Voici le détail et la signification de chaque champs:

Login

Le premier champ est le nom de connexion, ou login. Ce nom est utilisé dans tout le système pour afficher les identifications et c'est aussi celui qui sert à se connecter.

De nombreuses distributions Linux restreigne les noms à des caractères alphanumérique sans majuscule.

Notez qu'en interne, le nom d'utilisateur n'est pas utilisé. C'est le numéro d'utilisateur (UID) qui est utilisé pour identifier un fichier, un processus, etc. Deux utilisateurs ne sont donc unique que si leur UID est différent.

Mot de passe

Le second champ permettait autrefois de mettre le mot de passe crypté. Comme expliqué dans l'historique, les mots de passe sont désormais stockés dans un fichier séparé: /etc/shadow. Le fichier shadow n'est lisible que par l'utilisateur root, au contraire du fichier passwd qui est accessible à tous.

UID

Le troisième champ donne l'identifiant d'utilisateur (UID signifiant User ID). Cette identifiant est un numéro unique identifiant chaque utilisateur.

Le système n'utilise pas les noms d'utilisateurs en interne, mais les numéros d'utilisateur. Les numéros sont traduit en nom d'utilisateur lors de l'affichage.

GID

Après l'UID vient l'identifiant de groupe, le GID (Group ID). Ce numéro donne le numéro de groupe principal.

Les groupes sont géré dans le fichier /etc/group. Chaque utilisateur devant avoir un groupe principal, celui-ci est précisé dans le fichier de password. Un utilisateur peut appartenir à plusieurs groupe mais cela est spécifié dans le fichier /etc/group.

Informations

Le cinquième champ donne des informations (facultative) sur l'utilisateur. Ce champ contient généralement le nom complet de l'utilisateur.

Pour les comptes utilisés par un démon, il est recommandé d'indiquer le démon en question dans le champs d'information.

Répertoire personnel

L'avant dernier champ donne le chemin du dossier personnel de l'utilisateur.

Pour les démons, un dossier inexistant est souvent utilisé, comme par exemple /nonexistent:

nobody:x:65534:65534:nobody:/nonexistent:/bin/false
dhcp:x:100:101::/nonexistent:/bin/false

Shell

Le dernier champ concernent interpréteur de commande, le shell. Généralement, le shell utilisé pas défaut est bash.

Pour les démons, le shell est généralement la commande /bin/false qui renvoit toujours 1. Cela empêche de se connecter avec ces utilisateurs car ils n'ont pas de shell valide.

Page de manuel

La page de manuel de /etc/passwd fournit une description courte du format du fichier, très utile si l'on a boulié la signification d'un champ.