Wie braucht Homebrew nicht länger den Besitz von / usr / local?

28

Heute lief ich brew updateund nach der Migration des Repositorys wurde gemeldet, dass es nicht länger den Besitz von /usr/local:

$ brew update
Updated Homebrew from 5371359 to 13f08a2.
...
==> Migrating HOMEBREW_REPOSITORY (please wait)...
==> Migrated HOMEBREW_REPOSITORY to /usr/local/Homebrew!
Homebrew no longer needs to have ownership of /usr/local. If you wish you can
return /usr/local to its default ownership with:
  sudo chown root:wheel /usr/local

Diese Änderung scheint ein wenig zweifelhaft. Wie erreicht Brew dieses neue Verhalten, indem es anscheinend die Sicherheitskontrollen umgeht?

Jason R. Coombs
quelle
Welche Sicherheitskontrollen werden umgangen? Das /usr/localist im SIP nicht enthalten. Weitere Informationen finden Sie unter Informationen zum Systemintegritätsschutz auf Ihrem Mac unter "Pfade und Anwendungen, in die Apps und Installationsprogramme von Drittanbietern schreiben können:" /usr/local.
user3439894
3
Das heißt, ich bin kein Benutzer von Homebrew, da ich die gewünschten Dienstprogramme, die nicht in OS X enthalten sind , direkt aus dem Quellcode kompiliere. Dennoch würde ich mir vorstellen, dass Homebrew nach Bedarf neu geschrieben wurde, um normal zu funktionieren, wie andere Apps in der Vergangenheit getan. IMO Homebrew sollte von Anfang an geschrieben worden sein, um nicht gleich den Root-Besitz an sich reißen zu müssen!
user3439894
Ich meine, wenn /usr/localund seine Kinder Eigentum von root:adminoder sind root:wheelund nicht gruppenbeschreibbar, dann habe ich keinen Zugriff auf diese Verzeichnisse (und vermutlich auch nicht auf Homebrew), aber wenn dies der Fall ist, wie kann Homebrew die Installation verwalten und Entfernen von Anwendungen von diesen Standorten?
Jason R. Coombs
3
Mir ist nur /usr/localaufgefallen , dass die Nachricht nur Verweise enthält und keine Nachkommen. Und wenn man sich ansieht, was eine brandneue Homebrew-Installation bewirkt, werden alle Unterverzeichnisse so festgelegt, dass sie im Besitz von $ USER sind und für Gruppen beschreibbar sind.
Jason R. Coombs

Antworten:

19

Laut diesem Ruby-Skript: update-report.rb , haben sie gerade etwas nach / usr / local / Homebrew verschoben, das immer noch in Ihrem Besitz ist.

albb
quelle
2
Muss / usr / local nicht von $ USER beschreibbar sein, damit / usr / local / Homebrew erstellt werden kann? Was ist mit anderen Verzeichnissen wie / usr / local / Cellar oder / usr / local / opt? Benötigt Homebrew keinen (nicht-sudo) Zugang, um in diese Verzeichnisse zu schreiben? Wie kann das gemacht werden, wenn die Verzeichnisse root gehören und nicht gruppenbeschreibbar sind?
Jason R. Coombs
1
Bei der Erstinstallation verwenden sie immer noch sudo, um ein Homebrew-Repository zu erstellen (siehe Installation) . Das Skript in meiner Antwort zum Aktualisieren, zu diesem Zeitpunkt besitzt du noch / usr / local, das du in der alten Version gesehen hast.
Albb
6

Wir erstellen jetzt alle von /usr/localIhnen benötigten Root-Verzeichnisse und überprüfen deren Besitz, anstatt ihn für sich /usr/localselbst zu benötigen .

Mike McQuaid
quelle