2014-02-05 103 views
5

我想重寫OS X中的默認登錄/鎖定屏幕,以允許用戶以其他方式登錄而不是提供密碼(想想指紋掃描儀或如何「敲開解鎖「的作品),我正在尋找一種方法來做它現在幾個小時 - 我發現看起來很有用的是授權插件ADC參考和本示例:https://developer.apple.com/library/mac/samplecode/NameAndPassword/Introduction/Intro.html#//apple_ref/doc/uid/DTS10004022在OS X小牛自定義登錄/鎖定屏幕

此NameAndPassword xcode項目是有點過時,但我設法簡單地通過指定Base SDK(有一個硬編碼的錯誤路徑)來構建它,然後我將生成的.bundle文件放到/Library/Security/SecurityAgentPlugins目錄中。我鎖定屏幕後沒有任何變化,但我知道我需要將授權角色添加到/etc/authorization文件中,我知道這個文件在小牛隊中不復存在(這裏有auth.db文件和整個auth API),但我是卡在這裏 - 我不知道如何把NameAndPassword放在這個數據庫中。

請讓我知道我該怎麼做才行,或者如果你知道一些其他方式來實現我的目標。

回答

10

我找到了一種方法來編輯數據庫 - 起初,我試圖直接/var/private/db/auth.db sqlite的修改,但它沒有工作,所以一段時間後,我成功地做到這一點更容易比我想象我會:

  1. security authorizationdb read system.login.console > outfile.plist

  2. 在此之後,您需要修改所產生的outfile.plist,因爲它在NullAuthPlugin README文件說:

    <key>mechanisms</key> 
        <array> 
        <string>NameAndPassword:invoke</string> 
    

    (最後一行是您需要添加到文件中的行)。

  3. 然後將其保存到數據庫:

    security authorizationdb write system.login.console < outfile.plist

那麼變化應該是你的系統的任何登錄/鎖屏上顯示,但要小心!

您將無法使用當前版本的NameAndPassword示例進行身份驗證!

一定要estabilish工作SSH連接到您的Mac 您修改數據庫之前,這樣你就可以恢復使用其它設備(重複剛纔的分貝修改過程中的變化,但這個時間刪除行你之前添加)。

+0

執行完這些步驟後,我已經能夠替換用戶註銷時使用的認證模塊,或者明確地轉到登錄屏幕。看起來這個自定義登錄模塊在計算機重新啓動或從睡眠中醒來時不會使用。有沒有解決這個問題? –

+0

這很正常。這是一個不同的機制。至少據我所知,除了一些自定義的屏幕保護程序外,您無法對此做任何事情。 –