In che modo Homebrew non ha più bisogno della proprietà di / usr / local?


28

Oggi ho corso brew updatee dopo aver migrato il repository, ha riferito che non aveva più bisogno della proprietà di /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

Questo cambiamento sembra un po 'dubbioso. In che modo la birra realizza questo nuovo comportamento, apparentemente aggirando i controlli di sicurezza?


Quali controlli di sicurezza sta bypassando? Non /usr/localè incluso in SIP. Vedere Informazioni sulla protezione dell'integrità del sistema sul Mac in "Percorsi e applicazioni che app e installatori di terze parti possono scrivere per includere:" /usr/localè elencato.
user3439894,

3
Detto questo, non essendo un utente di Homebrew, poiché compilo direttamente dal codice sorgente le utilità che desidero che non sono incluse in OS X, tuttavia immagino che Homebrew sia stato riscritto come necessario / necessario per agire normalmente come hanno fatto altre app fatto in passato. IMO Homebrew avrebbe dovuto essere scritto fin dall'inizio per non dover usurpare la proprietà di root per cominciare!
user3439894,

Voglio dire, se /usr/locale i suoi figli sono di proprietà di root:admino root:wheelnon sono scrivibili in gruppo, allora non ho accesso a scrivere in quelle directory (e nemmeno l'homebrew, presumibilmente), ma se è così, come può Homebrew gestire l'installazione e rimuovere le applicazioni da quelle posizioni?
Jason R. Coombs,

3
Sto solo notando che il messaggio fa solo riferimento /usr/locale non ai suoi discendenti. E guardando ciò che fa una nuova installazione homebrew, imposta tutti i sottodiretti di proprietà di $ USER e del gruppo scrivibile.
Jason R. Coombs,

Risposte:


19

Secondo questo script ruby: update-report.rb , hanno appena spostato le cose in / usr / local / Homebrew, che è ancora di tua proprietà.


2
/ Usr / local non deve essere scrivibile da $ USER per la creazione di / usr / local / Homebrew? Che dire di altre directory, come / usr / local / Cellar o / usr / local / opt? L'homebrew non ha ancora bisogno dell'accesso (non sudo) per scrivere in quelle directory? Come può farlo se le directory sono di proprietà di root e non scrivibili in gruppo?
Jason R. Coombs,

1
Alla prima installazione, usano ancora sudo per creare un repository homebrew, vedi install . Lo script nella mia risposta per l'aggiornamento, a quel punto possiedi ancora / usr / local che hai mostrato nella vecchia versione.
albb,

6

Ora creiamo tutte le directory di root di /usr/localcui hai bisogno e controlliamo la proprietà su di esse anziché richiederle su /usr/localse stesso.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.