LaunchAgents: App als root starten
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; }
0 Antworten auf die Frage
Verwandte Probleme
-
3
Beschleunigung der Bootzeiten von OS X bei einem Jahr alten MBP
-
3
Wie ordnen Sie ein Airport Time Machine-Backup nach der Migration auf einen neuen Mac wieder zu?
-
6
Wie können Sie den Startton auf einem Mac stummschalten?
-
5
Warum wird mein Macbook bei der Verwendung von Boot Camp extrem heiß?
-
7
Gibt es unter Mac OS X ein Strg + Tab-Äquivalent?
-
6
Weg, um Time Machine-Daten auf eine neue Festplatte zu migrieren
-
13
Setzen Sie die Windows-Position von Mac OS X nach dem Abnehmen des externen Monitors zurück
-
10
Sicherungssoftware für Mac OS X
-
5
Wie kann ich unter Mac OS X einen .kext deinstallieren und entfernen?
-
4
Wie kann ich die Auswurftaste auf der MacBook-Tastatur erneut "löschen"?