有没有办法在多线程进程中仅更改一个线程的 UID/GID?
这样做的原因是编写一个文件服务应用程序 - 除非调用者的 uid/gid 设置为正确的用户,否则不会强制执行 ACL 和配额,没有使用正确的 uid/gid 创建新文件/目录等。
网络应用程序通常可以在开始时自己 fork() 并在单独的进程中处理每个用户请求。如果需要共享数据,它必须经过某种共享内存。但是,例如 FUSE(linux 用户文件系统)默认使用多线程,并且与 python 绑定结合使用分叉模型是不切实际的。
整个进程的“一致”UID 似乎符合 POSIX 标准,但是旧的 Linux 不遵循 POSIX 并允许不同线程使用不同的 uid。新内核似乎遵循 POSIX,有什么方法可以允许旧的“损坏”行为吗?