Homebrew-Berechtigungen und mehrere Benutzer, die das Brauen aktualisieren müssen

Ich verwende Homebrew , um Paketinstallationen auf Lion zu verwalten (Lion Server eigentlich, aber das sollte keine Rolle spielen) .

Homebrew wurde unter einem Benutzer installiert. Jetzt möchte ein anderer Benutzer ein Paket hinzufügen und Homebrew ist nicht glücklich:

$ brew update
fatal: Unable to create '/usr/local/.git/index.lock': Permission denied
Error: Failure while executing: git checkout -q master

Wird das als schlecht empfunden? Ich dachte, einer der Vorteile der Verwendung /usr/local/für Ihre Installationen wäre, dass Sie sudo. Aber klar tun wir das.

Alle Benutzer, die Homebrew ändern müssten, sind Mitglieder der Admin -Gruppe. Ich könnte also chmod -R g+w /usr/local/befürchten, dass dies etwas bork oder Sicherheitsprobleme schafft?!?

Rat?

$ ls -al /usr/local/.git/
total 432
drwxr-xr-x  14 ladmin  admin     476 Feb 24 11:48 .
drwxrwxr-x  14 root    admin     476 Feb  9 15:27 ..
-rw-r--r--   1 ladmin  admin      94 Feb 24 11:48 FETCH_HEAD
-rw-r--r--   1 ladmin  admin      23 Feb 24 11:48 HEAD
-rw-r--r--   1 ladmin  admin      41 Feb  9 15:28 ORIG_HEAD
drwxr-xr-x   2 ladmin  admin      68 Feb  9 15:27 branches
-rw-r--r--   1 ladmin  admin     218 Feb  9 15:27 config
-rw-r--r--   1 ladmin  admin      73 Feb  9 15:27 description
drwxr-xr-x  12 ladmin  admin     408 Feb  9 15:27 hooks
-rw-r--r--   1 ladmin  admin  200272 Feb 24 11:48 index
drwxr-xr-x   3 ladmin  admin     102 Feb  9 15:27 info
drwxr-xr-x   4 ladmin  admin     136 Feb  9 15:27 logs
drwxr-xr-x   4 ladmin  admin     136 Feb  9 15:27 objects
drwxr-xr-x   5 ladmin  admin     170 Feb  9 15:27 refs

Antworten (5)

Wird das als schlecht empfunden? Ich dachte, einer der Vorteile der Verwendung von /usr/local/ für Ihre Installationen wäre, dass Sie sudo nicht benötigen. Aber klar tun wir das.

Homebrew richtet sich standardmäßig für den Einzelbenutzerzugriff auf /usr/local. Sie müssen also die Berechtigungen für den Verzeichnisbaum öffnen, damit er von mehr als einer Person verwaltet werden kann.

Die Leute müssen sudo hier nicht ausführen, um Homebrew zu verwalten. Sie müssen nur einige Berechtigungen ändern. Da Sie bereits haben:

Alle Benutzer, die Homebrew ändern müssten, sind Mitglieder der Admin-Gruppe.

Sie müssen noch zwei Dinge tun:

  1. Stellen Sie sicher, dass alles darunter /usr/localzur Gruppe gehört admin; und
  2. Stellen Sie sicher, dass jeder aus der Gruppe adminunter schreiben kann /usr/local.

In diesem Fall sind die Änderungen vorzunehmen:

chgrp -R admin /usr/local
chmod -R g+w /usr/local
chgrp -R admin /Library/Caches/Homebrew
chmod -R g+w /Library/Caches/Homebrew

Und jeder Benutzer aus der adminGruppe sollte in der Lage sein, die Homebrew-Installation auf dem Computer zu verwalten. Wenn Sie der Admin-Gruppe einen Benutzer hinzufügen müssen, können Sie dies wie folgt tun:

 dseditgroup -o edit -a <username> -t user admin

(Dieser Benutzer muss sich erneut anmelden, um die Berechtigungen zu erhalten).

Aus Gründen der Gesundheit auf dem Computer sollten Sie in Betracht ziehen , einen eigenen Fork von Homebrew zu erstellen und Ihr lokales Homebrew-Git-Repository auf den lokalen Fork verweisen zu lassen. Auf diese Weise können Sie Homebrew für Ihre Umgebung anpassen und die Versionen von Paketen steuern, die Benutzer mit dem brewBefehl installieren können. Wenn mehrere Personen Installationen durchführen, könnten Sie auf Versionsprobleme oder Abhängigkeitsprobleme stoßen.

Ich habe das gleiche Problem und habe den Gruppenbesitz und die Gruppenberechtigungen wie vorgeschlagen geändert. brew doctorbeschwert sich immer noch, dass zB /usr/local/includenicht beschreibbar ist, obwohl ich manuell überprüfen kann, ob ich hier in eine Datei schreiben kann (zB mit echo "hello" > /usr/local/include/testfile). Ich bin Mitglied der Admin-Gruppe. Irgendwelche Ideen zum Debuggen?
Diese Lösung hat bei mir funktioniert, adressiert jedoch nicht den lokalen Cache von Homebrew. Ich schlage auch vor zu laufen:chmod -R g+w /Library/Caches/Homebrew
Sieht so aus, als hätte Homebrew den Cache jetzt in das Verzeichnis des aktuellen Benutzers verschoben. Gerade gesehen: ==> Migration von /Library/Caches/Homebrew nach /Users/bluechain.admin/Library/Caches/Homebrew... bei einem Brew-Update. Wenn ich das richtig interpretiere, bedeutet dies, dass wir uns keine Sorgen mehr um ein global beschreibbares Cache-Verzeichnis für Homebrew machen müssen.
Für High Sierra-Benutzer mit diesem Problem müssen Sie jetzt Folgendes verwenden: sudo chown -R $(whoami) $(brew --prefix)/*anstelle der obigen Befehle. Habe es von hier
Werden g+wNeuinstallationen standardmäßig auch eine Berechtigung haben? Muss ich diese Befehle immer wieder ausführen?

Sie können Homebrew-Berechtigungen für mehr als einen Benutzer über die Admin-Gruppe oder über jede andere Benutzergruppe aktivieren. Hier ist ein leicht erweitertes Rezept, um dies zu konfigurieren:

Die Gruppe muss das lokale Homebrew-Installationsverzeichnis verwalten. Weisen Sie also /usr/local der Admin -Gruppe (oder Ihrer bevorzugten Gruppe) zu und aktivieren Sie die Schreibberechtigungen der Gruppe:

chgrp -R admin /usr/local
chmod -R g+w /usr/local

Die Gruppe benötigt auch Berechtigungen für den lokalen Cache von Homebrew für Formeln und Quelldateien unter /Library/Caches/Homebrew :

chgrp -R admin /Library/Caches/Homebrew
chmod -R g+w /Library/Caches/Homebrew

Wenn Sie bei der Verwendung von Homebrew von mehreren Konten auf weitere ähnliche Berechtigungsprobleme stoßen, notieren Sie den anstößigen Pfad und erwägen Sie, denselben Ansatz zu versuchen.

Leif Hanack hat eine ähnliche Lösung gebloggt , wo er für diesen Zweck eine eigene Benutzergruppe erstellt und konfiguriert .

--Update 2015-08-20

Ich habe diese Antwort kürzlich erneut verwendet, um ein Gastkonto mit Homebrew-Zugriff einzurichten. Um Cask vom zweiten Administratorkonto aus zu verwenden, musste ich auch die folgenden Befehle ausführen:

chgrp -R admin /opt/homebrew-cask
chmod -R g+w /opt/homebrew-cask

Ich wollte gerade die akzeptierte Antwort kommentieren (aber ich habe noch nicht den Ruf dafür.)

Als Benutzer von Caskroom.io würde ich außerdem empfehlen, Folgendes hinzuzufügen:

sudo chown -R admin /opt/homebrew-cask
sudo chmod -R g+w /opt/homebrew-cask
sudo chmod -R g+w  /Library/Caches/Homebrew/

da cask, eine äußerst nützliche Erweiterung für Homebrew, alle seine Dateien einfügt/opt/homebrew-cask

Mit /optich schätze du meinst /usr/local? Da /optdies bei neueren OS X-Installationen nicht der Fall ist, selbst nach einer Homebrew-Installation.
Im Juni 2016 hat Homebrew-Cask (eine Brauereierweiterung) den Standardspeicherort für seinen Caskroom-Ordner nach /usr/local(oder genauer gesagt $(brew --prefix)) von verschoben, /opt/homebrew-casksodass diese Antwort jetzt umstritten ist, aber gültig war, als sie geschrieben wurde. Siehe Verschieben des Standard-Caskroom-Standorts #21603

Sie müssen dem Pfad eine Berechtigung erteilen. Führen Sie dies in der Befehlszeile aus und Sie können loslegen. Bei mir hat es funktioniert:

sudo chown -R $USER /usr/local

Ich würde für das Festlegen der Gruppenberechtigung stimmen - und meiner Meinung nach ist es genau das, wofür es da ist und sollte kein Sicherheitsproblem verursachen.

  • Verwenden Sie nicht sudo.

tl;dr Sudo ist gefährlich, und Sie haben TextMate.app sowieso ohne sudo installiert.

Homebrew ist so konzipiert, dass es ohne die Verwendung von sudo funktioniert. Sie können sich entscheiden, es zu verwenden, aber wir raten dringend davon ab. Wenn Sie sudo verwendet haben und auf einen Fehler gestoßen sind, ist dies wahrscheinlich die Ursache. Bitte reichen Sie keinen Fehlerbericht ein, es sei denn, Sie können ihn reproduzieren, nachdem Sie Homebrew von Grund auf neu installiert haben, ohne sudo zu verwenden.

Ihr Rat wäre also sudo chmod -R g+w /usr/local/?
Ja, aber vielleicht möchten Sie eine zweite Meinung einholen, indem Sie eine der folgenden verwenden: IRC (irc://irc.freenode.net/#machomebrew) ; Mailingliste (homebrew@librelist.com) ; Twitter ( twitter.com/machomebrew )