W jaki sposób Homebrew nie potrzebuje już własności / usr / local?

27

Dzisiaj uruchomiłem brew updatei po migracji repozytorium zgłosiło, że nie potrzebuje już własności /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

Ta zmiana wydaje się nieco wątpliwa. W jaki sposób brew osiąga to nowe zachowanie, najwyraźniej omijając kontrole bezpieczeństwa?

Jason R. Coombs
źródło
Jakie zabezpieczenia omija? Nie /usr/localjest uwzględnione w SIP. Zobacz Informacje o ochronie integralności systemu na komputerze Mac w sekcji „Ścieżki i aplikacje, które aplikacje i instalatorzy innych firm mogą pisać w celu włączenia:” /usr/local.
user3439894
3
To powiedziawszy, nie będąc użytkownikiem Homebrew, ponieważ kompiluję bezpośrednio z kodu źródłowego potrzebne narzędzia, które nie są zawarte w systemie OS X, niemniej jednak wyobrażam sobie, że Homebrew został przepisany w razie potrzeby / niezbędny do działania normalnie, tak jak inne aplikacje zrobione w przeszłości. IMO Homebrew powinno być napisane od samego początku, aby nie musieć przejmować własności roota na początek!
user3439894
To znaczy, jeśli /usr/locali jej dzieci są własnością root:adminOr root:wheeli nie są grupy zapisywalny, to nie mam dostępu do zapisu do tych katalogów (i nie będzie homebrew, prawdopodobnie), ale czy to przypadek, w jaki sposób można zarządzać instalacji Homebrew i usuwanie aplikacji z tych lokalizacji?
Jason R. Coombs
3
Zauważam tylko, że wiadomość zawiera tylko odniesienia, /usr/locala nie jej dekantery. Patrząc na to, co robi nowa instalacja homebrew, ustawia wszystkie podkatalogi, których właścicielem jest $ USER, i możliwość zapisu grupowego.
Jason R. Coombs

Odpowiedzi:

19

Zgodnie z tym skryptem ruby: update-report.rb , właśnie przenieśli rzeczy do / usr / local / Homebrew, który nadal jest twoją własnością.

alb
źródło
2
Czy / usr / local nie musi być zapisywalny przez $ USER, aby można było utworzyć / usr / local / Homebrew? Co z innymi katalogami, takimi jak / usr / local / Cellar lub / usr / local / opt? Czy homebrew nadal nie potrzebuje (nie sudo) dostępu do zapisu w tych katalogach? Jak to zrobić, jeśli katalogi są własnością root i nie można ich zapisywać w grupach?
Jason R. Coombs
1
Przy pierwszej instalacji nadal używają sudo do tworzenia repozytorium homebrew, patrz instalacja . Skrypt w mojej odpowiedzi na aktualizację, w tym momencie nadal jesteś właścicielem / usr / local, który zmieniłeś w starej wersji.
albb
6

Teraz tworzymy wszystkie katalogi główne /usr/local, których potrzebujesz, i sprawdzamy na nich własność, a nie wymagamy jej od /usr/localsiebie.

Mike McQuaid
źródło