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