OSX 10.11.1'de kabukta DYLD_FALLBACK_LIBRARY_PATH ayarlanamıyor


11

Normal @rpath dışındaki bir dizinde dinamik kitaplıklarla birim sınaması için kullanılan kabuk komut dosyalarında, daha önce kitaplıkları içeren dizini ayarlamak için DYLD_FALLBACK_LIBRARY_PATH ayarlayabildim. 10.11.1 altında, bash bu ortam değişkenini ayarlama girişimlerini yok sayıyor gibi görünüyor:

$ sh -x testscript.sh
+ DYLD_FALLBACK_LIBRARY_PATH=/Users/something/testinglibs
+ export DYLD_FALLBACK_LIBRARY_PATH
+ exec printenv

ve DYLD_FALLBACK_LIBRARY_PATH printenv'in çıktısında mevcut değil.

Bu, 10.11'in kabuğunda güvenlikle ilgili bir saldırı mı? Bu değişikliği kılavuz sayfalarda veya çevrimiçi olarak bulamadım.



Elbette, install_name_tool kalıcı bir çözümdür (ve aslında yapı ortamını kurmak için komut dosyası yazdım). Bir geliştirme ortamında hızlı test ve hata ayıklama için, kitaplıkların geçici kopyalarını oluşturmak, @rpath değişikliklerini kesmek ve muhtemelen manuel değişikliği unutmak zordur. DYLD_FALLBACK_LIBRARY_PATH ve DYLD_LIBRARY_PATH bu ara sıra geliştirilen geliştirme / test döngüleri için kullanışlıdır.
Guy

Yanıtlar:


8

Bu El Capitan'da sunulan Sistem Bütünlüğü Koruması

Belgeler olduğu bu Apple

Temel olarak Apple tarafından sağlanan tüm OS X yürütülebilir dosyaları korunur. ve (önceki bir belgeden)

NSTask ile bir pakette yardımcı bir işlem başlatmak veya exec (2) komutunu çağırmak gibi System Integrity Protection tarafından kısıtlanan süreçlerin alt süreçlerini ortaya çıkarmak, bu alt işlemin Mach özel bağlantı noktalarını sıfırlar. DYLD_LIBRARY_PATH gibi dinamik bağlayıcı (dyld) ortam değişkenleri, korumalı işlemler başlatılırken temizlenir.

Bu durumda sh korunur


İşaretçi için teşekkürler! SIP'deki çekirdek ve diğer dosya sistemi korumalarına odaklanmıştım. Bu değişikliği fark etmedim.
Guy

2
Tamam, bu fenomenin kökenini açıklıyor, ama şimdi kurulu olmayan kütüphaneleri nasıl test etmemiz gerekiyor? Yani, make checkpaylaşılan kütüphanelere ihtiyaç duyulduğunda El Capitan'a nasıl yazabiliriz ?
akim

Autoconf aracılığıyla Çoğu marka bitmelidir / usr / hala yazılabilir olan yerel - onlar başka bir yerde under için çalışırsanız / I OS X (veya Unix) yazarın bilgisine sorgulayamadığı usr
user151019

Herhangi biri, dyld ortamının neden kaybolduğunu anlamaya çalışırken zaman harcadıktan sonra bulursa, dyld / SIP etkileşimini belgelemek için Apple'a bir hata vermeyi düşünün. Zaten yaptım ve hata rdar sayısı aldı: // 30755019. (Daha sonra bu tür tuzakları belgelemeyi düşüneceklerini umuyorum ...)
hmijail resignees

1
(Ben bu yazı itibariyle bu konuda tamamen anne olan dyld manpage SIP etkileşimi belgelemek
istedim
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.