Apple telah memperkenalkan Perlindungan Integritas Sistem , juga dikenal sebagai "tidak menentu", dengan OS X 10.11, El Capitan. Saya mengerti ini adalah langkah untuk perlindungan umum terhadap malware, tetapi sebagai pengembang saya perlu akses tulis ke beberapa file yang dikunci.
Bagaimana cara menonaktifkan perlindungan ini?
Jawaban:
Dokumentasi Apple mencakup penonaktifan SIP, Tentang Perlindungan Integritas Sistem di Mac Anda dan Konfigurasi Perlindungan Integritas Sistem .
Artikel di lifehacker.com mencantumkan langkah-langkah ini:
Anda dapat memverifikasi apakah file atau folder dibatasi dengan mengeluarkan
ls
perintah ini menggunakan huruf besar O (dan bukan nol 0) untuk mengubah tanda daftar panjang:Cari teks terbatas untuk menunjukkan di mana SIP diberlakukan.
Secara default (= SIP diaktifkan), folder berikut dibatasi (lihat halaman Dukungan Apple ):
... dan folder berikut ini gratis:
sumber
ls -lO /usr/local
tidak ditandai dibatasi. Saya juga chownd/usr/local/
secara rekursif. Tapi saya terus melihat root mengambil kepemilikan/usr/local/bin
dan/usr/local/share
yang berdampak pada homebrew. Apakah ini pekerjaan SIP juga?/usr/local
tidak dibatasi, Anda dapat memperbaiki izin "di bawah" direktori ini dengan mudah. Homebrew sebenarnya merekomendasikan untuk menjalankansudo chown -R $(whoami) /usr/local
(saat sedang login sebagai pengguna admin) untuk memperbaiki masalah izin./usr/local
sekarang izin telah ditetapkan dengan benar.Dimungkinkan untuk menonaktifkan SIP dengan menjalankan boot ke Recovery HD dan menjalankan perintah berikut:
Dimungkinkan juga untuk mengaktifkan perlindungan SIP dan secara selektif menonaktifkan aspek-aspeknya, dengan menambahkan satu atau lebih tanda pada
csrutil enable
perintah. Semua harus di-boot dari Recovery untuk mengaturnya:Aktifkan SIP dan izinkan pemasangan ekstensi kernel yang tidak ditandatangani
Aktifkan SIP dan nonaktifkan perlindungan sistem file
Aktifkan SIP dan nonaktifkan pembatasan debugging
Aktifkan SIP dan nonaktifkan pembatasan DTrace
Aktifkan SIP dan nonaktifkan pembatasan penulisan untuk NVRAM
Saya juga memiliki posting yang tersedia dengan informasi lebih lanjut tentang SIP:
Perlindungan Integritas Sistem - Menambahkan lapisan lain ke model keamanan Apple
sumber
csrutil: failed to modify system integrity configuration. This tool needs to be executed from the Recovery OS.
Jika tujuannya adalah untuk benar-benar menonaktifkan Perlindungan Integritas Sistem kemudian mem-boot ke partisi HD Pemulihan seperti yang sebelumnya direkomendasikan dalam jawaban lain di sini via Command+ rsaat boot bukanlah cara tercepat untuk melakukan ini.
Anda dapat menggabungkan boot mode pengguna tunggal dengan boot HD pemulihan dalam kombinasi kunci startup tanpa dokumen:
Ini membuat Anda masuk ke lingkungan minimum kosong yang diperlukan untuk ini secara langsung .
sumber
Akan lebih aman untuk memodifikasi
/etc/paths
sehingga/usr/local/bin
hanya sebelumnyausr/bin
. Dengan begitu Anda dapat melakukan pekerjaan pengembangan Anda di dalam/usr/local/bin
tanpa harus menonaktifkan SIP.Instalasi bersih dari OS telah dipesan
/etc/paths
dengan cara ini sejak El Capitan, tetapi jika Anda memperbarui OS dari Yosemite atau sebelumnya, Anda harus memodifikasi urutan jalur secara manual.sumber
usr/bin
. Karena SIP mencegah hal ini sekarang, program harus diinstalusr/local/bin
, yang tidak dibatasi oleh SIP. Dengan mengutamakanusr/local/bin
, pengguna dapat menjalankan program tanpa harus mengetikkan path absolut ke program. Apakah ini masuk akal? Apakah Anda bingung tentang hal lain?/usr/bin
... tapi saya kira apa yang seharusnya saya tanyakan adalah "bagaimana ini menjawab pertanyaan OP?" Awalnya saya berasumsi bahwa itu memang ada hubungannya, dan saya tidak membuat koneksi. Tetapi sekarang saya sangat ragu apakah itu ada hubungannya.Jika yang Anda butuhkan adalah mengakses / usr / local, lihat halaman ini: https://github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/El_Capitan_and_Homebrew.md
Idenya adalah untuk menonaktifkan sementara SIP menggunakan
csrutil disable
, menambah/usr/local
, menggunakan chflags untuk mengatur direktori itu menjadi non-dibatasidan kemudian aktifkan kembali SIP menggunakan
csrutil enable
.Jika
/usr/local
sudah ada pada saat upgrade Anda, maka bahkan di atas tidak perlu. Anda cukup berlarisumber
Read-only file system
Jika Anda tidak bisa masuk ke Partisi Pemulihan untuk menjalankan
csrutil disable
(untuk menonaktifkan SIP ), coba atur argumen boot dengannvram
perintah, misalnyaNamun, jika Anda memiliki kesalahan berikut:
maka itu tidak akan berhasil. Anda masih perlu mem-bootnya recovery / safe mode.
Lihat:
sumber
nvram: Error setting variable - 'boot-args': (iokit/common) not permitted
Saya tidak memiliki reputasi yang cukup untuk menambahkan ini sebagai komentar pada tautan github Homebrew 404 di atas. Mesin Wayback masih memilikinya:
http://web.archive.org/web/20160117204214/https://github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/El_Capitan_and_Homebrew.md
sumber