1 votos

¿Cómo puedo programar un comando Root para que se ejecute a intervalos?

Necesito ejecutar un script en intervalos que requiere un usuario Root para ejecutarse. He creado 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 he enlazado simbólicamente 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 /var/logs/system.log sólo dice:

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

1voto

Tyler Wayne Puntos 562

La página de manual de launchd.plist describe un UserName que se requiere cuando se ejecuta el trabajo como Root. Presumiblemente, el valor debe ser "Root".

No soy un gurú, pero parece que esto es lo único que te falta - a menos que los agentes de lanzamiento no puedan ser simbolizados.

0voto

Julien Chastang Puntos 161

Así que según esta respuesta de SuperUser Tienes que ejecutar launchctl como sudo para mantener los permisos

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

0voto

Las listas de propiedades en LaunchAgents también funcionan, pero hay que cargar tanto los agentes como los demonios con sudo:

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

Si el plist no tiene una clave deshabilitada, se carga automáticamente en el siguiente inicio de sesión o reinicio, y -w no es necesario.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X