Kürzlich habe ich auf MacOS High Sierra (10.13.4) aktualisiert. Nach dem Upgrade scheint mein Homebrew nicht mehr zu funktionieren. Also habe ich das Homebrew deinstalliert, indem ich den folgenden Befehl ausgeführt habe
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
Ich habe versucht, Homebrew erneut zu installieren, indem ich den folgenden Befehl ausgeführt habe
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Aber die Installation schlug mit dem hier besprochenen Fehler fehl .
Dann habe ich versucht, den Befehl wie im obigen Problem vorgeschlagen auszuführen.
sudo chown -R $USER:admin /usr/local
Aber es hat wegen des hier diskutierten Problems nicht funktioniert .
Ich habe den folgenden Befehl wie oben vorgeschlagen ausgeführt
sudo chown -R $(whoami) $(brew --prefix)/*
Es gab mir einige Operation not permitted
Warnungen.
Dann habe ich erneut versucht, Homebrew zu installieren. Jetzt zeigt es mir die folgenden Protokolle in der Konsole
...
==> Installation successful!
==> Homebrew has enabled anonymous aggregate user behaviour analytics.
Read the analytics documentation (and how to opt-out) here:
https://docs.brew.sh/Analytics.html
==> Next steps:
- Run `brew help` to get started
- Further documentation:
https://docs.brew.sh
sudo: /etc/sudoers is owned by uid 504, should be 0
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin
Kann mir jemand sagen, was die letzten Warnungen/Fehler bedeuten? Kann man diese ignorieren?
Die Warnung am Ende teilt Ihnen mit, dass der root
Benutzer (standardmäßig mit der uid gekennzeichnet ) die Datei 0
nicht mehr besitzt . /etc/sudoers
Das ist schlecht. Irgendwann haben Sie dies vielleicht versehentlich geändert, vielleicht weil Sie sich bei einem Befehl vertippt haben. Die sudoers
Datei gibt an, welche Benutzer und Gruppen auf Root-Berechtigungen eskalieren dürfen, indem sie einem Befehl ein vorangestelltes Anmeldepasswort voranstellen sudo
und ihr Anmeldepasswort eingeben.
Der chown
Befehl, den Sie oben verwendet haben, ändert den Besitz von Dateien von einem Benutzer und/oder einer Gruppe auf einen anderen. Da Sie den Eigentümer der sudoers
Datei geändert haben, werden Sie wahrscheinlich nicht in der Lage sein, sudo
sich selbst aus Schwierigkeiten herauszuholen, da der sudo
Befehl aus Sicherheitsgründen nicht ausgeführt wird, wenn die sudoers
Datei, aus der er seine Konfiguration bezieht, einem anderen Benutzer gehört als root
(dies ist warum Homebrew die letzte Fehlermeldung oben ausspuckt).
Ich würde folgendes vorschlagen:
su -
das Passwort eingeben und eingeben, das Sie Ihrem Root-Benutzerkonto in Schritt 1 zugewiesen haben.sudoers
Ändern Sie als Root-Benutzer wie folgt den Besitz der Datei zurück auf Root und die Wheel-Gruppe:
chown root:wheel /etc/passwd
Befolgen Sie erneut die Anweisungen in Schritt 1, deaktivieren Sie diesmal jedoch erneut den Root-Benutzer.
sudo
Sie sollten den Befehl jetzt wieder mit Ihrem regulären Admin-Benutzer verwenden können . sudo ls
Sie können zum Beispiel in einer neuen Shell laufen ; Wenn der Inhalt des aktuellen Verzeichnisses aufgelistet ist und Sie diesen Eigentumsfehler oben nicht sehen, ist alles in Ordnung.
Obwohl dies außerhalb der Grenzen Ihrer Frage liegt, befürchte ich, dass Sie, wenn Sie unwissentlich den Eigentümer der sudoers
Datei geändert haben, während Sie versuchten, den Eigentümer zu ändern, /usr/local/
dies möglicherweise auch für andere wichtige Dateien getan haben. Führen Sie ls -l /etc/
die Ausgabe dieses Befehls aus und untersuchen Sie sie. Die dritte Spalte von links zeigt den Benutzer, dem eine bestimmte Datei gehört. Standardmäßig /etc/
soll so ziemlich jede Datei im Verzeichnis root gehören (eine offensichtliche ist /etc/passwd
). Wenn Sie feststellen, dass die Mehrheit einem anderen Benutzer gehört (z. B. Ihrem eigenen Benutzernamen), ist das Problem weitaus umfangreicher als Ihre sudoers
Datei.
Generell müssen Sie bei der Ausführung von Befehlen mit vorangestelltem sehr vorsichtig sein sudo
. Führen Sie Befehle in Ihrem Terminal nur aus, wenn Sie den Befehl verstehen und genau wissen, was er tun wird, wenn ein bestimmter Satz von Optionen/Argumenten übergeben wird. Die neueren Mac-Betriebssysteme mit System Integrity Protection (SIP) bieten einige Sicherheitsvorkehrungen , aber Sie können immer noch viel Chaos auf Ihrem System anrichten.
Wenn Sie erfahren möchten, was ein bestimmter Befehl und seine verschiedenen Argumente tun, lesen Sie zuerst das Handbuch, indem Sie man
+ den Befehl eingeben, zu dem Sie Informationen wünschen ( man sudo
oder man chown
zum Beispiel).
Ich habe diesen Prozess gerade selbst durchlaufen. Der Installationsbefehl (etwas anders im Jahr 2021) auf der Homebrew-Site funktionierte aus demselben Grund nicht, den Sie gepostet haben.
Ich bin auf den gleichen vorgeschlagenen Befehl gestoßen
sudo chown -R $(whoami) $(brew --prefix)/*
Nachdem ich es ausgeführt hatte, fing ich an, Tonnen von Berechtigungsfehlern zu sehen, die protokolliert wurden. Ich brauchte etwa eine ganze Minute, um zu erkennen, was los war, und drückte Strg + C, und warum der vorgeschlagene Befehl eigentlich eine schlechte Idee für die Ersteinrichtung ist .
Da brew noch nicht installiert ist (nicht auf dem PATH), wird es $(brew --prefix)
als null/leer ausgewertet.
Mit anderen Worten sudo chown -R $(whoami) $(brew --prefix)/*
läuft eigentlich sudo chown -R $(whoami) /*
was schlecht.
Für alle anderen, die versuchen, die Einrichtung auf einem neuen Computer durchzuführen, musste ich am Ende Homebrew in meinem Benutzerverzeichnis einrichten, obwohl dies "nicht empfohlen" ist.
cd ~
mkdir homebrew && curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew
fügen Sie dann ~/homebrew/bin zu PATH hinzu