Как Homebrew больше не нужно владеть / usr / local?

28

Сегодня я запустил brew updateи после переноса хранилища сообщил, что он больше не нуждается в владении /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

Это изменение кажется немного сомнительным. Как brew выполняет это новое поведение, по-видимому, обходя контроль безопасности?

Джейсон Р. Кумбс
источник
Какие меры безопасности это обход? /usr/localНе входит в SIP. См. Раздел « Защита целостности системы на вашем Mac» в разделе «Пути и приложения, которые сторонние приложения и установщики могут написать для включения:» /usr/local.
user3439894 19.09.16
3
Тем не менее, я не являюсь пользователем Homebrew, так как я компилирую непосредственно из исходного кода нужные мне утилиты, которые не включены в OS X, тем не менее я представляю, что Homebrew был переписан по мере необходимости / необходимости для нормальной работы, как в других приложениях. сделано в прошлом. IMO Homebrew должен был быть написан с самого начала, чтобы не иметь права узурпировать владение корнем с самого начала!
user3439894 19.09.16
Я имею в виду, что если /usr/localи его дочерние элементы принадлежат root:adminили root:wheelне являются доступными для записи в группе, то у меня нет доступа для записи в эти каталоги (и ни один из них не является доморощенным, предположительно), но если это так, как Homebrew может управлять установкой и удаление приложений из этих мест?
Джейсон Р. Кумбс
3
Я просто замечаю, что в сообщении только ссылки, /usr/localа не его потомки. И, глядя на то, что делает совершенно новая установка homebrew, он устанавливает все подкаталоги, которые будут принадлежать $ USER и группе с возможностью записи.
Джейсон Р. Кумбс

Ответы:

19

Согласно этому сценарию ruby: update-report.rb , они только что переместили материал в / usr / local / Homebrew, который все еще принадлежит вам.

albb
источник
2
Разве / usr / local должен быть доступен для записи $ USER для создания / usr / local / Homebrew? А как насчет других каталогов, таких как / usr / local / Cellar или / usr / local / opt? Разве homebrew все еще не нужен (не sudo) доступ для записи в эти каталоги? Как это может сделать это, если каталоги принадлежат пользователю root и не доступны для записи в группе?
Джейсон Р. Кумбс
1
При первой установке они все еще используют sudo для создания репозитория homebrew, см. Install . Скрипт в моем ответе на обновление, на тот момент у вас все еще есть / usr / local, который вы использовали в старой версии.
Альб
6

Теперь мы создаем все корневые каталоги, /usr/localкоторые вам нужны, и проверяем владение ими, а не запрашиваем их /usr/localсами.

Майк Маккуэйд
источник