如何在屏幕保护程序后调用Mac授权插件来解锁锁定屏幕?

时间:2014-07-03 20:49:04

标签: macos authentication plugins authorization

我正在尝试编辑auth.db中的规则,以便在登录窗口出现时调用授权插件:

  1. 重启Mac后
  2. 手动注销后
  3. 从睡梦中醒来时
  4. 屏幕保护程序后
  5. 这样做的理由是在没有用户手动输入登录名/密码的情况下启用解锁/登录。

    修改了system.login.console规则后,我获得了1)和2)事件而不是3)和4)事件上调用的授权插件。对于3)和4)我尝试以几种方式编辑system.login.screensaver规则,例如:

    <dict>
        <key>class</key>
        <string>user</string>
        <key>mechanisms</key>
        <array>
            <string>NullAuthPlugin:invoke,privileged</string>
            <string>builtin:authenticate</string>
            <string>authinternal</string>
        </array>
        <key>group</key>
        <string>admin</string>
        <key>session-owner</key>
        <true/>
        <key>shared</key>
        <false/>
        <key>allow-root</key>
        <false/>
    </dict>
    

    插件在睡眠后醒来时被调用,但在屏幕保护程序后不会在事件4)上调用。

    如何在屏幕保护程序之后调用授权插件?

1 个答案:

答案 0 :(得分:5)

我也挣扎了一段时间(你的问题帮了我很多顺便说一下,谢谢你!)

这对我有用:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>allow-root</key>
    <false/>
    <key>authenticate-user</key>
    <true/>
    <key>class</key>
    <string>user</string>
    <key>created</key>
    <real>426709293.721896</real>
    <key>group</key>
    <string>admin</string>
    <key>mechanisms</key>
    <array>
        <string>NameAndPassword:invoke</string>
        <string>builtin:policy-banner</string>
        <string>builtin:authenticate,privileged</string>
        <string>builtin:auto-login,privileged</string>
        <string>builtin:forward-login,privileged</string>
        <string>PKINITMechanism:auth,privileged</string>
    </array>
    <key>modified</key>
    <real>427141220.594918</real>
    <key>session-owner</key>
    <true/>
    <key>shared</key>
    <false/>
    <key>timeout</key>
    <integer>2147483647</integer>
    <key>tries</key>
    <integer>10000</integer>
    <key>version</key>
    <integer>0</integer>
</dict>
</plist>

注意: 我使用了NameAndPassword Apple示例,而不是NullAuth,所以如果您在问题中使用NullAuth,那么您需要更改它。

显然,您的时间戳和内容也会有所不同。为你列出了你列出的所有4个案例。

我不确定所有这些机制是否都是必要的,所以我将来可能会对其进行清理,但现在它可行。