2014-05-08 3 views
5

Ich bekomme den gleichen Fehler launchctl: Dubious ownership on file (skipping): ~.plist nothing found to load von einem launchctl load Befehl an drei verschiedenen Standorten wie folgt ausgeführt, und keiner von ihnen funktioniert:Mac OSX 10.9.2, launchd Fehler: "launchctl: Dubiose Besitz an Datei (Überspringen)"

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 

Unten ist mein updates.novel.plist Datei, könnten Sie bitte einen Blick und lassen Sie mich wissen, was das Problem ist? Danke

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

Siehe http://apple.stackexchange.com/questions/3250/why-am-i-getting-a-dubious-ownership-of-file-error-when-launch-agent-runs-my, die Spitze Ergebnis beim googeln "launchd dubioser Besitz". – zneak

+1

@zneak, versuchte ich schon versucht 'sudo chmod 644 ', aber es hat nicht funktioniert. – Sami

+1

Sie erhalten eine dubiose Besitznachricht, wenn Sie versuchen, einen Dienst mit einem anderen Benutzer als dem, zu dem die Datei gehört, zu starten. Wenn Sie 'sudo' verwenden, muss es' root' gehören, aber Sie müssen 'sudo' nicht verwenden. – zneak

Antwort

4

launchd-Dienste müssen vom Benutzer gestartet werden, der die Plist-Datei besitzt. Wenn der Eigentümer nicht root ist, darf der Dienst nicht mit sudo gestartet werden.

Außerdem müssen die Berechtigungen für die Datei den Schreibzugriff für alle Benutzer mit Ausnahme des Besitzers sperren.

Schließlich muss die Datei eine reguläre Datei sein (dh keine Pipe oder ein Socket oder irgendetwas anderes).

1

In man launchctl können wir lesen:

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.

Dies ist, wie launchctl.c prüft, dass:

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; 

} 

Also mit anderen Worten, korrigieren Sie die Besitzer, die Berechtigungen oder Pfad Ihrer .plist Datei oder erzwinge das Laden (-F).

+0

* Danke *! Bei einigen alten HP TouchPad-Treibern stieß ich auf die Fehlermeldung "Not of type .plist", als ich versuchte, den 'novacom'-Daemon zu starten. Das 'launchctl'-Skript hatte keine .plist-Datei angehängt und würde daher nicht starten. – phatskat