【问题标题】:Programmatically modifying parental controls on Mac OS X以编程方式修改 Mac OS X 上的家长控制
【发布时间】:2013-04-25 13:42:42
【问题描述】:

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

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

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

【问题讨论】:

  • 听起来是个很棒的应用程序。不过,不确定 Apple 是否会允许它在 mac 应用商店上架。

标签: macos osx-mountain-lion automator


【解决方案1】:

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

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

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

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

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

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

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

【讨论】:

  • 非常感谢,这正是我想要的!
  • 我的服务器似乎没有 MCX 插件。有没有办法在没有它的情况下通过命令行管理家长控制?
  • 您运行的是什么版本的操作系统?它在 10.9 中仍然存在,还添加了一个 mcxprofiles 插件。它不在手册页中。只需启动 dscl,然后键入“帮助”即可查看所有用法。
  • 谢谢@macshome,我找到了。我正在运行 10.8.5。不知道我一开始是怎么错过的。
  • blog.takelap.com/2010/05/… 有一个脚本示例,FWIW...
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-22
    • 2015-05-02
    • 1970-01-01
    • 2010-09-30
    • 1970-01-01
    • 1970-01-01
    • 2012-10-25
    相关资源
    最近更新 更多