![编写 Mac 家长控制应用程序白名单脚本 - 有人成功了吗?](https://linux22.com/image/485489/%E7%BC%96%E5%86%99%20Mac%20%E5%AE%B6%E9%95%BF%E6%8E%A7%E5%88%B6%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E7%99%BD%E5%90%8D%E5%8D%95%E8%84%9A%E6%9C%AC%20-%20%E6%9C%89%E4%BA%BA%E6%88%90%E5%8A%9F%E4%BA%86%E5%90%97%EF%BC%9F.png)
虽然我们的大多数帐户都是通过工作组管理器进行管理的,但我们经常设置本地帐户,用于我工作的 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 中设置应用程序白名单/黑名单时,它将使您能够按路径而不是仅按应用程序的签名密钥来确定范围。甚至可以对本地用户或组执行此操作,然后导入/导出值。