OS X yetkilendirme mekanizmaları gerçekte ne yapar?


13

Arka fon 

VPN Tek Oturum Açma'ya ulaşmanın en iyi yoluna karar vermek için OS X giriş sürecini daha iyi anlamaya çalışıyorum .

Lütfen yanılıyorsam beni düzeltin, ama inanıyorum ki—

  1. launchd(8)çağırır gettyent(3)ve böylece ttys(5)yürütmek loginwindow.appiçin belirler /dev/console.

  2. loginwindow.appsystem.login.consoleyetkilendirme veritabanının aşağıdaki mekanizmaları belirttiği yetkilendirme hakkını edinme girişimleri (işlevlerini anlamamla birlikte listelenmiştir); imtiyazlı olanlar authdsüreç içinde (kök olarak) çalıştırılırken, imtiyazlı olmayanlar SecurityAgentsüreç içinde çalışır (_securityagent olarak):

    • builtin:policy-banner( ayarlanmışsa, Giriş Penceresi başlığını görüntüler ).
    • loginwindow:login (kimlik bilgilerini ister).
    • builtin:login-begin
    • builtin:reset-password,privileged( Apple Kimliği kullanarak şifre sıfırlama gerçekleştirir ).
    • builtin:forward-login,privileged (açılışta EFI'den kimlik bilgilerini iletir).
    • builtin:auto-login,privileged (önyüklemede otomatik oturum açma kimlik bilgilerini uygular).
    • builtin:authenticate,privileged(başlatır pam_authenticate(3)için authorizationhizmet; kümeleri "uid" bağlam değeri).
    • PKINITMechanism:auth,privileged (TGT elde ederek Kerberos'u başlatır).
    • builtin:login-success
    • loginwindow:success (oturum açma oturumunu yetkisiz uzaktan erişimden korur; oturum açmayı sistemin utmp ve utmpx veritabanlarına kaydeder; konsol terminalinin sahibini ve izinlerini ayarlar).
    • HomeDirMechanism:login,privileged (kullanıcının ana dizinini bağlar).
    • HomeDirMechanism:status (giriş dizini montajının ilerlemesini görüntüler).
    • MCXMechanism:login (yapılandırma profillerini uygular).
    • loginwindow:done (kullanıcının tercihlerini genel sistem varsayılanlarını içerecek şekilde sıfırlar; fare, klavye ve sistem sesini kullanıcının tercihlerini kullanarak yapılandırır; kullanıcının grup izinlerini ayarlar; kullanıcı kaydını Dizin Hizmetleri'nden alır ve bu bilgileri oturuma uygular; kullanıcının bilgi işlemini yükler ortam — tercihler, ortam değişkenleri, cihaz ve dosya izinleri, anahtarlık erişimi vb. dahil; Dock, Finder ve SystemUIServer'ı başlatır; kullanıcı için giriş öğelerini başlatır).

Sorular

Her mekanizmanın işlevini anladığımı doğrulamak istiyorum:

  1. Kaynak kodları açıkça mevcut mu? builtinMekanizma /System/Library/CoreServices/SecurityAgentPluginsolmayanların altında bulunabilecek eklentiler tarafından tanımlandığını biliyorum , ancak oluşturuldukları kaynağı bulamıyorum. builtinMekanizmaların nerede tanımlandığını da bulamıyorum .

  2. Kaynak mevcut değilse, mekanizmalar herhangi bir yerde belgeleniyor mu?

Gözlemler

  1. Daha önceloginwindow:login çağrılırsa ve bunlardan biri GUI'nin atlanmasına neden olursa kimlik bilgilerini nasıl isteyebilirim ? Bu tür kimlik bilgileri için bağlamı inceler ve varsa kendilerini atlar mı? Tuhaf görünüyor. builtin:forward-loginbuiltin:auto-login

  2. Ayrıca, Apple'ın 802.1X Kimlik Doğrulaması teknik tanıtım belgesinde açıklandığı gibi :

    Oturum Açma Penceresi Modu yapılandırıldığında ve kullanıcı oturum açma penceresine bir kullanıcı adı ve parola yazdığında iki şey olur. İlk olarak, oturum açma penceresi kullanıcının girdiği kullanıcı adını ve şifreyi kullanarak bilgisayarın 802.1X üzerinden kimliğini doğrulayacaktır. 802.1X kimlik doğrulaması başarılı olduktan sonra, oturum açma penceresi dış dizin için aynı kullanıcı adı ve parolayı doğrular.

    Bu kimlik doğrulamanın ikinci aşaması pam_opendirectory.somodül tarafından işlendiğinden ve var olan ağa bağlı olduğundan, ilk aşama (802.1X aracılığıyla ağa kimlik doğrulaması) mutlaka bundan önce gerçekleşmelidir. Yani, builtin:authenticatemekanizmadan önce gerçekleşmelidir .

    Bir rahat muayene itibaren loginwindoweklenti ikili, tür 802.1X kimlik doğrulaması-ama kolları tek mekanizma öncesinde eklentisi olduğu içinde çağrılan gibi görünüyor builtin:authenticateolduğunu loginwindow:login. Bu mekanizmanın yalnızca oturum açma istemini görüntülemekle kalmayıp 802.1X kimlik doğrulamasını da denediğini düşünerek haklı mıyım? (Öyleyse, bu sadece biraz özensiz IMHO gibi görünmekle kalmaz, aynı zamanda EFI / otomatik oturum açma kimlik bilgilerinin 802.1X oturum açma penceresi kimlik doğrulaması için kullanılamayacağını da gösterir.)

Yanıtlar:


1
  1. Loginwindow'u hatırladığım kadarıyla: login aslında GUI giriş penceresinin oluşturulmasında, builtin: policy-banner'a benzer şekilde kullanılır. Bu nedenle, diğer eylemlerden önce ortaya çıkması mantıklıdır. Bu yüzden GUI penceresi, kimlik bilgilerinin kendileri değil, aslında alakasız / atlanabilir olan penceredir.

  2. Tam olarak neyi değiştirmek istiyorsunuz ve hangi amaca yönelik olarak? Örneğin, başka durumlarda yetkilendirme eklentisinin çağrılmasını istiyorsanız, bunu auth.db dosyasını düzenleyerek yapabilirsiniz.

Ayrıca, yerleşik: kimlik doğrulaması alt sistemleri 802.1X ile yerel kimlik doğrulaması arasındaki farkı işlemelidir.


1
builtin:forward-login,privileged

Başarılı FileVault oturum açma işlemini OS X Oturum Açma Penceresine iletir ve orada oturum açma ihtiyacını atlar. Tek bir oturum açma gibi. Kurulumu yaptığım 802.1X profilini kullanmadığı için bunu ortamımda devre dışı bırakıyorum. Bunu yapmayı denerdim.

OS X: FileVault etkinleştirildiğinde otomatik oturum açma nasıl devre dışı bırakılır

sudo defaults write /Library/Preferences/com.apple.loginwindow DisableFDEAutoLogin -bool YES
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.