Certains programmes stockent en dur des chemins vers des programmes qui n'existent pas encore. Pour satisfaire ces programmes, créez un certain nombre de liens symboliques qui seront remplacés par les vrais fichiers tout au long de ce chapitre une fois que tous les logiciels seront installés :
ln -sv /tools/bin/{bash,cat,echo,pwd,stty} /bin
ln -sv /tools/bin/perl /usr/bin
ln -sv /tools/lib/libgcc_s.so{,.1} /usr/lib
ln -sv /tools/lib/libstdc++.so{,.6} /usr/lib
sed 's/tools/usr/' /tools/lib/libstdc++.la > /usr/lib/libstdc++.la
ln -sv bash /bin/sh
      Voici l'objectif de chaque lien :
/bin/bash
              De nombreux scripts bash spécifient /bin/bash.
            
/bin/catCe chemin est codé en dur dans le script configure de Glibc.
/bin/echo
              Ceci pour satisfaire un des tests de la suite de tests de
              Glibc, qui attend /bin/echo.
            
/bin/pwdCertains scripts configure, en particulier celui de Glibc, ont codé en dur ce chemin.
/bin/sttyCe chemin est codé en dur dans Expect, il est donc nécessaire pour la réussite des suites de tests de Binutils et de GCC.
/usr/bin/perlDe nombreux scripts Perl codent en dur ce chemin vers le programme perl.
/usr/lib/libgcc_s.so{,.1}Glibc en a besoin pour que la bibliothèque pthreads fonctionne.
/usr/lib/libstdc++{,.6}Ceci est exigé par plusieurs tests de la suite de tests de Glibc et pour le support C++ de GMP.
/usr/lib/libstdc++.la
              Cela empêche une référence à /tools qui serait dans /usr/lib/libstdc++.la après l'installation de
              GCC.
            
/bin/sh
              Beaucoup de scripts shell codent en dur /bin/sh.
            
        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 via le système de fichiers
        /proc. Pour contenter les outils qui
        s'attendent à la présence de /etc/mtab,
        créez le lien symbolique suivant :
      
ln -sv /proc/self/mounts /etc/mtab
        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:/bin/false
daemon:x:6:6:Daemon User:/dev/null:/bin/false
messagebus:x:18:18:D-Bus Message Daemon User:/var/run/dbus:/bin/false
systemd-bus-proxy:x:72:72:systemd Bus Proxy:/:/bin/false
systemd-journal-gateway:x:73:73:systemd Journal Gateway:/:/bin/false
systemd-journal-remote:x:74:74:systemd Journal Remote:/:/bin/false
systemd-journal-upload:x:75:75:systemd Journal Upload:/:/bin/false
systemd-network:x:76:76:systemd Network Management:/:/bin/false
systemd-resolve:x:77:77:systemd Resolver:/:/bin/false
systemd-timesync:x:78:78:systemd Time Synchronization:/:/bin/false
systemd-coredump:x:79:79:systemd Core Dumper:/:/bin/false
nobody:x:99:99:Unprivileged User:/dev/null:/bin/false
EOF
      
        Le mot de passe actuel pour root (le
        « x »
        utilisé est seulement un exemple) 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:
systemd-bus-proxy:x:72:
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:
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 ce chapitre, et en partie par la coutume utilisée par un certain
        nombre de distributions Linux existantes. En outre, certaines suites
        de tests s'appuient sur des groupes et des utilisateurs spécifiques.
        Le base linux standard (Linux Standard Base ou LSB, disponible sur
        http://www.linuxbase.org) recommande
        seulement cela, ainsi que la présence d'un groupe root (GID 0) et d'un groupe bin (GID 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.
      
        Pour supprimer l'invite « I have no name! », démarrez un nouveau
        shell. Comme nous avons installé une Glibc complète dans le Chapitre
        5 et créé les fichiers /etc/passwd
        et /etc/group, la résolution du nom
        d'utilisateur et de groupe fonctionnera à présent :
      
exec /tools/bin/bash --login +h
        Remarquez l'utilisation du paramètre +h. Il dit à bash de ne pas utiliser son hachage
        de chemin interne. Sans ce paramètre, bash se rappelerait des chemins
        vers les binaires qu'il a exécutés. Pour s'assurer que les binaires
        nouvellement compilés seront utilisés dès qu'ils seront installés, le
        paramètre +h sera utilisée
        durant tout le chapitre.
      
Les programmes login, agetty, et init (et d'autres) utilisent un nombre de journaux applicatifs pour enregistrer des informations comme qui s'est connecté sur le système et quand. Mais ces programmes n'écriront pas vers ces journaux s'ils n'existent pas. Initialisez les journaux et donnez-leur les bons droits :
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 de dernière
        connexion de chaque utilisateur. Le fichier /var/log/faillog enregistre les tentatives de
        connexion échouées. Le fichier /var/log/btmp enregistre les mauvaises tentatives
        de connexion.
      
![[Note]](../images/note.png) 
        
          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.