Sudo tidak dapat membuat file di / usr / bin di El Capitan

14

Saya upgrade ke El Capitan kemarin dan semuanya baik-baik saja sampai baru-baru ini ketika saya perhatikan saya tidak bisa menulis apa pun (dengan sudo ofc) di / usr / bin ketika saya mencoba menginstal phpbrew.

Apa yang menyebabkan ini dan bagaimana cara memecahkannya?

masukkan deskripsi gambar di sini

sushil
sumber
OS X El Capitan tidak dapat di-root. Fitur ini dapat dinonaktifkan dari partisi pemulihan.
fd0

Jawaban:

17

Sejak OSX 10.11, Apple memperkuat sistem keamanan. Disebut Perlindungan Integritas Sistem , Apple mengunci:

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

Untuk menonaktifkan fitur keamanan ini, Anda harus mem-boot ulang komputer Anda dan menahannya CMD+Rsaat mulai mem-boot ke dalam Mode Pemulihan OS X.

Kemudian OS X Utilities > Terminal

Ketikkan perintah csrutil disable; reboot

Komputer Anda akan restart. Anda akan melihat pesan konfirmasi tentang penonaktifan.

Untuk memverifikasi status jenis CRS csrutil status

Ragnar
sumber
1
Saya dinonaktifkan dan masih tidak memungkinkan saya untuk melakukan apa pun:/Users/Rob$ csrutil status System Integrity Protection status: disabled. /Users/Rob$ touch /usr/bin/yes touch: /usr/bin/yes: Permission denied
Roberto
Coba dengan sudo.
Ragnar
Dalam kebanyakan kasus, lebih baik untuk menginstal penyesuaian lokal ke / usr / local (mis. / Usr / local / bin daripada / bin atau / usr / bin). Untuk itulah, dan ini sudah lama terjadi. Jika memungkinkan, saya sarankan mengikuti praktik terbaik ini daripada menonaktifkan SIP. Jika Anda benar-benar perlu melakukan perubahan di lokasi terbatas, sebaiknya nonaktifkan SIP, lakukan perubahan, lalu segera aktifkan kembali SIP dengan csrutil enable(dalam mode Pemulihan).
Gordon Davisson
3

Seperti yang disebutkan oleh Ragnar , /usrdirektori dikunci oleh sistem, dengan pengecualian /usr/local. Kemudian, jika skenario Anda memungkinkan, saya sarankan menambahkan tautan simbolis ke /usr/local/bin. Jika Anda tidak memiliki persyaratan ketat untuk menggunakan /usr/bin, itu salah satu cara untuk mengatasi kesalahan "Operasi tidak diizinkan".

Gustavo Straube
sumber
2

Seseorang dapat memverifikasi jika file atau direktori tertentu dibatasi oleh OSX System Integrity Protection (SIP) / Rootless dengan mendaftarkan flag file menggunakan -Oopsi ke ls (misalnya untuk melihat direktori mana di / dibatasi):

ls -Ol /

Direktori atau file yang dikendalikan oleh SIP ditampilkan sebagai 'dibatasi'.

Ada detail lengkap dalam jawaban untuk pertanyaan ini tentang SIP / tidak menentu.

Pierz
sumber