Sudo olarak bile / usr / bin içinde bir sembolik bağlantı oluşturamaz


101

/ Usr / bin klasörümdeki bir ikiliyi sembolik bağlamaya çalıştığımda, İşleme izin verilmiyor hatası alıyorum:

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

Sudo olarak bile, bu hatayı alıyorum.


1.OS 2.Distribution 3. Dosya sisteminiz nedir?
Rany Albeg Wein

Mac OSX El Capitan 10.11.4
egidra

1
Aşağıdakileri denediniz mi : stackoverflow.com/questions/32659348/… ?
Rany Albeg Wein

Yanıtlar:


157

Neden sembolik bağlantı kuramıyorum /usr/bin?

El Capitan'ın yeni Sistem Bütünlüğü Koruması özelliği, çoğu /usr/kökten bile olsa OS X'in birçok temel parçasında değişiklikleri önler .

Yoluma çalıştırılabilir dosyaları nasıl ekleyebilirim?

Yaptığınız şey gibi yerel özelleştirmeler /usr/localbunun yerine aittir . Yol /usr/local/binvarsayılan olarak mevcut değildir, ancak onu oluşturabilir ve içine özel ikili dosyalar (ve sembolik bağlar) koyabilirsiniz:

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

Ederken o Not /usr/local/binvarsayılan olarak mevcut değil, bu bir varsayılan PATH, bu nedenle en kısa sürede bunu oluştururken, bu komutlar için aranacak gerekir.

SIP'yi devre dışı bırakma

Sistem Bütünlüğü Korumasını devre dışı bırakmak da mümkündür, ancak genellikle bunu açık bırakmak ve daha uygun yerlerde özelleştirme yapmak en iyisidir. Bir Apple Stack Exchange sorusu bununla ilgili daha fazla ayrıntı içerir: El-Captain'daki Rootless Feature nedir, gerçekten? .


18

Sublime Text 3 için sembolik bağlantıyı Mac OS High Sierra'da şu şekilde oluşturdum:

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

Ayrıca "/ usr / bin" içinde sembolik bağlantı oluşturmaya çalışıyordum ve İşlem İzin Verilmedi mesajı alıyordum.

Sonra "/ usr / local / bin" içinde sembolik bağlantıyı oluşturdum ve hata olmadı. Sembolik bağlantı iyi çalışıyor. Yolda "/ usr / local / bin" olduğundan emin olun.

Görünüşe göre "/ usr / bin" erişimi kısıtlanmış.


7

Sistemi yeniden başlatın -> cmd + R'ye uzun basın . yardımcı programlar menüsünden bir terminal seçin aşağıdaki komutu yazın csrutil terminali kapatmayı devre dışı bırakın ve sistemi yeniden başlatın.


9
Bu, Sistem Bütünlüğü Korumasını devre dışı bırakır. Bunun yerine başka, daha güvenli bir çözüm bulmak muhtemelen en iyisidir.
MattSidor

9
Şahsen, bunun doğru çözüm olduğunu düşünüyorum. İşletim sisteminin bu dizindeki veya herhangi bir dizindeki şeyleri sembolik olarak bağlamamı engellemesi için bir neden görmüyorum 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 

İzin sorunu nedeniyle sembolik bağlantı oluşturamıyorsanız, bunun nedeni "csrutil" olacaktır. csrutil'i devre dışı bıraktıktan sonra sembolik bağlantı oluşturabilirsiniz. CSRUtill'i devre dışı bırakmak için şu adımları izleyin:

Mac'inizi yeniden başlatın. OS X başlamadan önce, Command-R tuşunu basılı tutun ve bir Apple simgesi ve bir ilerleme çubuğu görene kadar basılı tutun. Serbest bırakmak. Bu sizi Kurtarma'ya götürür. Utilities (üst çubukta) menüsünden Terminal'i seçin. Komut isteminde tam olarak aşağıdakileri yazın ve ardından Return tuşuna basın: csrutil devre dışı bırakma Terminali, SIP'nin devre dışı bırakıldığını belirten bir mesaj görüntülemelidir.  menüsünden Yeniden Başlat'ı seçin.


-4

sudo suÖnce çalıştırmayı, ardından komutu w / root seviyesinde çalıştırmayı deneyin .


2
Bu, OP sorununu çözmeyecektir. Sorun, modern MacOS sistemlerindeki sistem bütünlüğü korumasıyla ilgilidir.
cgseller
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.