MacOS Sonoma 14.2'de mali mühür için libakisp11.dylib dosyasını terminalden symlink ile tanıtmaya çalışıyorum ama "Operation not permitted" (SIP) engeline takılıyorum. SIP kapatmadan çözen var mı?
2 Cevap
Apple, macOS Catalina'dan itibaren başlattığı ve Sonoma 14.2 ile daha da sıkılaştırdığı System Integrity Protection (SIP) ve İmzalı Sistem Bölüntüsü (SSV) nedeniyle /usr/lib veya /System gibi kök dizinlere sudo yetkisiyle dahi yazma, değiştirme veya sembolik bağ (symlink) oluşturma izni vermemektedir. Eski Kamu SM kılavuzlarında yer alan sudo ln -s ... /usr/lib/libakisp11.dylib komutunun hata vermesinin sebebi budur.
SIP'i kesinlikle kapatmanıza gerek yoktur; bu sorunu tamamen güvenli ve yerel yollarla çözmek için aşağıdaki 3 adımı uygulayabilirsiniz:
- SIP Korumasında Olmayan
/usr/local/libDizinini Kullanın:
Apple, üçüncü parti kütüphaneler için/usr/local/libdizinine izin vermektedir. Terminal uygulamasını açıp şu komutları sırasıyla çalıştırın:sudo mkdir -p /usr/local/lib sudo ln -sf /Library/akisp11/libakisp11.dylib /usr/local/lib/libakisp11.dylib - Terminal ve Java'ya 'Tam Disk Erişimi' (Full Disk Access) Verin:
macOS Sonoma'da Terminal'in kütüphaneleri bağlayabilmesi için işletim sistemi izinleri gereklidir:- Sistem Ayarları (System Settings) > Gizlilik ve Güvenlik (Privacy & Security) > Tam Disk Erişimi (Full Disk Access) menüsüne gidin.
- Kullandığınız Terminal (veya iTerm) uygulamasını ve yüklü olan Java binary dosyasını listeye ekleyip açık (etkin) konuma getirin.
- Java PKCS#11 Konfigürasyonunda Mutlak Yol Tanımlayın:
Aslında symlink oluşturmak zorunda bile değilsiniz. GİB İmza Aracı, ArkSigner veya e-Defter uygulamanızın kullandığıpkcs11.cfgdosyasını açıp doğrudan kütüphanenin orijinal mutlak yolunu yazabilirsiniz:name = AKIS library = /Library/akisp11/libakisp11.dylib slot = 0
Not: Eğer Apple Silicon (M1/M2/M3) işlemcili Mac kullanıyorsanız, çalıştırdığınız Java sürümü ile AKİS kütüphanesinin mimarisinin (ARM64 vs x86_64) uyuştuğundan emin olun. Intel mimarili sürücü kullanıyorsanız Java'yı da Rosetta üzerinden çalıştırmanız gerekebilir.
SIP korumasını kapatmanıza gerek yoktur. Apple /usr/lib dizinini kilitlediği için terminalden linki /usr/local/lib dizinine vermelisiniz: sudo mkdir -p /usr/local/lib && sudo ln -sf /Library/akisp11/libakisp11.dylib /usr/local/lib/ komutunu çalıştırmanız yeterlidir. Ayrıca imzalama programınızın ayarlarında PKCS11 yoluna sembolik link yerine doğrudan /Library/akisp11/libakisp11.dylib dosyasını gösterirseniz link oluşturmaya bile gerek kalmaz.