Führen Sie untergeordnete Prozesse als ein anderer Benutzer als ein Python-Prozess mit langer Laufzeit aus

Ich habe einen lang laufenden, daemonisierten Python-Prozess, der Unterprozesse verwendet, um neue untergeordnete Prozesse zu erzeugen, wenn bestimmte Ereignisse auftreten. Der Prozess mit langer Laufzeit wird von einem Benutzer mit Superuser-Berechtigungen gestartet. Ich brauche die untergeordneten Prozesse, die es erzeugt, um als ein anderer Benutzer (z. B. "nobody") ausgeführt zu werden, während die Superuser-Berechtigungen für den übergeordneten Prozess beibehalten werden.

Ich benutze gerade

su -m nobody -c <program to execute as a child>

aber das scheint schwergewichtig und stirbt nicht sehr sauber.

Gibt es eine Möglichkeit, dies programmgesteuert zu erreichen, anstatt su zu verwenden? Ich schaue auf die os.set * uid-Methoden, aber das Dokument in der Python-Standardbibliothek ist in diesem Bereich recht spärlich.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage