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
Если в процессе выполнения команд этой инструкции у вас возникли проблемы, оставьте комментарий к статье, разберёмся.