Linux from Scratch 12.1 - Verschieben der "undocumented instantiation" von etc/bash.bashrc als root funktioniert nicht

ComputerMilo

Ensign
Registriert
Apr. 2018
Beiträge
165
Moin Leute,

hoffe, das Thema passt in dieses Subforum hier. Falls nicht, bitte verschieben.

Ich bin gerade dabei, mir mit Linux From Scratch eine eigene Distro zu bauen und bin jetzt auf ein Problem gestoßen. Hoffe, jemand kennt sich hier damit aus und kann mir weiterhelfen.

Im aktuellen Stable LFS Book 12.1 wird in Kapitel 4.4 steht folgende wichtige Info:
"Several commercial distributions add an undocumented instantiation of /etc/bash.bashrc to the initialization of bash. This file has the potential to modify the lfs user's environment in ways that can affect the building of critical LFS packages. To make sure the lfs user's environment is clean, check for the presence of /etc/bash.bashrc and, if present, move it out of the way."

deutsch:
"Einige kommerzielle Distributionen fügen eine undokumentierte Instanzierung von /etc/bash.bashrc zur Initialisierung der Bash hinzu. Diese Datei kann die Umgebung des Lfs-Benutzers in einer Weise verändern, die die Erstellung wichtiger LFS-Pakete beeinträchtigen kann. Um sicherzustellen, dass die Umgebung des Lfs-Benutzers sauber ist, überprüfen Sie, ob /etc/bash.bashrc vorhanden ist, und entfernen Sie sie, falls sie vorhanden ist, aus dem Weg."

Man soll dort also als root den folgenden Befehl ausführen:
"[ ! -e /etc/bash.bashrc ] || mv -v /etc/bash.bashrc /etc/bash.bashrc.NOUSE"

Jetzt zu meinem Problem. Wenn ich den Befehl mit sudo eingebe, bekomme ich folgende Fehlermeldung ausgegeben:
"lfs is not in the sudoers file. This incident will be reported.
mv: cannot move '/etc/bash.bashrc' to '/etc/bash.bashrc.NOUSE': Permission denied"

Wenn ich den Befehl ohne sudo eingebe, bekomme ich die gleiche Fehlermeldung wie oben, nur ohne den "lfs is not in the sudoers[...]" Fehler.

Jetzt habe ich halt das Problem, dass ich so nicht weiterkomme. Habe schonmal ein bisschen gegoogelt, aber da stand nur, ich solle mal die Besitzer meiner Verzeichnisse prüfen. Die sind aber alle auf den erstellten LFS-Benutzer gesetzt.

Als root kann ich mich in dem erstellten LFS-System nicht anmelden, da er dann ein Passwort verlangt, obwohl ich für root eigentlich kein spezielles Passwort festgelegt habe. Das Passwort vom LFS-Benutzer funktioniert hier auch nicht, da ich dann den Fehler "Authentication failure" bekomme.

Weiß jemand, was ich da tun kann und wie ich den LFS-Benutzer in die "sudoer file" integrieren kann, falls das notwendig ist? Oder wie kann ich da weitermachen? Übersehe ich vielleicht auch etwas oder stelle ich mich doof an?
Habe nebenbei auch noch die Videoreihe, die der YouTuber "marcus-s" mal darüber gemacht hat, laufen, um mir das nebenbei ein bisschen anzuschauen und es besser zu verstehen, was ich dort tue. Lese aber trotzdem weiterhin immer meine Buchversion, die ich von der LFS-Webseite habe durch und führe die Befehle von dort aus, da er eine ältere Version nutzt. Und da ist zum Beispiel diese Info von oben noch gar nicht enthalten, die Videos helfen mir da also nicht weiter.

Hoffentlich kann mir jemand von euch helfen.
 
Hast du einfach mal nur Return gedrückt bei der Passwortabfrage des root-Benutzers? Ansonsten einfach ein Live-Linux booten dann kann man die Dateien bearbeiten.
 
Ja, habe ich schon probiert. Führt leider zum selben Fehler. Wenn ich versuche, mit "su - root" mich als Root anzumelden (ich hoffe, das ist der richtige Weg), dann fragt er nach einem Passwort für root, welches ich aber nie festgelegt habe.

Brauche ich dafür wirklich ein Live Linux? Bin ja momentan über mein Host System im Terminal in meinem LFS System als der LFS-User eingeloggt.
Ergänzung ()

Wie kann man denn den User zur sudoers File hinzufügen?
 
ComputerMilo schrieb:
"lfs is not in the sudoers file. This incident will be reported.
Die Meldung besagt eigentlich genau das was das Problem ist.
Der Benutzer lfs ist nicht dazu berechtigt sudo zu benutzen.

Um Sudo zu benutzen musst du entweder Mitglied einer Benutzergruppe sein, welche Sudo-Berechtigungen hat, oder dein Benutzer muss explizit in der Datei /etc/sudoers eingetragen sein.

Sowas wird normalerweise bei der Installation angelegt/erfragt.

In Arch reicht es den Benutzer zur Gruppe Wheel hinzuzufügen und den Kommentar aus der Zeile
Bash:
# %wheel ALL=(ALL:ALL) ALL
in der Datei /etc/sudoers zu entfernen.
Alternativ den Benutzer zur Gruppe sudo hinzuzufügen und den entsprechenden Kommentar entfernen.
Dazu benötigst du jedoch eben root-Berechtigungen. Solltest du dich als Root nicht anmelden können, bleibt dir nur der Umweg über eine Livecd oder die Neuinstallation.
Ergänzung ()

Ich möchte an dieser Stelle dir nur etwas zu Bedenken geben. Du versuchst dich daran mit Hilfe von LFS eine eigene Distribution zu erstellen, aber scheinst ehrlich gesagt nicht ausreichend KnowHow über Linux zu besitzen um solch ein Vorhaben durchzuziehen.

Man kann dabei unheimlich viel über Linux lernen und zugleich extrem viel Frust sammeln. Wäre evtl an der Stelle ein System wie Arch oder vielleicht Gentoo das einfachere?
Bei beiden kannst du sehr viel über Linux lernen und hast dabei zugleich den Zugriff auf die distributionseigenen Foren wo sehr viel dokumentiert ist.
 
Zuletzt bearbeitet:
"als root" und "mit sudo" sind zwei Paar Stiefel

sudo greift bei if then [ ] < > || && und der gleichen nicht

sudo ist eine Krücke wenn du tiefer gehen willst freunde dich mit der Benutzung echter Root Shell an...!
 
Yaakoss schrieb:
Die Meldung besagt eigentlich genau das was das Problem ist.
Der Benutzer lfs ist nicht dazu berechtigt sudo zu benutzen.

Um Sudo zu benutzen musst du entweder Mitglied einer Benutzergruppe sein, welche Sudo-Berechtigungen hat, oder dein Benutzer muss explizit in der Datei /etc/sudoers eingetragen sein.
Okay, muss ich das in meinem Hostsystem machen?

Überlege gerade, ob ich das Problem jetzt erkannt habe. Ich suche die ganze Zeit die sudoers File auf meiner LFS-Partition, aber kann es sein, dass die vom Hostsystem gemeint ist und da der Benutzer lfs noch nicht als sudo berechtigt eingetragen ist?
Ergänzung ()

Yaakoss schrieb:
Ich möchte an dieser Stelle dir nur etwas zu Bedenken geben. Du versuchst dich daran mit Hilfe von LFS eine eigene Distribution zu erstellen, aber scheinst ehrlich gesagt nicht ausreichend KnowHow über Linux zu besitzen um solch ein Vorhaben durchzuziehen.

Man kann dabei unheimlich viel über Linux lernen und zugleich extrem viel Frust sammeln. Wäre evtl an der Stelle ein System wie Arch oder vielleicht Gentoo das einfachere?
Bei beiden kannst du sehr viel über Linux lernen und hast dabei zugleich den Zugriff auf die distributionseigenen Foren wo sehr viel dokumentiert ist.
Ja, das stimmt. Habe noch nicht viel Ahnung von Linux, aber möchte gerade dadurch das lernen und am Ende halt auch eine eigene Distro vorliegen haben, an der ich dann weiterarbeiten kann. Deswegen bringen mir Arch und Gentoo nicht so viel. Da kann ich zwar vielleicht auch viel lernen, aber habe halt am Ende keine eigene Distro. Und das ist neben dem Erlernen von Linux halt ein weiteres meiner Ziele.
 
Zuletzt bearbeitet:
Wenn du kein Root User (Passwort) hast und auch nicht z.B: per init=/bin/bash o.ä. Boot parameter bekommen kannst. Und auch kein anderer Weg eine Root Shell (sudo, ssh, ...), dann bleibt dir nur Live CD / Chroot mit rootrechten der Live Umgebung, und von dort als allererstes mal Root PW zu setzen per 'passwd'. Oder eben /etc/sudoers wenn es dabei bleiben soll ...

Ein Normaler User kann von sich aus sudo nicht einfach so installieren oder freigeben wäre ja witzlos sonst.

LFS durch klicken ist keine "eigene Distro" aber natürlich eine Lernerfahrung. Würde ich heute nicht mehr auf Bare Metal machen sondern in einer VM da ist der Frust Level nicht so hoch. Kann natürlich auch gerade zum Lernerfolg führen wenn man mit der Kiste sonst nicht anfangen kann

LFS bei mir sehr, sehr, sehr lange her ... heute würde mir die Geduld da zu fehlen

Man kann bei Gentoo, Arch auch ins Build System rein schauen und sich einzelne Pakete vornehmen ohne den ganzen Abhängigkeiten Orbit
 
Habe jetzt mal den LFS-User in meinem Hostsystem in die sudoers Liste eingetragen. Jetzt bekomme ich zumindest schon mal nicht mehr den Fehler, dass der nicht in der sudoers Liste ist. Allerdings habe ich jetzt den nächsten Fehler. Wenn ich dort das Sudo Passwort eingebe (denke mal, dass ist mein sudo Passwort vom Host System), dann sagt er zu mir "Sorry, try again".

Mache ich da was falsch? Muss das Sudo-Passwort da ein anderes sein?
Ergänzung ()

Ah, okay, jetzt habe ich's raus. Das Passwort für den LFS-User bei sudo einzugeben, war schon richtig. Habe jetzt mal versucht, den Befehl über meinen "normalen" Benutzeraccount auszuführen und bekomme da auch folgende Fehlermeldung:
"mv: cannot move '/etc/bash.bashrc' to '/etc/bash.bashrc.NOUSE': Permission denied"

Er scheint mir also den Zugriff auf die Systemeigene .bashrc zu verweigern. LFS empfiehlt ja hier, dass ich die verschieben soll, damit sie nicht mit dem LFS kollidiert. Ist das denn wirklich notwendig und sollte ich das machen? Oder kann ich das auch einfach überspringen?

Und wie kann ich denn hier den Zugriff auf die .bashrc bekommen?
 
Zuletzt bearbeitet:
kieleich schrieb:
sudo greift bei if then [ ] < > || && und der gleichen nicht

du brauchst also || sudo mv ... anstelle statt sudo [ ! -e ...
 
  • Gefällt mir
Reaktionen: Marco01_809
Was kekst Du hier mit sudo und sudoers rum? Du hast doch initial das root PW vergeben, oder? Einfach als root einloggen und Datei verschieben ohne sudo, fertig.
 
ComputerMilo schrieb:
Habe noch nicht viel Ahnung von Linux, aber möchte gerade dadurch das lernen und am Ende halt auch eine eigene Distro vorliegen haben, an der ich dann weiterarbeiten kann.
Ich finde es grundsätzlich ok, Linux in "the hard way" zu lernen. Rechne aber nicht damit, am Schluss ein System zu haben, was genauso ist, wie Du es willst. Du wirst das noch mehr mals durchlaufen, bist Du bestimmte Dinge verstanden hast usw. was ein ganz normaler Prozess ist.
Die ersten Installationen sind also eher so eine Art Übungsläufe, um überhaupt zu verstehen. Deshalb ist es auch nicht dramatisch, wenn man zu Anfang Dinge auslässt oder nicht perfekt sind. Den Anspruch sollte man sich nicht stellen, da er sowieso nicht einlösbar ist.

Oder ums kurz zu machen:
ComputerMilo schrieb:
Oder kann ich das auch einfach überspringen?
Du kannst es auch erst mal überspringen.

ComputerMilo schrieb:
obwohl ich für root eigentlich kein spezielles Passwort festgelegt habe.
Was heißt das eigentlich konkret? GIbts denn den User root überhaupt?
Er müsste ja dann in der /etc/passwd und /etc/shadow auftauchen.
Wenn ich mich recht erinnere, war das bei LFS so, das man erst das Grundsystem aufbaut und dann rein-chroot-ed. Da muss natürlich alles da sein inkl. dem Root-User (und damit auch Root-Passwort). Dann kannst Du innerhalb des frischen LFS-Systems mit
su -
root werden. Um sudo würde ich mich erst später kümmern, weiß aber nicht, was die Anleitung da vor sieht.
 
Code:
sudo su
passwd
sollte das Problem lösen.

Ein Diskussion über die Sinnhaftigkeit von sudo fang ich jetzt nicht wieder an.
 
Wäre auch mal gut zu wissen, ob sudo jetzt funktioniert oder nicht. Irgendwie bin ich mir da nicht sicher oder wir reden etwas aneinander vorbei.
Wenn sudo funktioniert dann kannst Du einfach mit sudo -i in der Konsole root werden (oder alternativ den sudo-Befehl vor das gewünschte Kommando stellen) und dann darfst Du auch in /etc/ herumhantieren.
 
Habe das Problem jetzt anders gelöst. Das was der Befehl machen soll, wenn ich das richtig verstanden habe, ist ja die Datei, die in meinem Dateisystem liegt, von bash.bashrc in bash.bashrc.NOUSE umzubenennen. Das habe ich jetzt so gelöst, dass ich einen Dateimanager mit root-Rechten gestartet habe und die Datei dort einfach so umbenannt habe. Das hat funktioniert.
 
ComputerMilo schrieb:
Das habe ich jetzt so gelöst, dass ich einen Dateimanager mit root-Rechten gestartet habe
Bist du Dir wirklich sicher, dass du ein LFS willst?

Generell würde ich nicht bei einem LFS nicht mit sudo anfangen, so oft, wie du da eine Root-Konsole brauchst.

Ich hab vor 20 Jahren auch mal mit dem Gedanken gespielt, ein LFS zu installieren. Ein komplettes Systemupdate dürfte locker 1 Woche dauern, oder gibt's da mittlerweile auch einen Paketmanager? (Nein, gibt's nicht.)

Bei Gentoo gab's früher mal eine Stage-1-Installation, bei der man auch die Toolchain (Binutils, GCC, Glibc) über ein Chroot recompiliert hat, bevor man dann den Rest des Basissystems installiert hat.

Im Grunde genommen ist Gentoo damit auch ein LFS mit der Erleichterung, dass es halt einen Paketmanager gibt und Dir die Compile-Optionen über die USE-Flags abgenommen werden.
 
Zuletzt bearbeitet:
Pummeluff schrieb:
Ich hab vor 20 Jahren auch mal mit dem Gedanken gespielt, ein LFS zu installieren.
Ich war vor 20 Jahren weniger schlau und hab das tatsächlich gemacht. Genutzt wurde es als HTPC auf Basis von VDR. Hab ich was gelernt? Ja, und zwar wie viel Arbeit "zu Fuß" einem jede normale Distribution abnimmt. Ein simples Update von VDR hatte damals wegen der Abhängigkeitshölle teilweise mehrstündige kompilier-Sessions zur Folge. Nie wieder!
 
VDR musste ich auch trotz Verwendung von Gentoo außerhalb des Portage patchen und compilieren, da die Versionen im Portage fast immer veraltet waren. Irgendwann bin ich dann auf TV Headend umgestiegen.

Mittlerweile läuft TV Headend auf meinem NAS unter Debian. Manuell compilieren muss ich es trotzdem, weil es für ARM kein fertiges Deb gibt.
 
Zurück
Oben