Sudo не может создать файл в / usr / bin в El Capitan

14

Я обновился до El Capitan вчера, и все было хорошо до недавнего времени, когда я заметил, что ничего не могу написать (с sudo ofc) в / usr / bin, когда пытался установить phpbrew.

Что может быть причиной этого и как его устранить?

введите описание изображения здесь

Sushil
источник
OS X El Capitan не имеет root-прав. Эту функцию можно отключить в разделе восстановления.
fd0

Ответы:

17

Начиная с OSX 10.11, Apple усилила систему безопасности. Вызывается защита целостности системы , Apple блокирует:

/System
/sbin
/usr (with the exception of /usr/local subdirectory)

Чтобы отключить эту функцию безопасности, вы должны перезагрузить компьютер и удерживать CMD+Rпри запуске, чтобы загрузиться в режиме восстановления OS X.

потом OS X Utilities > Terminal

Введите команду csrutil disable; reboot

Ваш компьютер перезагрузится. Вы увидите подтверждающее сообщение о деактивации.

Для проверки статуса типа CRS csrutil status

Рагнар
источник
1
Я отключил, и это все еще не позволяет мне делать что-либо:/Users/Rob$ csrutil status System Integrity Protection status: disabled. /Users/Rob$ touch /usr/bin/yes touch: /usr/bin/yes: Permission denied
Роберто
Попробуй с sudo.
Рагнар
В большинстве случаев лучше установить локальные настройки в / usr / local (например, / usr / local / bin, а не / bin или / usr / bin). Вот для чего это, и это имело место в течение долгого времени. Если возможно, я бы порекомендовал следовать этим рекомендациям, а не отключать SIP. Если вам действительно необходимо внести изменения в ограниченном месте, лучше отключить SIP, внести изменения, а затем немедленно повторно включить SIP с помощью csrutil enable(в режиме восстановления).
Гордон Дэвиссон
3

Как упомянул Рагнар , /usrкаталог заблокирован системой, за исключением /usr/local. Затем, если ваш сценарий позволяет, я бы рекомендовал добавить символическую ссылку на /usr/local/bin. Если у вас нет строгих требований по использованию /usr/bin, это один из способов обойти ошибку «Операция не разрешена».

Густаво Штраубе
источник
2

Можно проверить, ограничен ли конкретный файл или каталог Системной защитой целостности OSX (SIP) / Rootless, перечислив флаги файлов, используя -Oопцию ls (например, чтобы увидеть, какие каталоги в / ограничены):

ls -Ol /

Каталоги или файлы, которыми управляет SIP, отображаются как «ограниченные».

Там есть полная информация в ответах на этот вопрос о SIP / без root.

Пирз
источник