Программная модификация родительского контроля в 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