Installieren von Homebrew nach dem Upgrade auf MacOS High Sierra

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 permittedWarnungen.

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?

Antworten (2)

Die Warnung am Ende teilt Ihnen mit, dass der rootBenutzer (standardmäßig mit der uid gekennzeichnet ) die Datei 0nicht mehr besitzt . /etc/sudoersDas ist schlecht. Irgendwann haben Sie dies vielleicht versehentlich geändert, vielleicht weil Sie sich bei einem Befehl vertippt haben. Die sudoersDatei gibt an, welche Benutzer und Gruppen auf Root-Berechtigungen eskalieren dürfen, indem sie einem Befehl ein vorangestelltes Anmeldepasswort voranstellen sudound ihr Anmeldepasswort eingeben.

Der chownBefehl, 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 sudoersDatei geändert haben, werden Sie wahrscheinlich nicht in der Lage sein, sudosich selbst aus Schwierigkeiten herauszuholen, da der sudoBefehl aus Sicherheitsgründen nicht ausgeführt wird, wenn die sudoersDatei, 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:

  1. Aktivieren Sie den Root-Benutzer gemäß den Anweisungen von Apple hier (im Abschnitt „Aktivieren oder Deaktivieren des Root-Benutzers“).
  2. Öffnen Sie Terminal und wechseln Sie zum Root-Benutzer, indem Sie su -das Passwort eingeben und eingeben, das Sie Ihrem Root-Benutzerkonto in Schritt 1 zugewiesen haben.
  3. 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
    
  4. Befolgen Sie erneut die Anweisungen in Schritt 1, deaktivieren Sie diesmal jedoch erneut den Root-Benutzer.

sudoSie sollten den Befehl jetzt wieder mit Ihrem regulären Admin-Benutzer verwenden können . sudo lsSie 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 sudoersDatei 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 sudoersDatei.

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 sudooder man chownzum 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.

https://github.com/Homebrew/brew/blob/664d0c67d5947605c914c4c56ebcfaa80cb6eca0/docs/Installation.md#untar-anywhere

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