• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

[10.13 High Sierra] Problem mit Launchd

Slashwalker

Winterbanana
Registriert
15.05.06
Beiträge
2.213
Hallo
seit dem heutigen Update auf High Sierra funktioniert mein LaunchAgent nicht mehr.
Code:
<?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>AFPmount</string>
        <key>ProgramArguments</key>
        <array>
          <string>/usr/local/bin/nas</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>StartInterval</key>
        <integer>10</integer>
<key>StandardOutPath</key>
    <string>/var/log/nas.log</string>
    <key>StandardErrorPath</key>
    <string>/var/log/nas.log</string>
</dict>
</plist>
Dieser soll meine NAS Freigaben beim Start oder nach Netzwerkunterbrechungen neu mounten.
Das Script unter /usr/local/bin funktioniert wenn ich es manuell aufrufe.


EDIT: Unter High Sierra muss die plist wohl root gehören und nicht dem Benutzer :(
 
Zuletzt bearbeitet:

Slashwalker

Winterbanana
Registriert
15.05.06
Beiträge
2.213
Problem ist erledigt, ja. Aber unter Sierra gehörte die plist definitiv mir und nicht root.
 

Ijon Tichy

Clairgeau
Registriert
21.11.06
Beiträge
3.689
Aus dem Daemons and Services Programming Guide:

Daemons and agents that are installed globally must be owned by the root user. Agents installed for the current user must be owned by that user. All daemons and agents must not be group writable or world writable. (That is, they must have file mode set to 600 or 400.)

Ich bin ziemlich sicher, dass das schon immer so war.

War es vorher vielleicht ein User Agent? In welchem Verzeichnis liegt denn die plist? Wurde sie verschoben?
 

Slashwalker

Winterbanana
Registriert
15.05.06
Beiträge
2.213
Meine plist lag schon immer unter ~/Library/LaunchAgents, also in meinem User Verzeichnis.
 

Ijon Tichy

Clairgeau
Registriert
21.11.06
Beiträge
3.689
Dann muss sie laut Doku ja doch deinem User gehören. Wahrscheinlich haben die Berechtigungen aber nicht gepasst - wahrscheinlich die Lese- oder Execute-Berechtigung? Oder die Gruppe? Kann man jetzt wahrscheinlich eh nicht mehr feststellen...
 

Slashwalker

Winterbanana
Registriert
15.05.06
Beiträge
2.213
Ich hatte die plist mit ditto im Terminal aus dem Time Machine Backup zurückkopiert. Aber egal mit root geht es ja.
 

MacAlzenau

Golden Noble
Registriert
26.12.05
Beiträge
22.501
Die plist verweist nur auf den Daemon/Agent. Sie kann daher durchaus dem Benutzer gehören, obwohl der durch sie gestartete Prozess root gehört. Bitte sauber trennen in der Diskussion.
 

Ijon Tichy

Clairgeau
Registriert
21.11.06
Beiträge
3.689
Guter Punkt. Allerdings finde ich im launchd Tutorial (unter Troubleshooting - My job is not loaded on login/boot) folgende Hinweise (relevanter Punkt in fett):
  • Check the job definition has the proper file extension (.plist (Error: Dubious file. Not of type .plist)
  • Check the job definition for wellformedness (Error: no plist was returned for)
    host:~ user$ plutil -lint ~/Library/LaunchAgents/com.example.app.plist /Users/Guest/Library/LaunchAgents/com.example.app.plist: OK
  • Check the Disabled key. Disabled jobs won't be automatically loaded.
  • Check if the job has been disabled in the override database
  • Check the permissions of the job definition. Job definitions have to be readable by the user. Job definitions must not be writable by group or other. Suggested privileges: 0644. (Error: Dubious permissions on file)
  • Check the permissions of the directory containing the job definition. It has to be searchable by the user and must not be writable by group or other. Suggested privileges: 0755
  • Check who owns the job definition. Agents must be owned by their respective user, daemons by root. (Error: Dubious ownership on file)
  • Make sure the Label you provided is unique for this particular launchd instance.
Es scheint also, als ob die Hinweise zur Ownership sich schon auf die plist beziehen und die Begriffe Daemon und User Agent synonym für die jeweiligen plist-Dateien verwendet werden. Was zugegebenermaßen aber in der Dokumentation nicht 100% klar definiert wird. Was die App oder das Script angeht, das ausgeführt wird, kommt es vermutlich auch darauf an, unter welchem User es ausgeführt werden soll (was ja in der plist konfigurierbar ist).

Oder hast du andere Erkenntnisse? Fände ich interessant zu hören!