Мои разрешения для/usr/local/правильно?
-
16-10-2019 - |
Вопрос
я использую Домашний Для потребностей моего порта (кажется немного «чище», чем Macports).
Я могу установить без sudo
ing (что здорово), но для этого, кажется, требуется этап, связанный с человеком (/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
Это легче
/usr/local/bin
уже в вашемPATH
.Это легче
Тонны сценариев сборки ломаются, если их зависимости нет ни в USR, ни /usr /local. Мы фиксируем это для домашних формул (хотя мы не всегда тестируем это), но вы обнаружите, что много рубинков и сценариев настройки Python, что является чем -то вне нашего контроля.- Это безопасно
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
, но измените разрешения, чтобы пользователи (или, по крайней мере, какую -то привилегированную группу) могли написать в него. Это кажется концептуально правильным подходом.