Я использую HomeBrew для своих портов (кажется, немного «чище», чем MacPorts).
Я могу установить без sudo
ING (что замечательно), но, похоже, что этап связывания man этого требует ( /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
sudo chown -R :admin /usr/local
. Таким образом, он будет работать одинаково для любого администратора системы. Хотя вам также может потребоваться запустить,sudo find /usr/local -perm -200 -exec chmod g+w '{}' \+
чтобы убедиться, что у группы такой же доступ на запись, как и у пользователя.Ответы:
Как правило, лучше придерживаться максимально строгих разрешений. Хранение в
/usr/local
собственностиroot
означает, что только процессы, которые запускаются какroot
/sudo
(или запрашивают пользователя с правами администратора через диалоговое окно авторизации Apple), могут писать в эту область. Таким образом, процесс загрузки должен запросить у вас пароль, прежде чем испортить там файлы.Но, как вы говорите, это затрудняет добавление новых программ.
Я в порядке с запуском
sudo
, так как вы устанавливаете вещи реже, чем запускаете, но вы должны верить, что процесс сборки ничего не меняет.Если вы хотите избежать sudo, я бы установил Homebrew
~/usr/local
и изменил ваш путь, manpath и т. Д., Чтобы включить в него каталоги.Лучший способ - создать другого пользователя, скажем,
homebrew
и создать каталог, принадлежащий этому пользователю. Затем установите там, используяsudo -U homebrew
. Другие пользователи будут иметь преимущество в том, что не смогут перезаписывать какие-либо другие файлы, потому что они не работают, аroot
другие программы не могут повлиять на домашний напиток. (Я отмечаю, что FAQ по Homebrew действительно предлагает этого нового пользователя, если вы находитесь в «многопользовательской среде». Я бы сказал, что любая машина Unix, включая macOS, является многопользовательской средой)Однако, как говорит вики Homebrew, рецепты не находят все случаи
/usr/local
и заменяют их выбранным каталогом, я подозреваю, что мы застряли/usr/local
.источник
$PATH
и$MANPATH
включение пользовательских каталогов. Если установленные программы не требуют общесистемной установки, это гораздо лучшая альтернатива.brew doctor
(предложено ниже) сказало мне, что мне нужно только разделить каталоги общего человека ... достаточно безопасно для меня.Я тоже использую Homebrew и могу подтвердить, что это абсолютно безопасно. Цитирование страницы установки на официальном FAQ по Homebrew :
Я просто добавить , что делает вещи , как корень очень плохая идея , так
chown
ING/usr/local
не только кажется разумным мне (это не системный каталог на OSX), но в здравом уме .Ваши разрешения не верны (пока). Просто запустите команду, которую вы перечислили, и все будет в порядке.
Если у вас есть другие проблемы, помните,
brew doctor
может помочь вам!источник
brew doctor
это просто потрясающе.Если вы используете Homebrew, вы должны дать разрешение на запись определенной группе (либо,
admin
либоstaff
), чтобы файлы могли быть переданы пользователям, входящим в эту группу.Например:
Затем назначьте пользователей, которые должны иметь доступ к
brew
команде для этой группы (проверьте ваши группы через:)id -Gn
.Тогда при работе с
brew
не запускайте егоsudo
.Если проблема не
brew doctor
устранена , запустите ее для устранения проблемы.источник
su myAdminUser
, а затем все работает, как задумано. Но, конечно, это решение не обеспечит никакой безопасности людям, которые все равно уже работают с правами администратора.Несмотря на то, что он стоит,
/usr/local
он не считается "системной" папкой в OS X, а в новой установке Snow Leopard эта папка пуста.Любой материал, принадлежащий пользователю root, в этой папке является результатом использования
sudo make install
другого программного обеспечения или предоставления вашего пароля после двойного щелчка мышью на объекте, в.pkg
который требуется сбросить данные/usr/local
.Владение
/usr/local
"работал на меня" на 2 машины более года.Одна проблема заключается в том, что если вы установили MySQL (не используя Homebrew) и сократили его файлы, то он, вероятно, больше не сможет видеть свои базы данных (так что вам придется перетаскивать их обратно тому пользователю, под которым работает MySQL). .)
источник
/usr/local/bin
оно все равно находится в$PATH
значении по умолчанию , и все, что вы там поместите, может быть использовано и другими пользователями, и ему следует доверять . Если весь/usr/local/
каталог имеет те же разрешения, которые в/usr/local/share/man
настоящее время имеют настройки OP, любой может пойти и изменить любой двоичный файл с помощью скрипта, который это делаетrm -rf ~
./usr/local
должны быть в порядке. (Но вы, вероятно, в любом случае используете Postgres. :))Как и в Homebrew 1.0.0:
источник
brew update
, которое все еще требует владения/usr/local
. Я постараюсь восстановить разрешения позже.Я думаю, что для пользователей нормально иметь права на запись
/usr/local
- в конце концов, это означает, что вы не используете ихsudo
в каждом сценарии сборки. Мне не нравится идея владения обычного пользователя/usr/local
. Я бы предпочел иметь/usr/local
права root (или аналогичные) , но изменить разрешения, чтобы пользователи (или, по крайней мере, некоторые привилегированные группы) могли писать в него. Это похоже на концептуально правильный подход.источник
/usr/local/bin
для большинства пользователей вполне может быть начало $ PATH. Создание каталога, доступного для записи, открывает множество пробелов в безопасности.sudo
, либо вы предоставляете некоторым пользователям права на запись/usr/local
. Я возьму третий как наименее рискованный ... если вы не знаете лучшего пути.~/brew
или что-то подобное. Проблема, однако, в том, что в отличие от Ruby, который довольно/usr/local
/usr/local
не доступна для записи в мире: скорее, у меня есть доверенная группаhomebrew
(не только администратор), у которой есть права на запись в нее (расширенные права, такие как0: group:homebrew allow add_file,delete,add_subdirectory,delete_child,file_inherit,directory_inherit
полностью рок). Это лучший компромисс, который мне удалось выяснить: нетsudo
сценариев сборки, но есть некоторый контроль над ними/usr/local
./usr/local
). Делая много трала на SO и других сайтах, видя аргументы: перемещать Homebrew в домашнюю папку пользователя или хранить/usr/local
, менять владельца и / или группу/usr/local
или нет, и так далее ... трудно сказать, есть ли универсально приемлемое решение. У вас есть запись в блоге или статья по этому вопросу, или вы могли бы дать более глубокое объяснение где-нибудь?