Expertus metuit
Параноидальная установка homebrew
2013-11-16 22:44

Homebrew — клёвая штука, однако она крайне небезопасная в обычном режиме установки — файлы ставятся в каталог /usr/local с правами текущего пользователя, поэтому, если в систему пролезет зловред, он легко сможет изменить очень важные для безопасности файлы в этом каталоге. В homebrew faq очень не советуют ставить brew через sudo, однако там неявно имеется в виду установка с правами суперюзера. Так действительно жить нельзя, поэтому пойдём другим путём — выделим для brew отдельного юзера и отдельную группу, и все операции по установке будем проводить через него.

Весь дальнейший текст подразумевает, что вы пользуетесь операционной системой Mac OS X версии 10.14 Mojave, в других версиях всё может несколько отличаться. Все команды набираются в терминале руками.

Сначала коротко о процессе:

  • создать пользователя и группу с именем brew;
  • устанавливаем brew по инструкции с официального сайта;
  • меняем владельца всех файлов в каталоге /usr/local на brew.

Я предполагаю, что у вас каталог /usr/local пустой. Если это не так, то вам придётся менять владельца каталогов и файлов вручную по одному. Список создаваемых каталогов покажет инсталятор brew.

Итоговая цель: активный пользователь не должен иметь прав на запись в каталог /usr/local.

Возможные последствия

Традиционное предупреждение: вы всё делаете на свой страх и риск, я ничего не гарантирую и ничего не обещаю, все совпадения с реальными лицами случайны и так далее.

Вы должны чётко понимать, как работает команда sudo и что означают её аргументы -u и -i.

Пользователи и группы

Создаём пользователя, группу, пермиссии, каталоги итп через терминал:

sudo dscl . create /Groups/brew
sudo dscl . create /Groups/brew gid 2000
sudo dscl . create /Users/brew
sudo dscl . create /Users/brew gid 2000
sudo dscl . create /Users/brew UniqueID 2000
sudo dscl . create /Users/brew UserShell /bin/bash
sudo mkdir /Users/brew
sudo chown brew:brew /Users/brew
sudo dscl . create /Users/brew NFSHomeDirectory /Users/brew
sudo dscl . append /Groups/brew GroupMembership brew

Пароль для пользователя brew не задаём, так как мы не будем им пользоваться для логина.

Идентификатор 2000 выбран как почти гарантированно ещё не существующий.

Установка homebrew

Вначале необходимо поставить инструменты из xcode (они нужны для сборки пакетов):

/usr/bin/xcode-select --install

Дальше устанавливаем homebrew как указано на официальном сайте https://brew.sh/. Всё это делаем из терминала с правами стандартного пользователя.

Завершение установки

Меняем владельца на только что созданные каталоги:

sudo chown -R brew:brew /usr/local/*

Всё! Теперь процесс работы с brew будет выглядеть примерно так:

sudo -u brew brew update
sudo -u brew brew install wget

Или из shell-сессии пользователя brew:

sudo -u brew -i
brew install wget

Если в процессе выполнения команд этой инструкции у вас возникли проблемы, оставьте комментарий к статье, разберёмся.

Комментарии

Текст комментария (разметка: *курсив*, **полужирная**, [ссылка](http://example.com) или <http://example.com> ещё)
Имя (обязательно, 50 символов или меньше)
Опциональный email, на который получать ответы (не будет опубликован)
Веб-сайт
© 2006—2019 Sergey Stolyarov | Работает на Pyrone