关于fork子进程环境的问题

场景描述:

用户进程(进程A, 用户A, 普通用户) ---> 发送作业请求

---> 服务进程(进程B, root用户) ---> 服务进程fork + exec,

父进程返回消息循环, 子进程运行作业装载和执行程序(进程C, root用户)

需求:

显然, 进程A发起一个作业请求,就会导致进程Bfork出一个子进程C来运行作业,

由于子进程对父进程环境的继承, 进程C的环境与进程B相同, 而现在需要进程C的环境与进程A相同, 至少是与用户参数相关的环境, 比如$USER $HOME等.

我想请教一下, 现在作业请求消息里只有请求者的用户名, 例如user,

如果不考虑把A的环境表封装在作业请求消息里发送给B, 进而由B装载给C的办法,

有没有可以避免发送消息, 而是仅根据用户名user, 在本地获得一份user的环境信息以装载给C的办法(注: A和B,C可能运行在不同的主机上, 但是每个主机都有所有用户的信息)

setuid()可以更改用户id,降低进程的权限为用户user