LaunchAgents: App als root starten

366
moscoquera

Ich mache eine Kiosk-App für osx. Es gab eine Vorgängerversion dieser App, die unter OSX 10.8 funktionierte, aber die Computer wurden aktualisiert und jetzt funktioniert die App nicht mehr richtig. Ich muss vermeiden, dass der Benutzer den Prozess beenden kann. Rufen wir also die Haupt-App als A auf. "A" sollte von jedem Benutzer als root ausgeführt werden können, um zu verhindern, dass er von Benutzern getötet wird. Ich verwende ein LaunchAgent, um es automatisch zu starten, wenn sich der Benutzer anmeldet. Es ist kein Problem, A als Root auszuführen. da Launchctl A nicht als root ausführen kann. und ich kann A nicht als Daemon ausführen, da er interativ sein muss. Ich verwende ein zweites Programm namens "B". "B" führt einen Systemaufruf von "A" als Rootbenutzer aus und ruft dann "exit" auf. um zu vermeiden, dass "A" getötet wird, wenn "B" stirbt. das funktioniert, wenn ich B direkt vom Terminal aus laufen lasse, Aber wenn Launchctl B ausführt und stirbt, stirbt auch A. Ich weiß nicht, wie ich es lösen soll, wie man "A" als root laufen lässt, auch wenn "B" endet.

So ruft B A an:

 int main(int argc, const char * argv[]) {  system("sudo /Path/to/A & exit;");  } system("sleep 15"); // trick that tell launchctl that everything was ok return 0; } 
1

0 Antworten auf die Frage