Вопрос

я использую Домашний Для потребностей моего порта (кажется немного «чище», чем Macports).

Я могу установить без sudoing (что здорово), но для этого, кажется, требуется этап, связанный с человеком (/usr/local/share/man/man3 принадлежит root).
А руководство Я обнаружил, что я рекурсивно chown /usr/local при выполнении

sudo chown -R `whoami` /usr/local

Это безопасно ... или это плохая идея ™?

Кроме того: мои разрешения правильны?

$ pwd
/usr/local/share/man
$ ls -lah
total 32
drwxrwxr-x    8 root  staff   272B  4 Set 11:02 .
drwxrwxr-x    9 root  staff   306B 10 Set 11:27 ..
drwxr-xr-x    3 root  wheel   102B  4 Ago  2009 de
drwxrwxr-x  163 root  staff   5,4K 10 Set 11:27 man1
drwxr-xr-x   11 root  wheel   374B 10 Set 11:27 man3
drwxr-xr-x    7 ago   staff   238B 10 Set 11:39 man5
drwxr-xr-x   11 ago   staff   374B 10 Set 11:39 man7
-rw-r--r--    1 root  staff    13K  4 Set 11:02 whatis
Это было полезно?

Решение

Обычно лучше сохранять разрешения максимально строгими. Сохранение /usr/local принадлежит root означает, что только процессы, которые работают как root/sudo (или попросить пользователя администратора через диалоговое окно Apple Authorization) может написать в эту область. Таким образом, загрузка процесса должна запрашивать пароль, прежде чем повредить там файлы.

Но, как вы говорите, это затрудняет добавление новых программ.

Я в порядке с бегом sudo, поскольку вы устанавливаете вещи реже, чем запуск их, но вы должны верить, что процесс сборки не меняет ничего, что должен.

Если вы хотите избежать Sudo, я бы установил Homebrew в ~/usr/local и измените свой путь, манпат и т. Д., Чтобы включить каталоги под руководством.

Лучший способ - создать другого пользователя - скажем, homebrew и создать каталог, принадлежащий этому пользователю. Затем установите там, используя sudo -U homebrew. Анкет Другие пользователи будут иметь преимущество в том, что не смогут перезаписать какие -либо другие файлы, потому что они не работают как root и другие программы не могут повлиять на домашний завод. (Я отмечаю, что Homebrew FAQ предлагает этого нового пользователя, если вы находитесь в «многопользовательской среде». Я бы сказал, что любая машина Unix, включая MacOS, является многопользовательской средой)

Однако, как говорит домашний вики, рецепты не находят все случаи /usr/local и замените их выбранным каталогом, я подозреваю, что мы застряли /usr/local.

Другие советы

Я тоже использую Homebrew и могу подтвердить, что он совершенно безопасен. Цитируя Монтаж Страница на официальном Homebrew FAQ:

Сделайте себе одолжение и выберите /usr/local

  1. Это легче
    /usr/local/bin уже в вашем PATH.

  2. Это легче
    Тонны сценариев сборки ломаются, если их зависимости нет ни в USR, ни /usr /local. Мы фиксируем это для домашних формул (хотя мы не всегда тестируем это), но вы обнаружите, что много рубинков и сценариев настройки Python, что является чем -то вне нашего контроля.

  3. Это безопасно
    Apple соответствовала POSIX и оставила этот каталог для нас. Что означает, что нет /usr/local Справочник по умолчанию, поэтому нет необходимости беспокоиться о том, чтобы испортить существующие инструменты.

Если вы планируете установить драгоценные камни, которые зависят от варева, сохраните себе кучу хлопот и установите на /usr/local!

Не тривиально сказать Gem смотреть в нестандартные каталоги для заголовков и Dylibs. Если вы выберете /usr/local, все «просто работает!»

Я просто добавлю это Делать что -то как root - очень плохая идея, так chownпоступок /usr/local Мало того, что мне кажется разумным (это не системный режим на OSX), но и в своем уме.

Ваши разрешения не верны (пока). Просто запустите указанную вами команду, и все будет в порядке.

Если у вас есть другие проблемы, помните, brew doctor могу помочь тебе!

Если вы используете Homebrew, вы должны дать разрешение на запись конкретной группе (либо admin или же staff), поэтому файлы могут быть переданы между пользователями, которые находятся в этой группе.

Например:

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

Затем назначьте пользователям, которые должны иметь доступ к brew командовать этой группе (проверьте свои группы через: id -Gn).

Затем при работе с brew, не запускайте это с sudo.

Когда все еще возникает проблема с разрешением, запустите brew doctor Чтобы устранить проблему.

Для того, что это стоит, /usr/local не считается папкой «системы» от OS X, а на новой установке Snow Leopard эта папка пуста.

Любой материал, принадлежащий корню в этой папке, является результатом sudo make install на другом программном обеспечении или предоставлении пароля после дважды щелчка на .pkg который хочет сбросить вещи в /usr/local.

Владение /usr/local «работал на меня» на 2 машинах более года.

Одним из них является то, что если вы установили MySQL (не используя HomeBrew) и поставили свои файлы, то, вероятно, он больше не сможет увидеть свои базы данных (так что вам придется отбросить их обратно к тому, что MySQL работает как пользователь MySQL как ..

Как в домашнем заводе 1.0.0:

Homebrew больше не нужно иметь право собственности на /usr /local. Если вы хотите, чтобы вы могли вернуться /usr /local до его владения по умолчанию с: sudo Chown root: wheel /usr /local

Я думаю, что для пользователей нормально иметь Напишите разрешения к /usr/local - В конце концов, это означает, что вы не используете sudo на каждом сценарии сборки. Мне не нравится идея обычного пользователя владение /usr/local. Анкет Я бы предпочел иметь собственную корневую (или подобную) /usr/local, но измените разрешения, чтобы пользователи (или, по крайней мере, какую -то привилегированную группу) могли написать в него. Это кажется концептуально правильным подходом.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с apple.stackexchange
scroll top