Неможливо створити символьне посилання всередині / usr / bin навіть як sudo


101

Коли я намагаюся символізувати бінарне в папці / usr / bin, я отримую помилку "Операція не дозволена":

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

Навіть як судо, я отримую цю помилку.


Який ваш 1.OS 2.Розподіл 3. Файлова система, будь ласка?
Rany Albeg Wein

Mac OSX El Capitan 10.11.4
egidra

1
Ви спробували таке: stackoverflow.com/questions/32659348/… ?
Rany Albeg Wein

Відповіді:


156

Чому я не можу ввести посилання /usr/bin?

Нова функція захисту системної цілісності El Capitan запобігає змінам у декількох основних частинах OS X, включаючи більшість /usr/, навіть під коренем.

Як я можу додати виконавчі файли на свій шлях?

/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 має більш детальну інформацію про це: що насправді є безкріпним у El-Captain? .


16

Я створив символічне посилання для 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" обмежений.


7

Перезавантаження системи -> довге натискання CMD + R . виберіть у меню утиліт термінал введіть наступну команду csrutil відключити закрити термінал і перезапустити систему.


9
Це вимикає захист цілісності системи. Напевно, найкраще знайти інше, більш безпечне рішення.
MattSidor

9
Особисто я вважаю, що це правильне рішення. Я не бачу причин для того, щоб ОС заважала мені пов'язувати речі в цьому каталозі чи будь-якому каталозі як sudo.
rjhilgefort

0
  1. Create a symbolic link to psql in usr/bin (for mac only)
         command: sudo ln -s /Applications/Postgres.app/Contents/Versions/latest/bin/psql /usr/bin/psql 

якщо ви не зможете створити символічне посилання через видачу дозволу, це буде через "csrutil". Після відключення csrutil ви можете створити символічне посилання. Вимкніть CSRUtill, виконайте наступні дії:

Перезавантажте Mac. Перед запуском OS X утримуйте Command-R і утримуйте його, поки не з’явиться значок Apple і панель прогресу. Відпустіть. Це завантажує вас у Recovery. У меню Утиліти (на верхній панелі) виберіть Термінал. У запиті введіть наступне, а потім натисніть кнопку Return: csrutil disabled Terminal повинен відобразити повідомлення про те, що SIP вимкнено. У меню, виберіть Перезапустити.


-3

Спробуйте sudo suспочатку запустити, а потім запустити команду w / root.


2
Це не вирішить питання ОП. Проблема пов'язана із захистом цілісності системи в сучасних системах MacOS.
cgseller
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.