虽然我们的大多数帐户都是通过工作组经理管理的,但我们经常设置本地帐户,用于我工作的 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>
我找到了一个很好的 codesigning 指南。不幸的是,它说您需要自己的证书来签署应用程序。[而且,由于这已经变得比我想象的要多,我可能只是手动去 60 台计算机并执行此操作,编写钥匙串脚本以创建新的代码签名证书,这样我就可以签署一些特定的应用程序,然后启用家长控制似乎是一个疯狂的地方。]
我进行了测试,看看如果我删除了密钥会发生什么,并且托管用户无法启动应用程序。
有没有明智的方法
- 编写此过程的脚本
- 也许我可以使用现有的证书?
- 也许 Apple 有一个家长控制 CLI 实用程序,我可以调用它来签署它们?
- 从 Workgroup Manager 管理整个实验室的本地帐户?
- 或以其他方式对许多计算机执行相同的步骤?
我不确定这是否是您正在寻找的,但您可以使用 Workgroup Manager 在计算机组级别上限制应用程序的使用。
显然,您需要一个带有 OpenDirectory 的 OS X 服务器。然后,您可以在 Workgroup Manager 中定义计算机组,添加要用于考试的 Mac,并在该组的首选项对话框中限制应用程序。我猜您在每台计算机上都需要完全相同版本的相关应用程序。
但我不得不承认我从来没有真正测试过这个,几年前我只是做了一个简短的概念证明,当时我正在玩弄 Tiger Server,然后才推出它。
我确实想提一下,当您在 Workgroup Manager 中设置应用程序白名单/黑名单时,它将使您能够按路径而不是仅通过应用程序的签名密钥来确定范围。甚至可以在本地用户或组上执行此操作,然后导入/导出值。