Есть ли способ изменить UID / GID только одного потока в многопоточном процессе?
Причиной этого является написание приложения для обслуживания файлов - списки ACL и квота не применяются, если uid / gid вызывающего абонента не настроен на правильного пользователя, новые файлы / каталоги не создаются с правильным uid / gid и т. Д. .
Сетевые приложения обычно могут выполнять fork () в начале и обрабатывать каждый запрос пользователя в отдельном процессе. Если есть необходимость в общих данных, они должны проходить через какую-то общую память. Однако, например, FUSE (пользовательская файловая система Linux) по умолчанию использует многопоточность, и в сочетании с привязками Python было бы непрактично пытаться использовать модель разветвления.
Похоже, что «согласованный» UID для всего процесса соответствует стандарту POSIX, однако старые Linux не следовали POSIX и допускали разные идентификаторы для разных потоков. Кажется, что новые ядра следуют POSIX, есть ли способ разрешить старое «сломанное» поведение?