Доморощенные разрешения и несколько пользователей, нуждающихся в обновлении


79

Я использую Homebrew для управления установкой пакетов на Lion (на самом деле Lion Server, но это не должно иметь значения) .

Homebrew был установлен под одним пользователем. Теперь другой пользователь хотел бы добавить пакет, и Homebrew не рад:

$ brew update
fatal: Unable to create '/usr/local/.git/index.lock': Permission denied
Error: Failure while executing: git checkout -q master

Это считается плохим? Я думал, что одним из преимуществ использования /usr/local/ваших установок является то, что вам не нужно sudo. Но ясно, что мы делаем.

Все пользователи, которым необходимо изменить Homebrew, являются членами группы администраторов . Так что я мог бы, chmod -R g+w /usr/local/но боялся, что это что-то испортит или создаст проблемы безопасности?!?

Совет?

$ ls -al /usr/local/.git/
total 432
drwxr-xr-x  14 ladmin  admin     476 Feb 24 11:48 .
drwxrwxr-x  14 root    admin     476 Feb  9 15:27 ..
-rw-r--r--   1 ladmin  admin      94 Feb 24 11:48 FETCH_HEAD
-rw-r--r--   1 ladmin  admin      23 Feb 24 11:48 HEAD
-rw-r--r--   1 ladmin  admin      41 Feb  9 15:28 ORIG_HEAD
drwxr-xr-x   2 ladmin  admin      68 Feb  9 15:27 branches
-rw-r--r--   1 ladmin  admin     218 Feb  9 15:27 config
-rw-r--r--   1 ladmin  admin      73 Feb  9 15:27 description
drwxr-xr-x  12 ladmin  admin     408 Feb  9 15:27 hooks
-rw-r--r--   1 ladmin  admin  200272 Feb 24 11:48 index
drwxr-xr-x   3 ladmin  admin     102 Feb  9 15:27 info
drwxr-xr-x   4 ladmin  admin     136 Feb  9 15:27 logs
drwxr-xr-x   4 ladmin  admin     136 Feb  9 15:27 objects
drwxr-xr-x   5 ladmin  admin     170 Feb  9 15:27 refs

Ответы:


100

Это считается плохим? Я подумал, что одним из преимуществ использования / usr / local / для ваших установок является то, что вам не нужен sudo. Но ясно, что мы делаем.

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

Людям не нужно запускать sudo здесь, чтобы управлять домашним пивом. Вам просто нужно изменить некоторые разрешения. Поскольку у вас уже есть:

Все пользователи, которым необходимо изменить Homebrew, являются членами группы администраторов.

Вам нужно сделать еще две вещи:

  1. Убедитесь, что все /usr/localпринадлежит группе admin; а также
  2. Убедитесь, что кто-либо из группы adminможет написать что-нибудь под /usr/local.

В этом случае необходимо внести следующие изменения:

chgrp -R admin /usr/local
chmod -R g+w /usr/local
chgrp -R admin /Library/Caches/Homebrew
chmod -R g+w /Library/Caches/Homebrew

И любой пользователь из adminгруппы должен иметь возможность управлять установкой доморощенного кофе на машине. Если вам нужно добавить пользователя в группу администраторов, это можно сделать так:

 dseditgroup -o edit -a <username> -t user admin

(этот пользователь должен будет снова войти в систему, чтобы получить предоставленные привилегии).

Для здравомыслия на машине, вы можете подумать о создании своего собственного форка Homebrew и сделать так, чтобы ваш локальный репозиторий homebrew git указывал на локальный форк. Это позволяет вам настроить Homebrew для вашей среды и управлять версиями пакетов, которые люди могут установить с помощью brewкоманды. Если несколько человек делают установку, вы можете столкнуться с проблемами версий или зависимостей.


1
У меня та же проблема, и я изменил владельца группы и разрешения группы, как было предложено. brew doctorдо сих пор жалуется, что, например /usr/local/include, не для записи, хотя я вручную могу проверить, что я могу записать в файл здесь (например, с помощью echo "hello" > /usr/local/include/testfile). Я являюсь членом группы администраторов. Есть идеи по отладке?
мгг

2
Это решение сработало для меня, но оно не касается локального кэша Homebrew. Я также предлагаю запустить:chmod -R g+w /Library/Caches/Homebrew
Дрю Дара-Абрамс

Я нашел запись в блоге на нем blog.strug.de/2012/06/my-homebrew-multi-user-setup и адаптировал скрипт из этого raw.githubusercontent.com/steshaw/shelly/master/bin/…
Стивен Шоу

2
Похоже, что Homebrew теперь переместил кеш в каталог текущего пользователя. Просто увидел: ==> Миграция / Библиотека / Кэши / Homebrew в /Users/bluechain.admin/Library/Caches/Homebrew ... при выполнении обновления brew. Если я правильно интерпретирую это, это означает, что нам больше не нужно беспокоиться о том, чтобы иметь глобально записываемый кэш-каталог для Homebrew.
Endareth

Для пользователей High Sierra с этой проблемой вам теперь нужно использовать это: sudo chown -R $(whoami) $(brew --prefix)/*вместо команд выше. Получил это отсюда
Джефф Краненбург

7

Вы можете включить доморощенные разрешения для более чем одного пользователя через группу администраторов или через любую другую группу пользователей. Вот немного расширенный рецепт для настройки этого:

Группа должна администрировать локальный каталог установки homebrew. Поэтому назначьте / usr / local для группы администраторов (или вашей предпочтительной группы) и включите права на запись группы:

chgrp -R admin /usr/local
chmod -R g+w /usr/local

Группе также нужны разрешения для локального кэша формул и исходных файлов homebrew по адресу / Library / Caches / Homebrew :

chgrp -R admin /Library/Caches/Homebrew
chmod -R g+w /Library/Caches/Homebrew

Если вы столкнетесь с подобными проблемами с разрешениями при использовании homebrew из нескольких учетных записей, обратите внимание на неправильный путь и попробуйте тот же подход.

Лейф Hanack имеет в блоге на подобное решение , в котором он создает и настраивает специальную группу пользователей отвар для этой цели.

- Обновление 2015-08-20

Недавно я снова использовал этот ответ, чтобы настроить гостевую учетную запись с доморощенным доступом. Чтобы использовать Cask со второй учетной записи администратора, мне также пришлось выполнить следующие команды:

chgrp -R admin /opt/homebrew-cask
chmod -R g+w /opt/homebrew-cask

4

Я просто собирался прокомментировать принятый ответ (но пока не имею репутации).

Как пользователь Caskroom.io , я бы также рекомендовал добавить:

sudo chown -R admin /opt/homebrew-cask
sudo chmod -R g+w /opt/homebrew-cask
sudo chmod -R g+w  /Library/Caches/Homebrew/

поскольку cask, чрезвычайно полезное расширение для homebrew, помещает все свои файлы в /opt/homebrew-cask


1
По /optя думаю , вы имеете в виду /usr/local? Как /optне существует в последних установках OS X, даже после установки homebrew.
Квадрат

В июне 2016 года Homebrew-Cask (расширение brew) переместил местоположение по умолчанию для своей папки Caskroom в /usr/local(или, точнее, $(brew --prefix)из), /opt/homebrew-caskпоэтому этот ответ теперь является спорным, но был действительным, когда он был написан. См. « Перемещение по умолчанию», местоположение в казной комнате № 21603
Дзен,

1

Вам нужно дать разрешение на путь. запустите это в командной строке, и вы будете в порядке. Это сработало для меня:

sudo chown -R $ USER / usr / local


0

Я бы проголосовал за установление разрешения группы - и мне кажется, что это именно то, для чего оно существует, и не должно создавать проблем с безопасностью.

  • Не используйте sudo.

tl; dr Sudo опасен, и вы все равно установили TextMate.app без sudo.

Доморощенный предназначен для работы без использования sudo. Вы можете решить использовать его, но мы настоятельно рекомендуем не делать этого. Если вы использовали sudo и столкнулись с ошибкой, то это, вероятно, является причиной. Пожалуйста, не отправляйте отчет об ошибке, если вы не можете воспроизвести его после переустановки Homebrew с нуля без использования sudo.


Итак, ваш совет будет sudo chmod -R g+w /usr/local/?
Мелтеми

Да, но вы можете запросить второе мнение, используя один из них: IRC (irc: //irc.freenode.net/#machomebrew); Список рассылки (homebrew@librelist.com); Twitter ( twitter.com/machomebrew )
iolsmit
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.