• 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

Brauche Hilfe zu launchd und afp mount

  • Ersteller Deleted member 99757
  • Erstellt am

Deleted member 99757

Gast
ich habe einen launchd job eingerichtet, der ein commandline tool ausführt. Das tool benötigt zwingend admin Rechte, daher ist es in /Library/LaunchAgents installiert. Problem ist nun ,dass ich auch ein afp laufwerk mounten muss! Da ich das passwort vorher nicht kenne, kann ich es auch nicht im code hinterlegen. Wie kann ich nun user & passwort speichern?

User und Passwort habe ich schon im Schlüsselbund abgelegt und wenn ich das Tool per terminal starte, dann wird das afp laufwerk auch gemountet. Aber als admin mittels launchd klappt es nicht (Fehler 22). Achso ich nutze netfs_MountURLWithAuthenticationSync.

Hoffe jemand kann mir helfen! Danke schön
Robert
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
ich habe einen launchd job eingerichtet, der ein commandline tool ausführt. Das tool benötigt zwingend admin Rechte, daher ist es in /Library/LaunchAgents installiert.
1) in die Ordner LaunchDaemons und LaunchAgents gehören nur die Startkonfigurationen für die Jobs (*.plist), nicht die Tools selbst. (Vorgesehene und abgesicherte Speicherorte für sowas wären /Library/PrivilegedHelperTools bzw /usr/local/{bin,sbin,libexec} )

2) LaunchAgents laufen nicht im privilegierten, sondern im Benutzerkontext.

Wie kann ich nun user & passwort speichern?
Im Schlüsselbund des Benutzers, der die Aktion ausführt.
Eine privilegierte, systemweite Option ruft nach dem System-Keychain.
 

Deleted member 99757

Gast
1) in die Ordner LaunchDaemons und LaunchAgents gehören nur die Startkonfigurationen für die Jobs (*.plist), nicht die Tools selbst. (Vorgesehene und abgesicherte Speicherorte für sowas wären /Library/PrivilegedHelperTools bzw /usr/local/{bin,sbin,libexec}
Habe mich wahrscheinlich nicht richtig ausgedrückt :( Ja, ich habe die plist in /Library/LaunchAgents installiert. Das Programm wird über ProgramArguments aufgerufen.

2) LaunchAgents laufen nicht im privilegierten, sondern im Benutzerkontext.
Was genau meinst du damit? Laut Apple laufen jobs in ~/Library/LaunchAgents als benutzer und in /Library/LaunchAgents bzw. /Library/LaunchDaemon als root. Das ist auch meine Erfahrung.

Im Schlüsselbund des Benutzers, der die Aktion ausführt.
Eine privilegierte, systemweite Option ruft nach dem System-Keychain.
User und Passwort sind im aktuellen Benutzer Schlüsselbund gespeichert. Habe auch einen Eintrag im System Schlüsselbund gespeichert, aber das hilft nicht.

Wenn ich mein Programm als root im Terminal ausführe funktioniert es, aber wenn ich es als launchd job laufen lasse, dann kann ich mich nicht mit dem afp laufwerk verbinden. Wahrscheinlich werden launchd jobs mit einem anderen login ausgeführt? id gibt mir aus, dass der login user _spotlight ist.

Schöne Grüße
Robert
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Laut Apple laufen jobs in ~/Library/LaunchAgents als benutzer und in /Library/LaunchAgents bzw. /Library/LaunchDaemon als root.
Da hast du was missverstanden. Oder diese Passage übersprungen:
If you are running per-user background processes for Mac OS X v10.4 and later, launchd(8) is also the preferred way to start these processes. These per-user processes are referred to as user agents. A user agent is essentially identical to a daemon, but is specific to a given logged-in user and executes only while that user is logged in.
LaunchDaemons laufen als root.
LaunchAgents laufen immer im Benutzerkontext (bei dessen Anmeldung).
Der einzige Unterschied der Agents im Benutzer- oder der im globalen Library-Ordner ist die Frage, ob der Job nur bei einem ganz bestimmten, oder bei allen Benutzern ausgeführt wird.
 

Deleted member 99757

Gast
LaunchDaemons laufen als root.
LaunchAgents laufen immer im Benutzerkontext (bei dessen Anmeldung).
Der einzige Unterschied der Agents im Benutzer- oder der im globalen Library-Ordner ist die Frage, ob der Job nur bei einem ganz bestimmten, oder bei allen Benutzern ausgeführt wird.
Achso, das verstehe ich jetzt. Besten Dank :) Da muss ich wohl was in meinem Programm umbauen ...