← man/security_and_auth
derq — man derq — 80×24
ugur@toprak:~/man/security_and_auth$man derq
Bölüm 1 Güvenlik & Kimlik

derq

DER yetkilendirmelerini (entitlements) sorgulama ve düzenleme.

Sinopsis

     derq query [--pretty] [--raw] [--xml] [-f format] [-i input] [-o output] ⟨sorgu ifadeleri⟩

     derq csops [-p pid] [-o output] [--xml] ⟨sorgu ifadeleri⟩

     derq macho [-i input] [-o output] [--xml] ⟨sorgu ifadeleri⟩

Açıklama

derq komutu, CoreEntitlements kitaplığını kullanarak DER kodlu yetkilendirmeleri sorgular.

Şu anda bir Mach-O dosyasından/girdi akışından sorgulamanın yanı sıra, csops(2) kullanarak doğrudan bir süreçten sorgulamayı da destekler.

Sorgu ifadelerinin girdi üzerinde başarıyla yürütülmesinden sonra, derq aktif DER bağlamını çıktıya verecektir.

Seçenekler

Bayrakların ve açıklamalarının bir listesi:

--pretty Belirtildiğinde, derq aktif bağlamı metinsel bir temsil halinde stderr'e yazdırır.

  • --raw: Girdinin DER kodlu bir yetkilendirme blob'u olmayabileceğini gösterir. Bu durum, derq'yu girdiyi ham bir DER nesnesi olarak ele almaya zorlar. Özellikle bu, bir V1 yetkilendirmesi geçirilirse, aktif bağlamın iç yetkilendirme sözlüğü yerine dış meta veri nesnesine ayarlanacağı anlamına gelir.

  • --xml: macho veya csops alt komutlarına gömülü DER blob'u yerine gömülü XML blob'unu sorgulamalarını söyler. query komutunda bu bayrağın kullanılması, çıktı biçimini bir XML plist'i olacak şekilde değiştirir.

-i input Girdi olarak hangi dosyanın kullanılacağını belirtmenize olanak tanır. Belirtilmezse, girdinin stdin üzerinden geleceğini belirten "-" varsayılır.

-o output Çıktı olarak hangi dosyanın kullanılacağını belirtmenize olanak tanır. Belirtilmezse, derq'nun çıktı için stdout kullanacağını belirten "-" varsayılır.

  • -p pid: derq'nun girdi olarak kullanılacak DER yetkilendirme blob'unu ayıklayacağı çalışan bir sürecin pid'ini belirtir.

-f format Girdinin hangi biçimde olduğunu belirtir. Bu bayrak geçirilmezse DER varsayılır. Desteklenen diğer biçim "xml"dir.

query statements ... Soldan sağa doğru yürütülecek, boşlukla ayrılmış bir işlemler listesi. İşlem sözdizimi SYNTAX (SÖZDİZİMİ) bölümünde açıklanmıştır.

Sözdizimi

DERQL, birbiri ardına yürütülen bir dizi işlemden oluşan çok basit bir sözdizimine sahiptir. Yürütme, ya son işlem yürütüldüğünde ya da bir işlem yürütme motorunu geçersiz bir duruma soktuğunda durur. Mevcut olmayan bir anahtarın seçilmesi veya bir dizinin sınırlarının dışına indekslenmesi gibi, geçersiz bir durum oluşturabilecek birçok işlem vardır. Bir eşleştirme işlemi başarısız olduğunda da geçersiz bir durum oluşur.

Şu anda derq 4 işlemi destekler:

CESelectIndex Bu işlem, sıfır tabanlı bir dizideki bir dizini seçer. Bir sayı karakteriyle (0-9) başlayan herhangi bir sorgu ifadesi, bir CESelectIndex işleminin başlangıcını ima eder. Örnek çağrı:

% derq query -i - -o - 1

stdin üzerinden iletilen dizideki ikinci öğeyi seçecek ve seçilen değeri stdout'a verecektir.

CESelectDictValue Bu işlem, aktif olarak seçili olan sözlükte iletilen anahtarla ilişkili değeri seçer. Herhangi bir işlemi ima etmeyen herhangi bir sorgu ifadesi CESelectDictValue olarak ayrıştırılacaktır. Yani, alfanümerik bir diziyle başlayan herhangi bir sorgu ifadesi bir CESelectDictValue işlemi olarak kabul edilecektir. Örnek:

% derq query application-identifier

stdin üzerinden iletilen sözlükten "application-identifier" anahtarına ait değeri seçecek ve seçilen değeri stdout'a verecektir.

CEMatchBool Şu anda seçili olan değer, true değerine sahip bir boolean ise bu işlem geçerli bir çıktı üretir. Bu işlemin yürütülmesi seçimi değiştirmez. "?" ile başlayan herhangi bir sorgu ifadesi bu işlemi gösterir. Örnek:

% derq query get-task-allow ?

Yalnızca "get-task-allow" anahtarının değeri bir boolean ise ve true değerine sahipse geçerli bir boolean döndürecektir.

CEMatchString Şu anda seçili olan değer, iletilen değere eşit bir dize ise bu işlem geçerli bir çıktı üretir. Bu işlemin yürütülmesi seçimi değiştirmez. "=" ile başlayan herhangi bir sorgu ifadesi bu işlemi gösterir. Örnek:

% derq query useractivity-team-identifier =appleiwork

Yalnızca "useractivity-team-identifier" anahtarının değeri tam olarak "appleiwork" değerine eşitse geçerli bir dize döndürecektir.

Örnekler

     "application.entitlements" adlı bir dosyadaki bir dizinin ilk değeri olarak "secret-entitlement" dizesine sahip olup olmadığını kontrol etmek için:
	   % derq query -i application.entitlements 0 =secret-entitlement

     666 nolu sürecin DER yetkilendirmelerinin geçerliliğini doğrulamak ve "com.apple.application-identifier" özniteliğinin "P9Z4AN7VHQ.com.apple.radar.gm" değerine eşit olup olmadığını kontrol etmek için:
	   % derq csops -pid 666 com.apple.application-identifier =P9Z4AN7VHQ.com.apple.radar.gm

     "com.apple.security.iokit-user-client-class" anahtarının ilk dizi öğesinin "AppleImage4UserClient" değerine eşit olup olmadığını kontrol etmek için:
	   % derq query com.apple.security.iokit-user-client-class 0 =AppleImage4UserClient

Teşhisler

derq yardımcı programı başarı durumunda 0 ve bir hata oluştuğunda >0 durumuyla çıkar.

Özellikle, sorgu karşılanamadığında veya geçersiz bir durumla sonuçlandığında EX_DATAERR (66) döndürülür.

Notlar

derq'nun doğru telaffuzu "dirk" kelimesine benzer.

Ayrıca Bakınız

codesign(1)

Darwin 10 Şubat 2021 Darwin