Può essere avviato per impostare un proprietario diverso sui file creati durante l'esecuzione di un lavoro .plist?

2

Ho un file launchctl .plist in / Library / LaunchDaemons come segue:

<?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>

Per coloro che si stanno chiedendo, io uso la porta slocate di MacPorts invece del database di localizzazione nativo fornito con OS X. Questo processo .plist aggiorna il database slocate specifico alla mia home directory alle 5:45 del mattino. L'impostazione Umask di 077 rende il file di output leggibile solo da me. Tuttavia, il file viene creato con la proprietà di root; non quello che voglio.

Esiste un modo per specificare la proprietà del file di output anziché il valore predefinito di root? Mi rendo conto che posso lanciarlo come LaunchAgent sotto ~ / Library / LaunchAgents, ma preferisco che il lavoro venga eseguito indipendentemente dal fatto che io sia connesso o meno, quindi lo installo come LaunchDaemon.

Utilizzo OS X 10.10.3 Yosemite.

    
posta user3112401 20.05.2015 - 15:56
fonte

2 risposte

4

Ho alcuni suggerimenti. Secondo il manuale, puoi impostare il tasto UserName- link . È possibile utilizzare periodici con uno script di shell per eseguire slocate e modificare le autorizzazioni del database. Imposta un utente crontab. Un crontab utente verrà eseguito solo all'ora specificata.

    
risposta data 20.05.2015 - 18:30
fonte
0

Invece di /Library/LaunchDaemons usa il ~/Library/LaunchAgents basato dall'utente nella tua libreria utente. Quindi il processo verrà eseguito come utente connesso, invece che come account root.

    
risposta data 20.05.2015 - 16:04
fonte

Leggi altre domande sui tag