it-swarm.com.ru

Невозможно создать символическую ссылку внутри / usr / bin даже как sudo

Когда я пытаюсь создать символическую ссылку на двоичный файл в моей папке/usr/bin, я получаю сообщение об ошибке Операция не разрешена:

 Sudo ln -s /usr/bin/python2.7 /usr/bin/python2
ln: /usr/bin/python2: Operation not permitted

Даже как Судо, я получаю эту ошибку.

59
egidra

Почему я не могу получить символическую ссылку на /usr/bin?

Новая функция El Capitan System Integrity Protection предотвращает изменения в нескольких основных частях OS X, включая большую часть /usr/, даже пользователем root.

Как я могу добавить исполняемые файлы в мой путь?

Вместо этого локальные настройки, такие как то, что вы делаете, принадлежат /usr/local. Путь /usr/local/bin не существует по умолчанию, но вы можете создать его и поместить в него пользовательские двоичные файлы (и символические ссылки):

Sudo mkdir -p /usr/local/bin
Sudo ln -s /usr/bin/python2.7 /usr/local/bin/python2

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

Отключение SIP

Также возможно отключить защиту целостности системы, но обычно лучше оставить ее включенной и выполнить настройку в более подходящих местах. Вопрос Apple Stack Exchange содержит более подробную информацию по этому вопросу: Что на самом деле является функцией Rootless в El-Captain? .

103
Gordon Davisson

Я создал символическую ссылку для Sublime Text 3 в Mac OS High Sierra как

Sudo ln -s /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl /usr/local/bin/

Я также пытался создать символическую ссылку в "/ usr/bin" и получал "Операция не разрешена".

Затем я создал символическую ссылку в "/ usr/local/bin" и ошибки не было. Символическая ссылка работает отлично. Просто убедитесь, что "/ usr/local/bin" находится в пути.

Таким образом, доступ к "/ usr/bin" ограничен.

6
Vineet Sharma

Перезагрузите систему -> долгое нажатие cmd + R. выберите терминал из меню утилит, введите следующую команду csrutil disable закрыть терминал и перезапустить систему.

3
James