Программная модификация родительского контроля в Mac OS X

Mac OS имеет очень простой набор параметров родительского контроля, которые позволяют ограничить доступ пользователей к веб-сайтам и приложениям, а также установленный ежедневный лимит времени. Я хочу, чтобы script мог сделать что-то вроде следующего:

Разрешить доступ с 8 до 9:30 для определенных сайтов, ограничить доступ к играм. Разрешить общий доступ с 17:00 до 18:00.

Я не уверен, с чего начать с точки зрения написания сценария на Mac OS 10.8. Какие-либо предложения? Является ли это чем-то, что может обрабатывать Automator, или мне лучше использовать cron job/shell script?

Ответ 1

Родительский контроль выполняется с использованием регулярных модулей "Управляемые предпочтения" (так называемые MCX), которые были с 10.2. Он хранит их в службах локального каталога в атрибуте mcx_attributes для соответствующего пользователя.

Чтобы установить их или любую управляемую настройку за пределами графического интерфейса, все, что вам нужно сделать, это подать в правильно отформатированный plist, используя плагин mcx инструмента dscl для пользователя. Использование политики службы каталогов, подобной этой, хорошо понимается и документируется сообществом sysadmin OS X.

Самый простой способ начать работу с пониманием этого - установить некоторые родительские элементы управления, а затем проверить атрибуты mcx с помощью приложения Directory Utility из /System/Library/CoreServices или команды dscl, которая позволит вам изучить ваши службы каталогов как если бы это была файловая система с cd и ls.

Как только вы увидите, какие ключи установлены в XML, вы можете начать создавать свои собственные. Вы также можете использовать команду dscl . -mcxexport. Это приведет к удалению конфигурации управления, и вы сможете импортировать ее позже. Отметьте dscl . -mcxhelp для низкой настройки плагина mcx.

Для просмотра процесса реализации этого с помощью script является:

  • Создайте XML-слой, содержащий требуемую информацию о политике.
  • Импортируйте этот plist в соответствующую учетную запись с помощью dscl . mcximport

Более перспективной альтернативой может быть создание профиля конфигурации (который также является файлом plist.), а затем загрузить его с помощью команды profiles. Если вы берете маршрут профиля конфигурации, то в службах каталогов или в команде dscl не нужно беспокоиться.

Ответ 2

Чтобы установить время входа в учетную запись гостя (временные ограничения или комендантский час): Используйте следующую длинную комбинацию, отредактируйте значения для начала и конца для каждого дня.

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/ Управляемые настройки/Гость/com.apple.familycontrols.timelimits.plist Содержит данные комендантского часа для локальной гостевой учетной записи.

/Library/Управляемые настройки/Гость/complete.plist Компиляция всех настроек управляемого клиента для учетной записи гостя

Это данные, которые система использует для установления комендантского часа: /private/var/db/dslocal/nodes/Default/users/Guest.plist