Tidak dapat membuat symlink di dalam / usr / bin bahkan sebagai sudo

101

Ketika saya mencoba menghubungkan biner di folder / usr / bin saya, saya mendapatkan kesalahan Operasi tidak diizinkan:

 sudo ln -s /usr/bin/python2.7 /usr/bin/python2
ln: /usr/bin/python2: Operation not permitted

Bahkan sebagai sudo, saya mendapatkan kesalahan ini.

egidra
sumber
Apa 1.OS 2.Distribution 3. Sistem file Anda?
Rany Albeg Wein
Mac OSX El Capitan 10.11.4
egidra
1
Sudahkah Anda mencoba hal berikut: stackoverflow.com/questions/32659348/… ?
Rany Albeg Wein

Jawaban:

156

Mengapa saya tidak dapat melakukan symlink ke /usr/bin?

Fitur Perlindungan Integritas Sistem baru El Capitan mencegah perubahan pada beberapa bagian inti OS X, termasuk sebagian besar /usr/, bahkan oleh root.

Bagaimana saya masih bisa menambahkan file yang dapat dieksekusi ke jalur saya?

Kustomisasi lokal, seperti apa yang Anda lakukan, termasuk di /usr/localdalamnya. Path /usr/local/bintidak ada secara default, tetapi Anda dapat membuatnya dan meletakkan binari kustom (dan symlink) di dalamnya:

sudo mkdir -p /usr/local/bin
sudo ln -s /usr/bin/python2.7 /usr/local/bin/python2

Perhatikan bahwa meskipun /usr/local/bintidak ada secara default, itu ada dalam PATH default, jadi segera setelah Anda membuatnya, itu akan dicari untuk perintah.

Menonaktifkan SIP

Anda juga dapat menonaktifkan Perlindungan Integritas Sistem, tetapi biasanya yang terbaik adalah membiarkannya aktif dan melakukan penyesuaian di lokasi yang lebih sesuai. Pertanyaan Apple Stack Exchange memiliki detail lebih lanjut tentang ini: Apa sebenarnya Fitur Tanpa Root di El-Captain? .

Gordon Davisson
sumber
16

Saya membuat tautan simbolis untuk Sublime Text 3 di Mac OS High Sierra sebagai

sudo ln -s /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl /usr/local/bin/

Saya juga mencoba membuat tautan simbolik di "/ usr / bin" dan mendapatkan Operasi Tidak Diizinkan.

Kemudian saya membuat tautan simbolik di "/ usr / local / bin" dan tidak ada kesalahan. Tautan simbolis berfungsi dengan baik. Pastikan bahwa "/ usr / local / bin" ada di jalurnya.

Jadi, tampaknya akses ke "/ usr / bin" dibatasi.

Vineet Sharma
sumber
7

Restart sistem -> tekan lama cmd + R . pilih terminal dari menu utilitas ketik perintah berikut csrutil nonaktifkan tutup terminal dan restart sistem.

James
sumber
9
Ini menonaktifkan Perlindungan Integritas Sistem. Mungkin yang terbaik adalah mencari solusi lain yang lebih aman.
MattSidor
9
Secara pribadi, menurut saya ini adalah solusi yang tepat. Saya tidak melihat alasan bagi OS untuk memblokir saya dari menghubungkan hal-hal di direktori ini atau direktori apa pun sebagai sudo.
rjhilgefort
0
  1. Create a symbolic link to psql in usr/bin (for mac only)
         command: sudo ln -s /Applications/Postgres.app/Contents/Versions/latest/bin/psql /usr/bin/psql 

jika Anda tidak dapat membuat tautan simbolis karena masalah izin, itu akan terjadi karena "csrutil". setelah menonaktifkan csrutil Anda dapat membuat tautan simbolis. Ikuti langkah-langkah berikut untuk menonaktifkan CSRUtill:

Mulai ulang Mac Anda. Sebelum OS X dimulai, tahan Command-R dan tahan hingga Anda melihat ikon Apple dan bilah kemajuan. Melepaskan. Ini mem-boot Anda ke Recovery. Dari menu Utilities (di bilah atas), pilih Terminal. Pada prompt ketik persis berikut ini dan kemudian tekan Return: csrutil disable Terminal akan menampilkan pesan bahwa SIP telah dinonaktifkan. Dari menu , pilih Mulai Ulang.

Srima
sumber
-3

Coba jalankan sudo sudulu baru jalankan perintah w / root level.

Dre
sumber
2
Ini tidak akan menyelesaikan masalah OP. Masalahnya berkaitan dengan perlindungan integritas sistem pada sistem MacOS modern.
cgseller