"ограниченная" папка/файлы в OS X El Capitan

После обновления с OS X Yosemite до OS X El Capitan Developer Preview я попытался изменить /System/Library/LaunchDaemons/ssh.plist, чтобы изменить порт SSH по умолчанию на пользовательский. Это процесс, который я использую в течение нескольких лет.

Проблема в том, что El Capitan не позволяет мне что-либо менять в этой папке (даже с "sudo" ). Папка и ее файлы отмечены как "ограничено" , когда я перечисляю содержимое с помощью "ls -lO" . В том же списке каталогов в предыдущих версиях OS X не отображается "ограниченный".

Это что-то новое для OS X El Capitan? Как я могу редактировать файлы/папки "ограничено" ?


Я узнал, что это связано с новой функцией, представленной в El Capitan, называемой "SIP" (System Intregrity Protection).

Подробнее здесь: https://forums.developer.apple.com/thread/4731?q=SIP

К сожалению, никто не предлагал способ редактирования "ограниченных" файлов/папок без фактического отключения SIP.

Ответ 1

Вы также можете временно отключить SIP следующим образом.

  • перезагрузка
  • как только вы услышите "Звук Mac" на сером экране, нажмите Cmd + R, чтобы перейти в режим восстановления
  • Open Utilities- > Terminal
  • Запустите команду csrutil disable
  • Перезагрузитесь, вы приземлитесь в обычную ОС с отключенным SIP.
  • выполнить все изменения, которые вы хотите сделать
  • Перезагрузка снова
  • как только вы услышите "Звук Mac" на сером экране, нажмите Cmd + R, чтобы перейти в режим восстановления
  • Включить SIP с помощью csrutil enable
  • Перезагрузка снова
  • сделано

Ответ 2

Пока 10.11 не защищает определенные файлы в /System/Library или не позволяет сделать это самостоятельно, единственный способ без отключения SIP - сделать другую службу, выполнив файл где-то в другом месте, например:

sudo cp /System/Library/LaunchDaemons/ssh.plist /Library/LaunchDaemons/ssh.plist

И вместо того, чтобы использовать панель "Общий доступ" в "Системные настройки", вы сами управляете службой:

sudo launchctl unload /Library/LaunchDaemons/ssh.plist
sudo launchctl load -w /Library/LaunchDaemons/ssh.plist

Ответ 3

Я предлагаю вам попробовать добавить все аргументы, необходимые для plist в /Library/Preferences/. Например, в моем случае мне нужно было внести небольшое изменение в mDNSResponder, чтобы добавить флаг AlwaysAppendSearchDomains. Как было предложено "bwells" на форумах разработчиков Apple, мне просто нужно было сделать

sudo launchctl unload /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
sudo defaults write /Library/Preferences/com.apple.mDNSResponder.plist AlwaysAppendSearchDomains -bool YES
sudo launchctl load /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist

Это намного более чистый подход и сохраняется при перезагрузках, а также должен пережить обновление (по крайней мере, во время бета-версии мое обновление вручную после отключения SIP было перезаписано). Заметьте, насколько я знаю, это ново для El Capitan.

Ответ 4

Вы также можете оставить SIP включенным при отключении управления файловой системой. Перезагрузитесь в режиме восстановления и выполните:

csrutil enable --without fs

Это позволит вам изменять разрешения по мере необходимости.

Ответ 5

Я использую клонирование копий копий, чтобы сделать клонированные резервные копии... и иметь несколько во вращении.

Согласно mike at bombich "SIP применяется только к тому тому, в который вы загружаетесь, поэтому [можно] загрузиться с тома резервной копии, чтобы удалить [файлы]".

Я использовал ответ johannes (диск восстановления, csrutil enable/disable), но для этого требуется перезагрузка → диск восстановления → включить sip off → reboot → удалить crap → reboot → recovery drive → turn sip назад → перезагрузка... четыре перезагрузки.

Но загрузка с клона и просмотр исходного диска в качестве дополнительного диска позволит вам удалить проблемные файлы в две перезагрузки... да?

Ответ 6

  • Просто загрузитесь в режим "Восстановление", нажав "CMD + R" во время перезагрузки.
  • Открытый терминал
  • Ваш диск будет установлен в /Volumes/Macintosh HD
  • Удалить файлы через "rm": у вас есть абсолютный контроль в этом терминале.

Ответ 7

Вы можете "передать" защиту SIP путем изменения разрешений на файл через приложение Finder для системной группы.

изменение разрешений

Он работал отлично для меня даже после перезагрузки, я запускаю

ProductName: Mac OS X ProductVersion: 10.11 BuildVersion: 15A284