编写 Mac 家长控制应用程序白名单脚本 - 有人成功了吗?

编写 Mac 家长控制应用程序白名单脚本 - 有人成功了吗?

虽然我们的大多数帐户都是通过工作组管理器进行管理的,但我们经常设置本地帐户,用于我工作的 K-12 机构的期末政府考试。

最好能锁定计算机,这样学生在考试期间只能使用文字处理器,而不能访问互联网。我创建了一个本地用户测试帐户,并在家长控制下调整了一些设置。然后,我就可以导出它们了:

dscl . -mcxexport /Users/testuser -o parental_controls.plist

并重新导入它们以获得良好的效果:

dscl . -mcximport /Users/testuser parental_controls.plist

在执行此操作时观察文件系统,我注意到我列入白名单的应用程序已由家长控制在后台签名,并且设置中记住了这一点。我导出的 plist 如下所示(重新格式化以便于阅读):

<key>appID</key>
  <data>+t4MAAAAACgAAAABAAAACAAAABQOiCi6O1EFrBaCbNrFU4pEjwH8zg==</data>
<key>bundleID</key>
  <string>com.microsoft.Word</string>
<key>displayName</key>
  <string>Word</string>
<key>path</key>
  <string>/Applications/Microsoft Office 2008/Microsoft Word.app</string>

我发现了一个很好的协同设计指南。不幸的是,它说你需要自己的证书来签署应用程序。[而且,由于这项工作已经超出了我的预期,我可能只能手动去 60 台电脑上完成这项工作,编写钥匙串脚本来创建新的代码签名证书,以便我可以签署一些特定的应用程序,然后启用家长控制,这似乎是疯狂的地方。]

我确实进行了测试,看看如果我删除密钥会发生什么,并且托管用户无法启动该应用程序。

有没有一个明智的方法

  • 编写此过程的脚本
    • 也许我可以使用现有的证书?
    • 也许 Apple 有一个家长控制 CLI 实用程序,我可以调用它来对它们进行签名?
  • 通过工作组管理器来管理整个实验室的本地帐户?
  • 或者对多台计算机执行相同的步骤?

答案1

我不确定这是否是您想要的,但您可以在计算机组级别使用工作组管理器限制应用程序的使用。

显然,您需要一个带有 OpenDirectory 的 OS X Server。然后,您可以在 Workgroup Manager 中定义一个计算机组,添加要用于考试的 Mac,并在该组的首选项对话框中限制应用程序。我猜您需要在每台计算机上安装完全相同版本的相关应用程序。

但我必须承认我从未真正测试过这一点,只是在几年前推出 Tiger Server 之前,在我摆弄它时做过一个简短的概念验证。

答案2

我想提一下,当您在 Workgroup Manager 中设置应用程序白名单/黑名单时,它将使您能够按路径而不是仅按应用程序的签名密钥来确定范围。甚至可以对本地用户或组执行此操作,然后导入/导出值。

相关内容