7.6. Création des fichiers et des liens symboliques essentiels

Historiquement, Linux gère la liste des systèmes de fichiers montés dans le fichier /etc/mtab. Les noyaux modernes gèrent cette liste en interne et la propose à l'utilisateur via le système de fichiers /proc. Afin de satisfaire les outils qui s'attendent à la présence de /etc/mtab, créez le lien symbolique suivant :

ln -sv /proc/self/mounts /etc/mtab

Créez un fichier /etc/hosts de base qui sera mentionné dans certaines suites de tests, et par l'un des fichiers de configuration de Perl :

cat > /etc/hosts << EOF
127.0.0.1  localhost $(hostname)
::1        localhost
EOF

Afin que l'utilisateur root puisse s'identifier et que le nom « root » soit reconnu, il doit y avoir des entrées cohérentes dans les fichiers /etc/passwd et /etc/group.

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

cat > /etc/passwd << "EOF"
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/dev/null:/usr/bin/false
daemon:x:6:6:Daemon User:/dev/null:/usr/bin/false
messagebus:x:18:18:D-Bus Message Daemon User:/run/dbus:/usr/bin/false
systemd-journal-gateway:x:73:73:systemd Journal Gateway:/:/usr/bin/false
systemd-journal-remote:x:74:74:systemd Journal Remote:/:/usr/bin/false
systemd-journal-upload:x:75:75:systemd Journal Upload:/:/usr/bin/false
systemd-network:x:76:76:systemd Network Management:/:/usr/bin/false
systemd-resolve:x:77:77:systemd Resolver:/:/usr/bin/false
systemd-timesync:x:78:78:systemd Time Synchronization:/:/usr/bin/false
systemd-coredump:x:79:79:systemd Core Dumper:/:/usr/bin/false
uuidd:x:80:80:UUID Generation Daemon User:/dev/null:/usr/bin/false
systemd-oom:x:81:81:systemd Out Of Memory Daemon:/:/usr/bin/false
nobody:x:99:99:Unprivileged User:/dev/null:/usr/bin/false
EOF

Le mot de passe réel pour root sera paramétré plus tard.

Créez le fichier /etc/group en exécutant la commande suivante :

cat > /etc/group << "EOF"
root:x:0:
bin:x:1:daemon
sys:x:2:
kmem:x:3:
tape:x:4:
tty:x:5:
daemon:x:6:
floppy:x:7:
disk:x:8:
lp:x:9:
dialout:x:10:
audio:x:11:
video:x:12:
utmp:x:13:
usb:x:14:
cdrom:x:15:
adm:x:16:
messagebus:x:18:
systemd-journal:x:23:
input:x:24:
mail:x:34:
kvm:x:61:
systemd-journal-gateway:x:73:
systemd-journal-remote:x:74:
systemd-journal-upload:x:75:
systemd-network:x:76:
systemd-resolve:x:77:
systemd-timesync:x:78:
systemd-coredump:x:79:
uuidd:x:80:
systemd-oom:x:81:
wheel:x:97:
nogroup:x:99:
users:x:999:
EOF

Les groupes créés ne font partie d'aucun standard, ce sont des groupes décidés en partie en fonction des besoins de la configuration de Udev dans le chapitre 9, et par la convention usuelle d'un certain nombre de distributions Linux existantes. En outre, certaines suites de tests s'appuient sur des groupes et des utilisateurs spécifiques. La base Linux standard (Linux Standard Base ou LSB, disponible sur http://refspecs.linuxfoundation.org/lsb.shtml) recommande uniquement cela, ainsi que la présence d'un groupe root accompagné d'un ID de groupe (GID) de 0 et d'un groupe bin accompagné d'un GID de 1. Tous les autres noms de groupe et GID peuvent être librement choisis par l'administrateur du système puisque les programmes bien écrits ne dépendent pas des numéros GID, mais utilisent plutôt le nom du groupe.

Certains tests dans Chapitre 8 ont besoin d'un utilisateur normal. Nous ajoutons cet utilisateur ici et nous supprimons ce compte à la fin de ce chapitre.

echo "tester:x:101:101::/home/tester:/bin/bash" >> /etc/passwd
echo "tester:x:101:" >> /etc/group
install -o tester -d /home/tester

Pour supprimer l'invite « I have no name! », démarrez un nouvel interpréteur de commandes. Puisque les fichiers /etc/passwd et /etc/group ont été créés, la résolution du nom d'utilisateur et du nom de groupe fonctionnera à présent :

exec /usr/bin/bash --login

Les programmes login, agetty et init, entre autres, utilisent un certain nombre de fichiers journaux pour enregistrer des informations qui permettent de savoir qui s'est connecté sur le système et quand. Cependant, ces programmes n'écriront pas vers ces fichiers journaux s'ils n'existent pas déjà. Initialisez les fichiers journaux et donnez-leur les droits nécessaires :

touch /var/log/{btmp,lastlog,faillog,wtmp}
chgrp -v utmp /var/log/lastlog
chmod -v 664  /var/log/lastlog
chmod -v 600  /var/log/btmp

Le fichier /var/log/wtmp enregistre toutes les connexions et les déconnexions. Le fichier /var/log/lastlog enregistre le moment où chaque utilisateur s'est connecté pour la dernière fois. Le fichier /var/log/faillog enregistre les échecs de connexion. Le fichier /var/log/btmp enregistre les mauvaises tentatives de connexion.

[Note]

Note

Le fichier /run/utmp enregistre les utilisateurs qui sont actuellement connectés. Ce fichier est créé de manière dynamique dans les scripts de démarrage.