14

Mac OS 有一组非常基本的家长控制选项,允许您限制用户对网站和应用程序的访问,以及设置的每日时间限制。我希望能够编写脚本来执行以下操作:

允许从上午 8 点到上午 9:30 访问特定站点,限制对游戏的访问。允许从下午 5 点到下午 6:00 进行一般访问。

我不知道从哪里开始在 Mac OS 10.8 上编写脚本。有什么建议么?这是 Automator 可以处理的事情,还是我最好使用 cron 作业/shell 脚本?

4

2 回答 2

13

家长控制是使用自 10.2 以来一直存在的常规 ol' Managed Preference (aka MCX) 框架强制执行的。它将它们存储在相关用户的 mcx_attributes 属性中的本地目录服务中。

要在 GUI 之外设置它们或任何托管设置,您需要做的就是使用dscl工具的 mcx 插件将格式正确的 plist 输入用户。OS X 系统管理员社区很好地理解和记录了像这样使用本地目录服务策略。

开始理解这一点的最简单方法是设置一些家长控制,然后使用 /System/Library/CoreServices 中的目录实用程序应用程序检查 mcx 属性或dscl让您像浏览文件一样浏览目录服务的命令带有 cd 和 ls 的系统。

一旦您看到在 XML 中设置的键是什么,您就可以开始制作自己的键了。您也可以使用该dscl . -mcxexport命令。这将转储管理配置,然后您可以稍后将其导入。查看dscl . -mcxhelpmcx 插件的内幕。

要查看使用脚本实现此功能的过程是:

  1. 创建一个包含所需策略信息的 xml plist。
  2. 将该 plist 导入到正确的帐户中dscl . mcximport

一个更具前瞻性的替代方案是创建一个配置文件(它也只是一个 plist 文件。)然后使用profiles命令加载它。如果您采用配置文件路线,那么目录服务或dscl命令中就没有任何问题需要担心。

于 2013-06-06T20:09:50.930 回答
3

要设置访客帐户登录时间(时间限制或宵禁):使用以下长命令,编辑每天的开始和结束值。

dscl . -mcxedit /Users/Guest com.apple.familycontrols.timelimits limits-list '({allowancesActive = 1;curfews = {friday = ({end = "06:00:00";start = "00:00:00";},{end = "23:59:59";start = "17:00:00";});monday = ({end = "06:00:00";start = "00:00:00";},{end = "23:59:59";start = "17:00:00";});saturday = ({end = "06:00:00";start = "00:00:00";},{end = "23:59:59";start = "17:00:00";});sunday = ({end = "06:00:00";start = "00:00:00";},{end = "23:59:59";start = "17:00:00";});thursday = ({end = "06:00:00";start = "00:00:00";},{end = "23:59:59";start = "17:00:00";});tuesday = ({end = "06:00:00";start = "00:00:00";},{end = "23:59:59";start = "17:00:00";});wednesday = ({end = "06:00:00";start = "00:00:00";},{end = "23:59:59";start = "17:00:00";});};groupID = "__COMPUTER__";itemType = "com.apple.familycontrols.timelimits.computer";name = Computer;})'

要查看访客帐户时间限制的状态:

dscl . -mcxread /Users/Guest com.apple.familycontrols.timelimits limits-list

或者:

dscl . -mcxread /Users/Guest com.apple.familycontrols.timelimits limits-list | egrep "end|start" | sort | uniq

涉及的文件: /Library/Managed Preferences/Guest/com.apple.familycontrols.timelimits.plist 包含本地访客帐户的宵禁数据

/Library/Managed Preferences/Guest/complete.plist 编译来宾帐户的所有托管首选项设置

这是系统用来设置宵禁的数据: /private/var/db/dslocal/nodes/Default/users/Guest.plist

于 2016-02-16T21:04:36.860 回答