2013-05-01 14 views
12

Mac OS dispone di un set di opzioni di controllo parentale molto semplice che consente di limitare l'accesso dell'utente a siti Web e app, nonché di impostare limiti di tempo giornalieri. Voglio essere in grado di script questo per fare qualcosa di simile al seguente:Modifica programmatica dei controlli censura su Mac OS X

Permettere l'accesso dalle 8 alle 9:30 per siti specifici, limitare l'accesso ai giochi. Permetti l'accesso generale dalle 17:00 alle 18:00.

Non sono sicuro da dove iniziare in termini di script su Mac OS 10.8. Eventuali suggerimenti? È qualcosa che Automator può gestire o sto meglio usando uno script cron/shell?

+0

Suona come una grande idea per un app. Non sono sicuro se Apple lo consentirebbe nell'app store mac, però. – Jordan

risposta

13

I controlli parentali vengono applicati utilizzando i normali quadri di preferenza gestita (MCX) che sono stati in uso dal 10.2. Li memorizza nei servizi di directory locali nell'attributo mcx_attributes per l'utente in questione.

Per impostarli, o qualsiasi impostazione gestita, al di fuori della GUI, tutto ciò che dovete fare è inserire un plist formattato correttamente usando il plugin mcx dello strumento dscl nell'utente. L'utilizzo della politica del servizio directory locale come questo è ben compreso e documentato dalla comunità sysadmin di OS X.

Il modo più semplice per iniziare a comprendere questo è impostare alcuni Controlli genitori, quindi ispezionare gli attributi mcx utilizzando l'app Directory Utility da/System/Library/CoreServices o il comando dscl che consente di esplorare i servizi di directory come se fosse un file system con cd e ls.

Una volta visualizzate le chiavi che vengono impostate nell'XML, è possibile iniziare a creare le proprie. È inoltre possibile utilizzare il comando dscl . -mcxexport. Questo farà uscire la configurazione di gestione e potrai quindi importarla in seguito. Dai un'occhiata a dscl . -mcxhelp per il basso sul plugin mcx.

Per rivedere il processo di attuazione del presente con uno script è:

  1. Creare un plist XML che contiene le informazioni sui criteri che si desidera.
  2. Importa che plist sul debito conto con dscl . mcximport

A più lungimirante alternativa sarebbe quella di creare un profilo di configurazione (che è solo un file plist pure.) E poi caricarlo con il comando profiles. Se si prende il percorso del profilo di configurazione, non vi è alcun problema nei servizi di directory o nel comando dscl di cui preoccuparsi.

+0

Grazie mille, questo è esattamente quello che stavo cercando! –

+0

Il mio server non sembra avere il plugin MCX. Qualche idea se c'è un modo di gestire i controlli parentali da riga di comando senza di esso? – dsjoerg

+0

Quale versione del sistema operativo è in esecuzione? È ancora disponibile in 10.9 con l'aggiunta di un plug-in mcxprofiles. NON è nella pagina man. Basta avviare dscl e quindi digitare 'help' per vedere tutto l'utilizzo. – macshome

4

Per impostare i tempi di account Password ospite (limiti di tempo, o coprifuoco): Usare il seguente lungo comnand, modificare i valori di inizio e fine per ogni giorno.

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;})' 

per visualizzare lo stato dei termini di account guest:

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

o:

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

file coinvolti: /Library/Preferences Managed/Guest/com.apple. familycontrols.timelimits.plist Contiene i dati di coprifuoco per conto Guest locale

/Library/Preferences Managed/Guest/complete.plist compilazione di tutte le impostazioni gestite per account Guest

Questi sono i dati che il sistema utilizza per impostare il coprifuoco: /private/var/db/dslocal/nodes/Default/users/Guest.plist