Ändern Sie die UID / GID nur eines Threads in Linux

Gibt es eine Möglichkeit, die UID / GID nur eines Threads in einem Multithread-Prozess zu ändern?

Der Grund dafür ist das Schreiben einer Datei-Serving-Anwendung - die ACLs und das Kontingent werden nicht erzwungen, es sei denn, die UID / GID des Anrufers ist auf den richtigen Benutzer eingestellt, neue Dateien / Verzeichnisse werden nicht mit der richtigen UID / GID usw. erstellt.

Die Netzwerkanwendungen können sich in der Regel am Anfang aufteilen () und jede Benutzeranforderung in einem separaten Prozess verarbeiten. Wenn gemeinsame Daten benötigt werden, müssen sie einen gemeinsamen Speicher durchlaufen. Z.B. Das FUSE-Dateisystem (Linux User Filesystem) verwendet standardmäßig Multithreading und in Verbindung mit Python-Bindungen wäre es nicht praktisch, ein Forking-Modell zu verwenden.

Die 'konsistente' UID für einen ganzen Prozess scheint dem POSIX-Standard zu entsprechen, alte Linux-Versionen folgten jedoch nicht dem POSIX-Standard und erlaubten unterschiedliche UIDs für verschiedene Threads. Die neuen Kernel scheinen POSIX zu folgen. Gibt es eine Möglichkeit, das alte "kaputte" Verhalten zuzulassen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage