6.6. Erstellen wichtiger Dateien und symbolischer Links
/tools/bin/{bash,cat,chmod,dd,echo,ln,mkdir,pwd,rm,stty,touch} /bin
/tools/bin/{bash,cat,chmod,dd,echo,ln,mkdir,pwd,rm,stty,touch} /bin
/tools/bin/{env,install,perl,printf}
/tools/lib/libgcc_s.so{,.1}
/tools/lib/libstdc++.{a,so{,.6}}
/tools/bin/{env,install,perl,printf}
/tools/lib/libgcc_s.so{,.1}
/tools/lib/libstdc++.{a,so{,.6}}
/ usr / bin
/ Usr / lib
/ Usr / lib
/ usr / bin
/ Usr / lib
/ Usr / lib
Manche Programme verwenden fest vorgegebene Pfade zu noch nicht existierenden Programmen. Um diese Programme zufriedenzustellen, erstellen Sie symbolische Links, die im Verlauf dieses Kapitels nach der Installation der Software durch echte Dateien ersetzt werden:
ln ln ln
ln
-sv
-sv
-sv
-sv
ln ln ln
ln
ln -sv bash /bin/sh
ln -sv bash /bin/sh
Der Zweck jedes Links:
/ bin / bash
Viele bash Skripte geben an / bin / bash.
/bin/kat
Dieser Pfadname ist im Konfigurationsskript von Glibc fest codiert.
/bin/dd
Der Weg zu dd wird fest codiert in die /usr/bin/libtool Dienstprogramm.
/bin/echo
Dies dient der Erfüllung eines Tests in der Testsuite von Glibc, der erwartet /bin/echo.
/usr/bin/env
Dieser Pfadname ist in den Build-Prozeduren einiger Pakete fest codiert.
/usr/bin/install
Der Weg zu installieren wird fest codiert in die /usr/lib/bash/Makefile.inc Datei.
/bin/ln
Der Weg zu ln wird fest codiert in die /usr/lib/perl5/5.30.0/ /Config_heavy.pl Datei.
/bin/pwd
Manche konfigurieren Skripte, insbesondere die von Glibc, haben diesen Pfadnamen fest codiert.
/bin/rm
Der Weg zu rm wird fest codiert in die /usr/lib/perl5/5.30.0/ /Config_heavy.pl Datei.
/ bin / stty
Dieser Pfadname ist in Expect fest codiert und wird daher für die erfolgreiche Ausführung der Test-Suiten von Binutils und GCC benötigt.
/ Usr / bin / perl
Viele Perl-Skripte kodieren diesen Pfad fest zum perl
/usr/lib/libgcc_s.so{,.1}
Glibc benötigt dies, damit die Pthreads-Bibliothek funktioniert.
/usr/lib/libstdc++{,.6}
Dies wird für mehrere Tests in der Testsuite von Glibc sowie für die C++-Unterstützung in GMP benötigt.
/ Bin / sh
Viele Shell-Skripte sind fest programmiert / Bin / sh.
Historisch betrachtet verwaltet Linux eine Liste der gemounteten Dateisysteme im Dateisystem / etc / mtabModerne Kernel verwalten diese Liste intern und stellen sie dem Benutzer über den / proc Dateisystem. Um Dienstprogramme zu erfüllen, die das Vorhandensein von erwarten / etc/mtab, erstellen Sie den folgenden symbolischen Link:
ln -sv /proc/self/mounts /etc/mtab
ln -sv /proc/self/mounts /etc/mtab
Damit der Benutzer Wurzel Damit Sie sich anmelden können und der Name „root“ erkannt wird, müssen entsprechende Einträge im / etc / passwd sowie / etc / group Dateien.
erstellen Sie / etc / passwd Datei, indem Sie den folgenden Befehl ausführen:
Katze > /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-Benutzer:/dev/null:/bin/false
messagebus:x:18:18:D-Bus Message Daemon-Benutzer:/var/run/dbus:/bin/false nobody:x:99:99:Nicht privilegierter Benutzer:/dev/null:/bin/false
EOF
Katze > /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-Benutzer:/dev/null:/bin/false
messagebus:x:18:18:D-Bus Message Daemon-Benutzer:/var/run/dbus:/bin/false nobody:x:99:99:Nicht privilegierter Benutzer:/dev/null:/bin/false
EOF
Das eigentliche Passwort für Wurzel (das hier verwendete „x“ ist nur ein Platzhalter) wird später festgelegt. Erstellen Sie die / etc / group Datei, indem Sie den folgenden Befehl ausführen:
Katze > /etc/Gruppe root:x:0: bin:x:1:daemon sys:x:2:
kmem:x:3:
Band:x:4:
tty:x:5: Daemon:x:6: Diskette:x:7: Festplatte: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: input:x:24: mail:x:34: kvm:x:61: wheel:x:97: nogroup:x:99: users:x:999:
EOF
<<
"EOF"
Katze > /etc/Gruppe root:x:0: bin:x:1:daemon sys:x:2:
kmem:x:3:
Band:x:4:
tty:x:5: Daemon:x:6: Diskette:x:7: Festplatte: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: input:x:24: mail:x:34: kvm:x:61: wheel:x:97: nogroup:x:99: users:x:999:
EOF
Die erstellten Gruppen sind nicht Teil eines Standards. Sie basieren zum Teil auf den Anforderungen der Udev-Konfiguration in diesem Kapitel und zum Teil auf gängigen Konventionen verschiedener Linux-Distributionen. Darüber hinaus sind einige Testsuiten auf bestimmte Benutzer oder Gruppen angewiesen. Die Linux Standard Base (LSB) ist verfügbar unter http://www. linuxbase.org) empfiehlt lediglich, dass neben der Gruppe Wurzel mit einer Gruppen-ID (GID) von 0, eine Gruppe Kasten mit der GID 1 vorhanden sein. Alle anderen Gruppennamen und GIDs können vom Systemadministrator frei gewählt werden, da gut geschriebene Programme nicht auf GID-Nummern angewiesen sind, sondern den Gruppennamen verwenden.
Um die Meldung „Ich habe keinen Namen!“ zu entfernen, starten Sie eine neue Shell. Da in Kapitel 5 eine vollständige Glibc installiert wurde und die / etc/passwd sowie / etc / group Dateien wurden erstellt, die Auflösung von Benutzernamen und Gruppennamen funktioniert jetzt:
exec /tools/bin/bash --login +h
exec /tools/bin/bash --login +h
Beachten Sie die Verwendung der +h Richtlinie. Dies sagt bash das interne Pfad-Hashing nicht zu verwenden. Ohne diese Anweisung bash würde sich die Pfade zu den ausgeführten Binärdateien merken. Um sicherzustellen, dass die neu kompilierten Binärdateien sofort nach der Installation verwendet werden, +h Die Richtlinie wird für die Dauer dieses Kapitels verwendet.
/var/log/{btmp,lastlog,faillog,wtmp}
/var/log/{btmp,lastlog,faillog,wtmp}
-v
-v
-v
-v
-v
-v
utmp 664
600
utmp 664
600
/ var / log / lastlog
/ var / log / lastlog
/var/log/btmp
/ var / log / lastlog
/ var / log / lastlog
/var/log/btmp
Die login, gut und init Programme (und andere) verwenden verschiedene Protokolldateien, um Informationen zu erfassen, z. B. wer wann am System angemeldet war. Diese Programme schreiben jedoch nicht in die Protokolldateien, wenn diese nicht bereits vorhanden sind. Initialisieren Sie die Protokolldateien und erteilen Sie ihnen die entsprechenden Berechtigungen:
berühren chgrp chmod
chmod
berühren chgrp chmod
chmod
Die /var/log/wtmp Datei zeichnet alle An- und Abmeldungen auf. Die / var / log / lastlog Die Datei zeichnet auf, wann sich jeder Benutzer zuletzt angemeldet hat. /var/log/faillog Datei zeichnet fehlgeschlagene Anmeldeversuche auf. Die /var/log/btmp Die Datei zeichnet die fehlgeschlagenen Anmeldeversuche auf.
Hinweis
Die /run/utmp Die Datei zeichnet die aktuell angemeldeten Benutzer auf. Diese Datei wird dynamisch in den Boot-Skripten erstellt.
Hinweis
Die /run/utmp Die Datei zeichnet die aktuell angemeldeten Benutzer auf. Diese Datei wird dynamisch in den Boot-Skripten erstellt.