我想知道Linux中的进程(假设它有root访问权限(是否有可能更改另一个进程的UID,包括RUID、SUID和EUID,如果有,我是否可以执行特定的实现(无论是在C++中还是在bash脚本中,e.t.C(。我主要是试图阻止某些递归进程在生成时立即使用root权限执行,它们似乎在生成时执行。
谢谢!如果问题不清楚,我深表歉意。如果是,我可以澄清任何细节。
否,一个进程不可能更改另一个进程的UID。如果是这样的话,那将是一个巨大的安全问题。如果你在进程a中,你不知道进程B处于什么状态,也不知道此时提升特权是否安全。类似地,如果您强迫特权进程意外地放弃特权,则可能会导致该进程占用共享资源并使其他进程死锁,因为它可能会在关键部分的中间失败。
即使你能以某种方式解决这个问题,你仍然会遇到一个竞争条件,即你的派生进程可以作为root执行任何数量的代码(你不知道有多少(,然后你才能强制它放弃特权。
你应该弄清楚是什么催生了你的进程,并调整它,要么不把它们作为根产生,要么根本阻止它产生它们。