Apple представила защиту целостности системы , также известную как «без корневых», с OS X 10.11, El Capitan. Я понимаю, что это шаг к общей защите от вредоносных программ, но как разработчик мне нужен доступ на запись к некоторым файлам, которые он блокирует.
Как отключить эту защиту?
Ответы:
Документация Apple включает в себя отключение SIP, О защите целостности системы на вашем Mac и Настройка защиты целостности системы .
В статье на lifehacker.com перечислены эти шаги:
Вы можете проверить, ограничен ли файл или папка, введя эту
ls
команду, используя заглавную O (а не ноль 0), чтобы изменить флаг длинного листинга:Ищите ограниченный текст, чтобы указать, где применяется SIP.
По умолчанию (= SIP включен) следующие папки ограничены (см. Страницу поддержки Apple ):
... и следующие папки бесплатны:
источник
ls -lO /usr/local
не помечены как ограниченные. Я также похудела/usr/local/
рекурсивно. Но я продолжаю видеть, что root вступает во владение/usr/local/bin
и/usr/local/share
что влияет на доморощенный. Это тоже работа SIP?/usr/local
это не ограничено, вы можете легко исправить любые разрешения «ниже» этого каталога. Homebrew на самом деле рекомендует запуститьsudo chown -R $(whoami) /usr/local
(при входе в систему как администратор), чтобы исправить проблемы с разрешениями./usr/local
теперь права доступа установлены правильно.Можно отключить SIP, загрузившись в Recovery HD и выполнив следующую команду:
Также возможно включить защиту SIP и выборочно отключить ее аспекты, добавив один или несколько флагов в
csrutil enable
команду. Все требуют загрузки из Recovery, чтобы установить их:Включить SIP и разрешить установку неподписанных расширений ядра
Включить SIP и отключить защиту файловой системы
Включить SIP и отключить ограничения отладки
Включить SIP и отключить ограничения DTrace
Включить SIP и отключить ограничения на запись в NVRAM
У меня также есть пост с дополнительной информацией о SIP:
Защита целостности системы - добавление еще одного уровня в модель безопасности Apple
источник
csrutil: failed to modify system integrity configuration. This tool needs to be executed from the Recovery OS.
Если цель состоит в том, чтобы просто отключить защиту целостности системы, то загрузка в раздел Recovery HD, как ранее рекомендовано в других ответах здесь, через Command+ rпри загрузке, не самый быстрый способ сделать это.
Вы можете сочетать однопользовательскую загрузку с загрузкой HD восстановления в недокументированной комбинации клавиш запуска:
Это приведет вас к минимальной минимальной среде, которая необходима для этого напрямую .
источник
Было бы безопаснее изменить,
/etc/paths
так что/usr/local/bin
это просто раньшеusr/bin
. Таким образом, вы можете выполнять свою работу по разработке/usr/local/bin
без отключения SIP.Чистые установки ОС упорядочены
/etc/paths
таким образом со времен El Capitan, но если вы обновляете ОС с Yosemite или более ранней версии, вам придется изменить порядок путей вручную.источник
usr/bin
. Поскольку SIP предотвращает это сейчас, необходимо установить программыusr/local/bin
, которые не ограничены SIP. Ставя наusr/local/bin
первое место, пользователи могут запускать программы без необходимости указывать абсолютный путь к программе. Имеет ли это смысл? Вы смущены чем-то другим?/usr/bin
... но я думаю, что я должен был спросить: "Как этот ответ на вопрос OP?" Первоначально я предполагал, что это каким-то образом произошло , и что я просто не устанавливал связь. Но сейчас я очень сомневаюсь, что это имеет какое-либо отношение.Если вам нужен только доступ к / usr / local, взгляните на эту страницу: https://github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/El_Capitan_and_Homebrew.md
Идея состоит в том, чтобы временно отключить SIP с помощью
csrutil disable
, добавить/usr/local
, использовать chflags, чтобы установить этот каталог без ограниченийи затем повторно включите SIP, используя
csrutil enable
.Если
/usr/local
на момент вашего обновления уже существует, то даже вышеперечисленное не является необходимым. Вы можете просто запуститьисточник
Read-only file system
Если вы не можете войти в раздел восстановления для запуска
csrutil disable
(чтобы отключить SIP ), попробуйте установить параметры загрузки с помощьюnvram
команды, напримерОднако, если у вас есть следующая ошибка:
тогда это не сработает. Вам по-прежнему нужно загрузить его восстановления / безопасный режим.
Видеть:
источник
nvram: Error setting variable - 'boot-args': (iokit/common) not permitted
У меня недостаточно репутации, чтобы добавить это в качестве комментария к ссылке на github Homebrew 404 выше. У Wayback Machine все еще есть это:
http://web.archive.org/web/20160117204214/https://github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/El_Capitan_and_Homebrew.md
источник