Historiquement, Linux garde une liste des systèmes de fichiers montés
dans le fichier /etc/mtab
. Les noyaux
modernes gèrent cette liste en interne et la proposent à
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:65534:65534: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:
users:x:999:
nogroup:x:65534:
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, un groupe bin
accompagné
d'un GID de 1. Le GID 5 est souvent utilisé pour le groupe
tty
et le numéro 5 est aussi utilisé
dans systemd pour le système de fichiers
devpts
. 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.
L'ID 65534 est utilisé par le noyau pour NFS et les espaces de noms
séparés pour les utilisateurs et les groupes non projetés (ils
existent sur le serveur NFS ou dans l'espace de nom parent, mais
« n'existent
pas » sur la machine locale ou dans l'espace de
nom séparé). Nous assignons l'utilisateur nobody
et le groupe nogroup
pour éviter d'avoir un ID sans nom. Mais
d'autres distributions traitent cet ID différemment, donc les
programmes portables ne devraient pas dépendre de cette assignation.
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.
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.