Я пытаюсь переместить что-то в / usr / bin на OS X El Capitan. Я отключил rootless с помощью следующих команд:, sudo nvram boot-args="rootless=0"; sudo reboot
но я продолжаю получать ту же ошибку:
MacBook-Air:~ Mark$ sudo cp class-dump /usr/bin
Password:
cp: /usr/bin/class-dump: Operation not permitted
MacBook-Air:~ Mark$ sudo mv class-dump /usr/bin
mv: rename class-dump to /usr/bin/class-dump: Operation not permitted
macos
osx-elcapitan
Марк Бурк
источник
источник
Ответы:
Nvm. Если у вас есть другие проблемы, вам нужно перезагрузить Mac и нажать ⌘ + R при загрузке. Затем перейдите в Утилиты> Терминал и введите следующие команды:
Это результат защиты целостности системы. Больше информации здесь .
РЕДАКТИРОВАТЬ
Если вы знаете, что делаете, и привыкли к запуску Linux, вам следует использовать вышеупомянутое решение, так как многие ограничения SIP являются полной болью в заднице.
Однако, если вы являетесь носильщиком / noob / "poweruser" и не знаете, что делаете, это может быть очень опасно, и вам лучше воспользоваться ответом ниже .
источник
csrutil enable; reboot
. Команда не работает в обычном режиме, к сожалению.Правильное решение - скопировать или установить на
/usr/local/bin
нет./usr/bin
Это связано с защитой целостности системы (SIP) . SIP делает/usr/bin
доступным только для чтения, но оставляет/usr/local
как чтение-запись.SIP не следует отключать, как указано в ответе выше, поскольку он добавляет еще один уровень защиты от вредоносных программ, получающих root-доступ. Вот полное объяснение того, что делает SIP и почему это полезно.
Как предложено в этом ответе, не следует отключать SIP (режим без root): «Не рекомендуется отключать режим без root! Лучше всего устанавливать пользовательские компоненты только в« / usr / local »».
источник
java
на/usr/local/bin/java
мои псевдонимы bashrc после того, как я сделал соответствующую ссылку в этой папке, как подсказывает этот ответ.rm
чему-либо/usr/bin/
? Я понимаю, что SIP имеет свое назначение, но хочу удалить один конкретный исполняемый файл./usr/local/bin
путь, и openssl 1.0.2n правильно обозначен символом,/usr/local/bin/openssl
но каждый раз, когда я делаюwhich openssl
это, он все еще показывает,/usr/bin/openssl
какаяOpenSSL 0.9.8zh 14 Jan 2016
версия является более старой . Как мне заставить мою систему отдавать предпочтение/usr/local/bin/openssl
одной над другой?Если вы хотите взять под контроль
/usr/bin/
Вам нужно будет перезагрузить вашу систему:
Сразу после звука загрузки, нажмите и удерживайте Command-R для загрузки в систему восстановления
Нажмите меню Утилиты и выберите Терминал
Наберите csrutil disable и нажмите возврат
Нажмите меню и выберите «Перезагрузить»
После внесения изменений обязательно включите SIP! Это многое делает для защиты вашей системы. (Те же шаги, что и выше, за исключением типа: csrutil enable)
источник
Если после вызова «csrutil disabled» ваша команда по-прежнему не работает, попробуйте в терминале «sudo», например:
И это должно работать.
источник