Linux 中的进程是否可以更改另一个进程的 UID?

Is it possible for a process in Linux to change another process's UID?

我想知道 Linux 中的进程(假设它具有 root 访问权限)是否有可能更改另一个进程的 UID,包括 RUID、SUID 和 EUID,如果可以,如果有我可以做的具体实现(无论是在 C++ 中还是在 bash 脚本中,e.t.c)。我主要是试图阻止某些循环进程在生成时立即以 root 权限执行,它们似乎是在生成时执行的。

谢谢!如果问题不清楚,我深表歉意。如果是,我可以澄清任何细节。

不,一个进程不可能更改另一个进程的 UID。如果是这样,那将是一个巨大的安全问题。如果你在进程 A 中,你不知道进程 B 处于什么状态,也不知道此时提升权限是否安全。同样,如果您强制特权进程意外放弃特权,则可能会导致特权进程占用共享资源并使其他进程死锁,因为它可能会在关键部分的中间失败。

即使你能以某种方式解决这个问题,你仍然会 运行 进入竞争状态,你的派生进程可以以 root 身份执行任何数量的代码(多少,你不知道)之前你可以强制它放弃特权。

您应该弄清楚是什么生成了您的进程,并将其调整为不以 root 身份生成它们或根本不生成它们。