Как редактировать защищенные файлы на Mac

457
Rocky Li

Я только что купил новый Mac, я пытаюсь отредактировать DockMenus.plistфайл, Dock.appчтобы удалить искатель из дока, как я делал с моими предыдущими Mac. Однако при сохранении vimвыдает следующую ошибку:

"DockMenus.plist" E212: Can't open file for writing 

Это после того, как я попытался использовать sudoи рутировать себя с sudo -i. кажется, что этот файл не в состоянии записать, даже когда я попробовал, :w !sudo tee %он только что вернулся shell returned 1и ничего не происходит.

Что самое быстрое, что я могу сделать для редактирования этих файлов? Спасибо!

2
См. Https://apple.stackexchange.com/questions/208478/how-do-i-disable-system-integrity-protection-sip-aka-rootless-on-macos-os-x. Вы можете отключить SIP только из Recovery. Tetsujin 6 лет назад 3
@ Tetsujin Разве буквально нет другого способа сделать это? Rocky Li 6 лет назад 0
Если бы было, связанный QA вряд ли собрал бы 400 голосов. Tetsujin 6 лет назад 0
Если ваш новый Mac имеет Mojave, попробуйте это: Системные настройки> Безопасность и конфиденциальность> Полный доступ к диску и разрешите его. Вы в этом режиме? Yoan 6 лет назад 0
@ Йоан Да, у меня есть мохаве, попробую сейчас. Rocky Li 6 лет назад 0
@ Йоан, он может разрешать только приложения, а «vim» явно не приложение. Rocky Li 6 лет назад 0
Вместо TextEdit? Yoan 6 лет назад 0
@Yoan Это не сработало, TextEdit выдавал предупреждения о заблокированных файлах и не позволит вам редактировать его даже после предоставления полного доступа к диску. Rocky Li 6 лет назад 0
Некоторые объяснения здесь: http://osxdaily.com/2018/10/09/fix-operation-not-permitted-terminal-error-macos/ - я не знаю, если вы в этом случае ... Yoan 6 лет назад 0
@Yoan Включение «Полный доступ к диску» не поможет с доступом для записи к файлам с ограниченным SIP. Для полноты, вы бы не добавили vim в этот список, если бы хотели предоставить ему полный доступ к диску, а скорее Terminal. TextEdit не имеет возможности подняться до уровня root для редактирования файлов, вам нужно будет запустить TextEdit как root изначально, чтобы иметь возможность редактировать файлы, принадлежащие root и защищенные SIP, когда SIP отключен. Тем не менее, вам нужно загрузиться для восстановления, чтобы отключить SIP, чтобы иметь возможность редактировать файл, упомянутый в этом вопросе. grg 6 лет назад 1

1 ответ на вопрос

1
grg

Вы пытаетесь редактировать файл, который является частью macOS, файл с ограниченным SIP. Вам нужно отключить SIP, чтобы иметь доступ на запись в файл как root. Запустите csrutil disableиз Recovery, затем отредактируйте файл как root. Вы можете снова включить SIP csrutil enableпосле внесения изменений.