仅更改Linux中一个线程的UID / GID

有没有办法在多线程进程中只更改一个线程的UID / GID?

这样做的原因是编写一个文件服务应用程序 – 除非调用者的uid / gid设置为正确的用户,否则不会强制执行A​​CL和配额,新的文件/目录不会使用正确的uid / gid等创建.

网络应用程序通常可以在开头fork()并在单独的进程中处理每个用户请求.如果需要共享数据,则必须通过某种共享内存.但是,例如认情况下,FUSE(linux用户文件系统)使用多线程并与python绑定结合使用,尝试使用分叉模型是不切实际的.

整个过程的“一致”UID似乎是根据POSIX标准,但是老Linux并没有遵循POSIX并允许不同的uid用于不同的线程.新内核似乎遵循POSIX,是否有某种方法允许旧的“破坏”行为?

解决方法

您是否检查过setfsuid()/ setfsgid()是按线程还是按进程?它们专为此用例(文件服务器)而设计.

相关文章

在Linux上编写运行C语言程序,经常会遇到程序崩溃、卡死等异...
git使用小结很多人可能和我一样,起初对git是一无所知的。我...
1. 操作系统环境、安装包准备 宿主机:Max OSX 10.10.5 虚拟...
因为业务系统需求,需要对web服务作nginx代理,在不断的尝试...
Linux模块机制浅析 Linux允许用户通过插入模块,实现干预内核...
一、Hadoop HA的Web页面访问 Hadoop开启HA后,会同时存在两个...