2014-05-08 12 views
5

Viene visualizzato lo stesso errore launchctl: Dubious ownership on file (skipping): ~.plist nothing found to load dall'esecuzione di un comando launchctl load in tre posizioni diverse come segue e nessuno di essi funziona:Mac OS X 10.9.2, errore di avvio: "launchctl: proprietà dubbia sul file (salta)"

sudo launchctl load /Library/LaunchDaemons/updates.novel.plist 
sudo launchctl load /Library/LaunchAgents/updates.novel.plist 
sudo launchctl load /Users/username/Library/LaunchAgents/updates.novel.plist 

Qui di seguito è il mio file di updates.novel.plist, la prego di dare un'occhiata e fatemi sapere cosa è il problema? grazie

<?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>GroupName</key> 
    <string>admin</string> 
    <key>UserName</key> 
    <string>Username</string> 
    <key>Debug</key> 
    <true/> 
    <key>Label</key> 
    <string>updates.novel</string> 
    <key>ProgramArguments</key> 
    <array> 
     <string>/Applications/AMPPS/php-5.3/bin/php</string> 
     <string>/Applications/AMPPS/www/files/allnovels/novel.php</string> 
     <string>--daemon</string> 
    </array> 
    <key>StandardErrorPath</key> 
    <string>/var/log/files/error.1.log</string> 
    <key>StandardOutPath</key> 
    <string>/var/log/files/error.2.log</string> 
    <key>RunAtLoad</key> 
    <true/> 
    <key>AbandonProcessGroup</key> 
    <true/> 
    <key>StartCalendarInterval</key> 
     <dict> 
     <key>Hour</key> 
     <integer>14</integer> 
     <key>Minute</key> 
     <integer>0</integer> 
     </dict> 
</dict> 
</plist> 
+2

Vedere http://apple.stackexchange.com/questions/3250/why-am-i-getting-a-dubuntu-ownload-del-file-error-when-launch-agent-runs-my, la parte superiore risultato quando su google "lancio dubbia proprietà". – zneak

+1

@zneak, ho provato a 'sudo chmod 644 ', ma non ha funzionato. – Sami

+1

si ottiene un dubbio messaggio di proprietà quando si tenta di avviare un servizio con un utente diverso da quello a cui appartiene il file. Se si usa 'sudo', deve essere di proprietà di' root', ma non è necessario usare 'sudo'. – zneak

risposta

4

I servizi di avvio devono essere avviati dall'utente proprietario del file Plist. Se il proprietario non è root, il servizio non deve essere avviato con sudo.

Inoltre, le autorizzazioni sul file devono negare l'accesso in scrittura a tutti gli utenti tranne il proprietario.

Infine, il file deve essere un file normale (cioè non una pipa o un socket o altro).

1

In man launchctl possiamo leggere:

Note that per-user configuration files (LaunchAgents) must be owned by the user loading them. All sytem-wide daemons (LaunchDaemons) must be owned by root. Configuration files must not be group- or world-writable. These restrictions are in place for security reasons.

Questo è il modo in launchctl.c verifica che:

bool path_goodness_check(const char *path, bool forceload) { 

    if (forceload) { 
     return true; 
    } 

    if (sb.st_mode & (S_IWOTH|S_IWGRP)) { 
     fprintf(stderr, "%s: Dubious permissions on file (skipping): %s\n", getprogname(), path); 
     return false; 
    } 

    if (sb.st_uid != 0 && sb.st_uid != getuid()) { 
     fprintf(stderr, "%s: Dubious ownership on file (skipping): %s\n", getprogname(), path); 
     return false; 
    } 

    if (!(S_ISREG(sb.st_mode) || S_ISDIR(sb.st_mode))) { 
     fprintf(stderr, "%s: Dubious path. Not a regular file or directory (skipping): %s\n", getprogname(), path); 
     return false; 
    } 

    if ((!S_ISDIR(sb.st_mode)) && (fnmatch("*.plist", path, FNM_CASEFOLD) == FNM_NOMATCH)) { 
     fprintf(stderr, "%s: Dubious file. Not of type .plist (skipping): %s\n", getprogname(), path); 
     return false; 
    } 

    return true; 

} 

Quindi, in altre parole, correggere le proprietà, autorizzazioni o percorso del file .plist o forzare il caricamento (-F).

+0

* Grazie *! Stavo correndo in "Not of type .plist" su alcuni vecchi driver HP TouchPad quando provavo ad avviare il demone 'novacom'. Lo script 'launchctl' non aveva aggiunto .plist, e quindi non sarebbe iniziato. – phatskat