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