6

我正在尝试覆盖 OS X 中的默认登录/锁定屏幕,以允许用户以提供密码以外的其他方式登录(想想指纹扫描仪或“敲门解锁”的工作原理),我正在寻找一种方法现在做几个小时 - 我发现看起来有用的是授权插件 ADC 参考和这个例子:https ://developer.apple.com/library/mac/samplecode/NameAndPassword/Introduction/Intro.html#//apple_ref /doc/uid/DTS10004022

这个 NameAndPassword xcode 项目有点过时,但我设法通过指定 Base SDK(有一个硬编码的错误路径)来构建它,然后我将生成的 .bundle 文件放入/Library/Security/SecurityAgentPlugins目录中。锁定屏幕后没有任何变化,但我知道我需要将授权角色添加到/etc/authorization文件中,我知道 Mavericks 中不再存在该角色(有这个 auth.db 文件和整个 auth API),但我因此被卡住了这里 - 我不知道如何将 NameAndPassword 放入这个数据库。

请让我知道我该怎么做,或者如果您知道其他方式来实现我的目标。

4

1 回答 1

12

我找到了一种编辑数据库的方法——起初,我尝试了直接的/var/private/db/auth.dbsqlite 修改,但没有奏效,所以过了一段时间后,我设法做到了比我想象的要容易:

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

  2. 在此之后,您需要修改结果outfile.plist,如 NullAuthPlugin 自述文件中所述:

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

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

  3. 然后,将其保存到数据库中:

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

然后更改应该在系统的任何登录/锁定屏幕上可见,但要小心!

您将无法使用当前版本的 NameAndPassword 示例进行身份验证!

在修改数据库之前,请务必与您的 Mac 建立有效的 SSH 连接,这样您就可以使用其他设备恢复更改(只需重复数据库修改过程,但这次删除您之前添加的行)。

于 2014-02-07T02:19:02.547 回答