Créer les fichiers passwd, group et les journaux de trace

Pour que root puisse se connecter et que le nom « root » soit reconnu, il doit exister des entrées adéquates dans les fichiers /etc/passwd et /etc/group.

Créez le fichier /etc/passwd en lançant les commandes suivantes :

cat > /etc/passwd << "EOF"
root:x:0:0:root:/root:/bin/bash
EOF

Le mot de passe pour root (le caractère « x » ici est seulement pour conserver l'emplacement) sera initialisé plus tard.

Créez le fichier /etc/group en lançant la commande suivante :

cat > /etc/group << "EOF"
root:x:0:
bin:x:1:
sys:x:2:
kmem:x:3:
tty:x:4:
tape:x:5:
daemon:x:6:
floppy:x:7:
disk:x:8:
lp:x:9:
dialout:x:10:
audio:x:11:
EOF

Les groupes créés ne font partie d'aucun standard. Ce sont simplement les groupes que le script make_devices utilise dans la prochaine section. Le LSB (Linux Standard Base) recommande seulement la présence d'un groupe « root » disposant d'un GID 0 d'un groupe « bin » de GID 1. Tous les autres noms de groupe et GID peuvent être choisis librement par l'administrateur système car les paquets bien écrits ne dépendent pas des numéros de GID mais utilisent le nom du groupe.

Pour supprimer l'invite « I have no name! », nous allons commencer un nouveau shell. Comme nous avons installé un Glibc complet dans le Chapitre 5 et que nous avons juste créé les fichiers /etc/passwd et /etc/group, le nom d'utilisateur et le nom de groupe devraient fonctionner.

exec /tools/bin/bash --login +h

Notez l'utilisation de la directive +h. Ceci indique à bash de ne pas utiliser son hachage interne des chemins. Sans cette directive, bash se rappellerait le chemin vers les binaires qu'il a exécuté. Comme nous voulons utiliser nos binaires tout juste compilés, nous désactivons cette fonction pendant la durée de ce chapitre.

Les programmes login, agetty et init (ainsi que d'autres) utilisent un certain nombre de fichier pour enregistrer les informations comme la personne connectée au système et sa date d'entrée. Néanmoins, ces programmes n'écrivent pas les journaux de trace s'ils n'existent pas déjà. Initialisez les journaux et donnez-leur les bons droits :

touch /var/run/utmp /var/log/{btmp,lastlog,wtmp}
chmod 644 /var/run/utmp /var/log/{btmp,lastlog,wtmp}

Le fichier /var/run/utmp enregistre les utilisateurs actuellement connecté. Le fichier /var/log/wtmp enregistre toutes les connexions et déconnexions. Le fichier /var/log/lastlog enregistre pour chaque utilisateur quand il ou elle s'est déjà connecté. Le fichier /var/log/btmp enregistre les tentatives échouées de connexion.