Alterar UID / GID apenas de um thread no Linux

Existe uma maneira de alterar somente UID / GID de um thread em um processo multithread?

A razão para isso é escrever um aplicativo de serviço de arquivos - as ACLs e quotas não são impostas a menos que o uid / gid do chamador esteja configurado para o usuário correto, novos arquivos / diretórios não sejam criados com o uid / gid correto etc.

Os aplicativos de rede geralmente podem se bifurcar no início e processar cada solicitação do usuário em um processo separado. Se houver necessidade de dados compartilhados, ele deverá passar por algum tipo de memória compartilhada. Contudo, por exemplo o FUSE (sistema de arquivos do usuário linux) por padrão usa multithreading e em conjunto com ligações python não seria prático tentar usar um modelo de bifurcação.

O UID 'consistente' para todo um processo parece estar de acordo com o padrão POSIX, entretanto os antigos Linuxes não seguiram o POSIX e permitiram diferentes uids para diferentes threads. Os novos kernels parecem seguir o POSIX, existe alguma maneira de permitir o antigo comportamento 'quebrado'?

questionAnswers(2)

yourAnswerToTheQuestion