Ich möchte beim Start ein Skript als bestimmter Benutzer ausführen (nicht beim Anmelden). Ich dachte, ein LaunchDaemon würde es tun, aber 'man launchd' sagt:
"Wenn Sie möchten, dass Ihr Dienst als bestimmter Benutzer in der Umgebung dieses Benutzers ausgeführt wird, ist es das EINZIGE unterstützte Mittel, dies unter Mac OS X zu erreichen. Mit anderen Worten, es reicht nicht aus, eine Setuid auszuführen (2) ) unter Mac OS X ein Benutzer im wahrsten Sinne des Wortes zu werden. "
Sie machen keine Witze - wenn ich versuche, mein Skript als LaunchDaemon auszuführen, funktioniert es nicht. Insbesondere versuche ich, einige Schlüsselbundoperationen mit dem Befehl 'security' zu automatisieren, und ich kann den Standardschlüsselbund nicht ändern, wenn ich das Skript über LaunchDaemon ausführe, obwohl das Skript gut funktioniert, wenn es mit sudo aus einer Shell ausgeführt wird.
Ein LaunchAgent funktioniert nicht, da das Ziel darin besteht, dass die Prozesse ausgeführt werden, ohne dass sich ein Benutzer anmeldet, und LaunchAgents nur ausgeführt wird, wenn sich jemand anmeldet. Ich habe mir cron und die @ reboot-Direktive angesehen und das sieht vielversprechend aus, aber ich habe gelesen, dass cron ist veraltet unter OSX.
Speichern Sie als globaler Daemon (
/Library/LaunchDaemons
) und geben Sie den Benutzer mit dem Schlüssel anUserName
:quelle
Es gibt eine Reihe anderer Stellen, an denen Sie Startelemente in OS X ausblenden können (von denen die meisten nicht unterstützt werden). Ich würde es versuchen
/etc/rc.local
; Ich erinnere mich an die Arbeit in Panther, daher besteht die Möglichkeit, dass sie heute noch funktioniert.quelle