Homebrew-Berechtigungen und mehrere Benutzer, die ein Update erstellen müssen


79

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 angesehen? Ich dachte, einer der Vorteile der Verwendung /usr/local/für Ihre Installationen war, dass Sie nicht brauchen sudo. Aber klar machen wir das.

Alle Benutzer, die Homebrew ändern müssten, sind Mitglieder der Administratorgruppe . Also, ich könnte chmod -R g+w /usr/local/doch befürchten, dass dies etwas kaputt macht 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:


99

Wird das als schlecht angesehen? Ich dachte, einer der Vorteile von / usr / local / für Ihre Installationen ist, dass Sie kein sudo benötigen. Aber klar machen wir das.

Homebrew richtet sich standardmäßig für den Einzelbenutzerzugriff auf ein /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 hier nicht sudo ausführen, um Homebrew zu verwalten. Sie müssen nur einige Berechtigungen ändern. Da hast du schon:

Alle Benutzer, die Homebrew ändern müssten, sind Mitglieder der Administratorgruppe.

Sie müssen noch zwei Dinge tun:

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

In diesem Fall müssen folgende Änderungen vorgenommen werden:

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

Jeder Benutzer aus der adminGruppe sollte in der Lage sein, die Homebrew-Installation auf dem Computer zu verwalten. Wenn Sie der Administratorgruppe einen Benutzer hinzufügen müssen, können Sie dies folgendermaßen tun:

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

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

Aus Gründen der Sicherheit auf dem Computer sollten Sie eine eigene Gabelung für Homebrew erstellen und Ihr lokales Homebrew-Git-Repository auf die lokale Gabelung verweisen lassen. Auf diese Weise können Sie Homebrew an Ihre Umgebung anpassen und die Versionen von Paketen steuern, die mit dem brewBefehl installiert werden können . Wenn mehrere Personen Installationen durchführen, kann dies zu Versions- oder Abhängigkeitsproblemen führen.


1
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?
22.

2
Diese Lösung hat bei mir funktioniert, bezieht sich jedoch nicht auf den lokalen Cache von Homebrew. Ich schlage auch vor zu laufen:chmod -R g+w /Library/Caches/Homebrew
Drew Dara-Abrams


2
Es sieht so aus, als hätte Homebrew den Cache in das Verzeichnis des aktuellen Benutzers verschoben. Ich habe gerade gesehen: ==> Migration von / Library / Caches / Homebrew nach /Users/bluechain.admin/Library/Caches/Homebrew ..., als ich ein Brew-Update durchgeführt habe. Wenn ich das richtig interpretiere, bedeutet dies, dass wir uns keine Sorgen mehr machen müssen, dass ein global beschreibbares Cache-Verzeichnis für Homebrew vorhanden ist.
Endareth

Für High Sierra-Benutzer mit diesem Problem müssen Sie jetzt Folgendes verwenden: sudo chown -R $(whoami) $(brew --prefix)/*anstelle der obigen Befehle. Bekam es von hier
Jeff Kranenburg

7

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

Die Gruppe muss das lokale Homebrew-Installationsverzeichnis verwalten. So weisen Sie / usr / local zu Admin - Gruppe (oder Ihre bevorzugte Gruppe) und Gruppenschreibberechtigungen aktivieren:

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

Die Gruppe benötigt auch Berechtigungen für den lokalen Cache von Formeln und Quelldateien von Homebrew 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 aus auf weitere ähnliche Berechtigungsprobleme stoßen, notieren Sie sich den anstößigen Pfad und versuchen Sie den gleichen Ansatz.

Leif Hanack hat eine ähnliche Lösung gebloggt , bei der er ein dediziertes Benutzergruppen- Brew für diesen Zweck erstellt und konfiguriert .

- Aktualisierung 20.08.2015

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

4

Ich wollte nur die akzeptierte Antwort kommentieren (habe aber noch keinen 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/

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


1
Mit dem /optich denke , Sie bedeuten /usr/local? Wie /optbei den letzten OS X-Installationen nicht vorhanden, auch nach einer Homebrew-Installation.
Forquare

Im Juni 2016 hat Homebrew-Cask (eine Brew-Erweiterung) den Standardspeicherort für den Caskroom-Ordner auf /usr/local(oder genauer $(brew --prefix)) verschoben, /opt/homebrew-casksodass diese Antwort nicht mehr aktuell ist, aber gültig war, als sie geschrieben wurde. Siehe Standardspeicherort # 21603
Zen

1

Sie müssen dem Pfad die Erlaubnis geben. Führen Sie dies in der Befehlszeile aus, und Sie können loslegen. Es hat bei mir funktioniert:

sudo chown -R $ USER / usr / local


0

Ich würde dafür stimmen, die Gruppenberechtigung festzulegen - und für mich scheint das genau das, wofür es da ist und sollte kein Sicherheitsproblem verursachen.

  • Benutze kein sudo.

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

Homebrew funktioniert ohne sudo. Sie können sich dafür entscheiden, aber wir empfehlen dringend, dies nicht zu tun. 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 ohne sudo von Grund auf neu installiert haben.


Ihr Rat wäre also sudo chmod -R g+w /usr/local/?
Meltemi

Ja, aber Sie können eine zweite Meinung einholen, indem Sie eine der folgenden Angaben verwenden: IRC (irc: //irc.freenode.net/#machomebrew); Mailing-Liste (homebrew@librelist.com); Twitter ( twitter.com/machomebrew )
iolsmit
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.