¿Cómo programo un command raíz para ejecutar en intervalos?

Necesito ejecutar una secuencia de commands en intervalos que requieren la ejecución de un usuario raíz. Creé un plist que llamará a un script en ~/bin/test.sh

 user@MBP:~$ ls -lah ~/bin/ -rw-r--r-- 1 root staff 566B Feb 6 23:44 test.plist -rwxr-xr-x 1 root staff 51B Feb 6 23:38 test.sh 

Aquí están los contenidos:

 user@MBP:~$ cat ~/bin/test.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.test.script</string> <key>ProgramArguments</key> <array> <string>sh</string> <string>/Users/user/bin/test.sh</string> </array> <key>StartInterval</key> <integer>30</integer> </dict> </plist> user@MBP:~$ cat ~/bin/test.sh #!/bin/sh cp /Users/user/bin/dummy.txt /etc 

Luego vinculé el plist en /Library/LaunchAgents .

 user@MBP:~$ ls -lah /Library/LaunchAgents/ lrwxr-xr-x 1 root wheel 31B Feb 5 06:28 com.test.script.plist -> /Users/user/bin/test.plist 

Pero todo esto no funciona. Cuando miro en /var/logs/system.log , solo digo:

 Feb 7 14:42:12 MBP com.apple.launchd.peruser.501[242] (com.test.script`[925]): Exited with code: 1 

  • Archivo de host específico del usuario
  • No se puede iniciar la computadora después de usar sudo crontab -e
  • El usuario cambió a 502 en OSX
  • osascript no está permitido el acceso de asistencia. (-1728)
  • Ninguna de mis counts de administrador son usuarios sudo
  • Otorga privilegio sudo no administrativo, pero `~` es su propio hogar ~
  • Sudo con Sidekick
  • sudo pidiendo una contraseña aunque el usuario no tenga una contraseña establecida
  • 3 Solutions collect form web for “¿Cómo programo un command raíz para ejecutar en intervalos?”

    La página man para launchd.plist describe una key UserName que se requiere al ejecutar el trabajo como raíz. Presumiblemente, el valor debe ser "raíz".

    No soy un gurú, pero parece que esto es lo único que te hace falta, a less que los agentes de lanzamiento no puedan vincularse simbólicamente.

    Entonces, según esta respuesta de SuperUser , debes ejecutar launchctl como sudo para retener los permissions

     sudo load -w /Library/LaunchDaemons/com.apple.samplelaunchdscript.plist 

    Las lists de properties en LaunchAgents también funcionan, pero tienes que cargar tanto agentes como daemons con sudo:

     sudo chown root ~/bin/test.plist sudo launchctl load /Library/LaunchAgents/test.plist 

    Si el plist no tiene una tecla Disabled, se carga automáticamente en el siguiente inicio de session o reinicio, y -w no es necesario.

    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).