Kullanım
spctl --assess [-t type] [-] file ...
spctl --status
spctl --global-enable
spctl --global-disable | --disable-status
Açıklama
spctl, güvenlik değerlendirme politikası (security assessment policy) alt sistemini yönetir.
Bu alt sistem, sistemin dosyalar üzerinde yükleme, çalıştırma ve diğer işlemlere izin verip vermeyeceğini belirleyen kuralları korur ve değerlendirir.
spctl, ana çalışmasını belirleyen bir komut seçeneği gerektirir:
-a, --assess spctl'in verilen dosyalar üzerinde bir değerlendirme yapmasını ister.
--global-enable Değerlendirme alt sistemini etkinleştirir. Sistem politikası tarafından reddedilen işlemler başarısız olur; değerlendirme API'leri gerçeği rapor eder. Root erişimi gerektirir.
--global-disable Gizlilik ve Güvenlik ayarları panelinde herhangi bir yerden indirilen uygulamalara izin verme seçeneğini gösterir.
--disable-status Gizlilik ve Güvenlik ayarları panelinde herhangi bir yerden indirilen uygulamalara izin verme seçeneğinin mevcut olup olmadığını sorgular.
--status Değerlendirme alt sisteminin etkin mi yoksa devre dışı mı olduğunu sorgular.
Buna ek olarak, aşağıdaki seçenekler tanınır:
--continue Bir dosyanın değerlendirmesi başarısız olursa, ek dosya argümanlarını değerlendirmeye devam eder. Bu seçenek olmadığında, ilk başarısız değerlendirme işlemi sonlandırır.
--ignore-cache Değerlendirme nesne önbelleğini sorgulamaz veya kullanmaz. Bu durum çalışmayı önemli ölçüde yavaşlatabilir. Yeni oluşturulan değerlendirmeler yine de önbellekte saklanabilir.
--no-cache Değerlendirmelerin sonuçlarını değerlendirme nesne önbelleğine yerleştirmez. Başka hiçbir değerlendirme bu sonucu yeniden kullanamaz. Bu seçenek mevcut önbellek girdilerinin kullanılmasını yasaklamaz.
--raw: Bir değerlendirmenin sonucunu görüntülerken, bunu biraz daha dostça bir biçimde ayrıştırmak yerine "ham" XML plist olarak yazar. Bu, betiklerde kullanıldığında veya spctl'in henüz bilmediği yeni geliştirilen değerlendirme yönlerine erişmek için yararlıdır.
-t, --type Ne tür bir değerlendirme istendiğini belirtir: kod yürütülmesini değerlendirmek için execute, bir yükleyici paketinin yüklenmesini değerlendirmek için install ve belgelerin açılmasını değerlendirmek için open kullanılır. Varsayılan değer yürütülmeyi (execution) değerlendirmektir.
-v, --verbose Daha ayrıntılı çıktı ister. Ayrıntı düzeyini artırmak için seçeneği tekrarlayın veya daha yüksek bir sayısal değer verin.
Kaldırılan (Deprecated) Seçenekler
macOS 15.0 itibarıyla, kural veritabanını veya değerlendirme alt sisteminin genel durumunu değiştiren işlemler artık desteklenmeyecektir.
Yapılandırma profilleriyle kural eklemek için lütfen şu adrese bakın: https://developer.apple.com/documentation/devicemanagement/systempolicyrule
Yapılandırma profilleriyle genel durumu değiştirmek için lütfen şu adrese bakın: https://developer.apple.com/documentation/devicemanagement/systempolicycontrol
--add: Sistem genelindeki değerlendirme kuralı veritabanına kural(lar) ekler.
--disable Değerlendirme kuralı veritabanındaki bir veya daha fazla kuralı devre dışı bırakır. Devre dışı bırakılan kurallar değerlendirme yapılırken dikkate alınmaz, ancak veritabanında kalır ve daha sonra yeniden etkinleştirilebilir.
--enable Değerlendirme kuralı veritabanındaki kuralı/kuralları etkinleştirir, daha önceki devre dışı bırakma işlemini geri alır.
--remove Değerlendirme kuralı veritabanından kuralı/kuralları kaldırır.
--reset-default Sistem politikası veritabanını koşulsuz olarak varsayılan değerine sıfırlar. Bu, yöneticiler tarafından yapılan tüm değişiklikleri atar. Ayrıca veritabanındaki her türlü bozulmayı giderir. Bu özelliği doğrudan etkinleştirmez veya devre dışı bırakmaz. Bu işlem yetkili kullanıcı (super user) olarak yapılmalıdır. Kullanımdan sonra yeniden başlatın.
--anchor Kural güncelleme işlemlerinde, argümanların çıpa (anchor) sertifikalarının hash değerleri olduğunu belirtir.
--hash: Kural güncelleme işlemlerinde, argümanların kod dizini (code directory) hash değerleri olduğunu belirtir.
--label label Yeni kurallara eklenecek veya mevcut kurallarda aranacak bir dize etiketi belirtir. Etiketler, geleneksel olarak atanan rastgele dizelerdir. Kural etiketleri isteğe bağlıdır.
--path: Kural güncelleme işlemlerinde, argümanın/argümanların diskteki dosyaların yollarını ifade ettiğini belirtir.
--priority priority Kural güncelleme işlemlerinde, oluşturulan veya değiştirilen kuralın/kuralların önceliğini belirtir. Öncelikler ondalık sayılardır. Daha yüksek sayısal değerler daha yüksek önceliği belirtir.
--requirement Kural güncelleme işlemlerinde, argümanın/argümanların kod gereksinimi (code requirement) kaynağı olduğunu belirtir.
--rule: Kural güncelleme işlemlerinde, argümanın/argümanların mevcut kuralların dizin numaraları olduğunu belirtir.
Kural Konuları
Sistem değerlendirme kuralı veritabanı, Kod Gereksinimlerine (Code Requirements) dayalı olarak adaylarla eşleşen girdiler içerir. spctl, --requirement seçeneğini kullanarak bu gereksinimleri doğrudan belirtmenize olanak tanır. Ek olarak, diskteki tekil programlar --path seçeneği ile (kendi Atanmış Gereksinimlerini [Designated Requirement] kullanan) belirtilebilir. --anchor seçeneği, bir (tam) sertifikanın hash değerini alır ve bunu, o çıpa sertifikasına dayalı herhangi bir imzayla eşleşen bir gereksinime dönüştürür. Alternatif olarak diskteki bir sertifika dosyasının mutlak yolunu alabilir; bu dosya bir çıpa sertifikasının DER biçimini içerir. Son olarak, --hash seçeneği, yalnızca ve tam olarak CodeDirectory hash değeri verilen bir programı ifade eden bir kod gereksinimi oluşturur. Konuları belirtme yöntemi kalan işlemleri etkilemez.
Dosyalar
/var/db/SystemPolicyConfiguration/SystemPolicy Sistem politikası veritabanı. /var/db/SystemPolicyConfiguration/.SystemPolicy-default Sistem politikası veritabanının ilk dağıtım sürümünün bir kopyası. Veritabanı tanınmayacak derecede bozulursa yeniden başlamak için kullanışlıdır.
Örnekler
Mail.app uygulamasının yerel sistemde çalışmasına izin verilip verilmediğini kontrol etmek için:
spctl -a /Applications/Mail.app
Değerlendirme alt sisteminin etkin olup olmadığını kontrol etmek için:
spctl --status
Tanılama
spctl başarı durumunda sıfır, bir işlem başarısız olursa bir değeriyle çıkar. Çıkış kodu iki, tanınmayan veya uygun olmayan argümanları belirtir. Bir değerlendirme işlemi reddedilme ile sonuçlanırsa ancak başka bir sorun oluşmadıysa, çıkış kodu üçtür. Çıkış kodu dört, işlemin artık kaldırıldığını (deprecated) belirtir.
Ayrıca Bakınız
codesign(1), syspolicyd(1)
Tarihçe
Sistem politikası özelliği ve spctl komutu ilk olarak Mac OS X Lion 10.7.3 sürümünde sınırlı bir geliştirici önizlemesi olarak ortaya çıktı.
macOS 26.4 January 19, 2012 macOS 26.4