Estaba tratando de lograr esto usando una segunda cuenta (que es la cuenta de administrador) y controles parentales, pero parecía que esto no es posible hacerlo utilizando los controles parentales. Sé que hay algunos programas que puedes descargar que ayudan con esto, (pavo frío, por ejemplo). Pero sería mucho más fácil si pudiera hacer esto usando sólo herramientas ya disponibles en mac
Respuestas
¿Demasiados anuncios?Usted puede hacer esto con construido en dos herramientas:
- Gatekeeper para permitir/denegar el acceso a las aplicaciones (de los que he escrito sobre ello en este post)
- Launchd para controlar la programación
Portero
El uso de Portero, podemos crear "reglas" que le permiten bloquear/habilitar aplicaciones. Usando tu ejemplo, podemos crear una lista de Aplicaciones que sólo se permite la ejecución de los viernes:
spctl --add --label "FridayApps" /Applications/SomeApp.app
El beneficio de esto, es que se puede añadir varias aplicaciones con la misma etiqueta y habilitar/deshabilitar ellos en un solo comando:
sudo spctl --disable --label "FridayApps" <---- For Saturday thru Thursday
sudo spctl --enable --label "FridayApps" <---- For Friday
Launchd
Para esto se necesita un simple script para habilitar/deshabilitar las apps y los que usted necesita para ejecutar esto como un demonio (necesidades sudo
de privilegio), así que tiene que residir en /Library/LaunchDaemons
.
He utilizado la convención de nomenclatura com.user.FridayApps.plist
y FridayApp.sh
de la secuencia de comandos.
Script De Bash:
#!/bin/bash
DOW=$(date +%u) # Sets the Day of Week; 5 = Friday
TOD=$(date +%T) # Sets the time of Day
start="12:00:00" # Sets start time
end="23:59:00" # Sets end time
if [ $DOW -eq 5 ]
then
if [[ "$TOD" > "${start}" && "$TOD" < "${end}" ]]
then
/usr/sbin/spctl --enable --label "FridayApps"
fi
else
/usr/sbin/spctl --disable --label "FridayApps"
fi
Launchd .plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.user.FridayApps</string>
<key>ProgramArguments</key>
<array>
<string>/User/MyName/script/location/FridayApps.sh</string>
</array>
<key>StartCalendarInterval</key>
<!-- Weekdays are 1 - 5; Sunday is 0 and 7 -->
<array>
<dict>
<key>Weekday</key>
<integer>5</integer>
<key>Hour</key>
<integer>12</integer>
<key>Minute</key>
<integer>01</integer>
</dict>
<dict>
<key>Weekday</key>
<integer>6</integer>
<key>Hour</key>
<integer>00</integer>
<key>Minute</key>
<integer>00</integer>
</dict>
</array>
</dict>
<key>RunAtLoad</key>
<true/>
</plist>
##Load the `.plist`
sudo launchctl load com.user.FridayApps.plist
Cómo funciona esto
Lo que ocurre aquí es dos cosas:
launchd
ejecuta una secuencia de comandos de dos veces. Una vez en el tiempo para correr y otra vez para desactivarlo- un simple script de bash para activar/desactivar la aplicación habilitada. Se verifica la fecha y, a continuación, ejecuta el comando correspondiente
Leer la Intro
En el siguiente tutorial vamos a hacer lo siguiente:
- Crear un Perfil de Configuración que va a bloquear las aplicaciones en una ruta determinada
- Una aplicación que va a agregar y quitar el perfil en función del día
- Un LaunchDaemon que se ejecute la aplicación de cada intervalo (5 min)
Crear la Aplicación
Abrir en Editor de secuencias de Comandos y de exportación como de sólo-lectura de la aplicación y asegúrese de permanecer abiertos después de ejecutar el controlador no está en
Después de la exportación de seguir este guía para evitar que se muestran en el dock.
# Block Apps Based on Day By Josh Brown
# Last Modified: Aug 23 2018
on run
if checkDay("Friday") then
do shell script "sudo profiles remove -forced -identifier com.company.macos.blockapps"
else
do shell script "sudo profiles install forced -path /path/to/the.mobileconfig"
end if
end run
on checkDay(myDay)
set currentDay to weekday of (get current date)
if (currentDay as string) is (myDay as string) then
return true
else
return false
end if
end checkDay
Crear el Móvil Config
Uso
<key>pathBlackList</key>
<array>
<string>/path/to/an.app</string>
<string>/path/to/asecond.app</string>
</array>
para controlar qué apps para bloquear.
Guardar a continuación un archivo con la extensión .mobileconfig
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PayloadIdentifier</key>
<string>com.company.macos.blockapps</string>
<key>PayloadRemovalDisallowed</key>
<true/>
<key>PayloadScope</key>
<string>System</string>
<key>PayloadType</key>
<string>Configuration</string>
<key>PayloadUUID</key>
<string>9c24d6b3-6233-4a08-a48d-9068f4f76cf0</string>
<key>PayloadOrganization</key>
<string>Company Name</string>
<key>PayloadVersion</key>
<integer>1</integer>
<key>PayloadDisplayName</key>
<string>Block Apps In User Folder</string>
<key>PayloadContent</key>
<array>
<dict>
<key>PayloadType</key>
<string>com.apple.applicationaccess.new</string>
<key>PayloadVersion</key>
<integer>1</integer>
<key>PayloadIdentifier</key>
<string>MCXToProfile.9c24d6b3-6233-4a08-a48d-9068f4f76cf0.alacarte.customsettings.2476221c-1870-4f3e-8c52-52386029c4cf</string>
<key>PayloadEnabled</key>
<true/>
<key>PayloadUUID</key>
<string>2476221c-1870-4f3e-8c52-52386029c4cf</string>
<key>PayloadDisplayName</key>
<string>Blocks all apps in the ~/ directory./string>
<key>familyControlsEnabled</key>
<true/>
<key>pathBlackList</key>
<array>
<string>/path/to/an.app</string>
<string>/path/to/asecond.app</string>
</array>
</dict>
</array>
</dict>
</plist>
Crear el LaunchDaemon
Nota: Usted debe ser un administrador para hacer esto.
Guarde el archivo siguiente en /Library/LaunchDaemons/
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.PlzUpvoteMy.answer</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/open</string>
<string>-W</string>
<string>**/path/to/application.app**</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StartCalendarInterval</key>
<!--- Creds to @Allan for Calendar Interval -->
<!-- Weekdays are 1 - 5; Sunday is 0 and 7 -->
<array>
<dict>
<key>Weekday</key>
<integer>5</integer>
<key>Hour</key>
<integer>12</integer>
<key>Minute</key>
<integer>01</integer>
</dict>
<dict>
<key>Weekday</key>
<integer>6</integer>
<key>Hour</key>
<integer>00</integer>
<key>Minute</key>
<integer>00</integer>
</dict>
</array>
<key>UserName</key>
<string>**UserToBlock**</string>
</dict>
</plist>
Cambiar los permisos con el comando siguiente:
sudo chown root:wheel /Library/LaunchDaemons/com.MyName.plist
Carga el Demonio
Nota: Usted debe ser administrador para hacer esto.
Para iniciar el demonio, use este comando:
sudo launchctl load /Library/LaunchDaemons/com.MyName.plist
El programa buscará las aplicaciones cada 5 segundos y cerca de ellos si se están ejecutando.
Para detener el Demonio de usar este comando
sudo launchctl unload /Library/LaunchDaemons/com.MyName.plist
Aplaudo A Ti Mismo
- Aplaudo a ti mismo