Tengo un archivo launchctl .plist en / Library / LaunchDaemons de la siguiente manera:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>david.ports.slocate.home.updatedb</string>
<key>ProgramArguments</key>
<array>
<string>/opt/local/bin/slocate</string>
<string>-U</string>
<string>/Users/david</string>
<string>-o</string>
<string>/Users/david/slocate_david.db</string>
</array>
<key>Umask</key>
<string>077</string>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>5</integer>
<key>Minute</key>
<integer>45</integer>
</dict>
</dict>
</plist>
Para aquellos que se preguntan, uso el puerto de slocate de MacPorts en lugar de la base de datos de localización nativa que se envía con OS X. Este trabajo .plist actualiza la base de datos de slocate específica de mi directorio principal a las 5:45 AM todos los días. La configuración de Umask de 077 hace que el archivo de salida sea legible solo para mí. Sin embargo, el archivo se crea con la propiedad de la raíz; no es lo que quiero
¿Hay una manera de especificar la propiedad del archivo de salida en lugar del valor predeterminado de la raíz? Me doy cuenta de que puedo ejecutar esto como LaunchAgent en ~ / Library / LaunchAgents, pero prefiero que el trabajo se ejecute si estoy conectado o no, por lo tanto, lo instalo como LaunchDaemon.
Estoy ejecutando OS X 10.10.3 Yosemite.
En lugar de
/Library/LaunchDaemons
utilizar el usuario basado~/Library/LaunchAgents
en su biblioteca de usuario. Luego, el proceso se ejecutará como el usuario que inició sesión, en lugar de la cuenta raíz.fuente