更改当前 运行 进程的所有者

Change owner of a currently running process

我有一个进程当前为 运行 pid$PID,并且由 用户 拥有foo 不是 root。我想将此进程的所有权转移给另一个 user bar,它也是 not root

是否有 shell 命令可以更改进程的所有者?我正在考虑 chown 但对于看起来像这样的过程。

chownproc [option] PID

This question and this question 是相似的,但不是我要找的,chown 手册页没有说明任何关于进程的内容,只有文件。

如果没有,是否有未完成或不可能完成的原因?

你不能那样做,没有这样的系统调用。但是,根据您希望如何影响该过程,如果该过程对您的系统不重要,您可以尝试一些 hack。

(gdb) attach process_id
(gdb) call putenv ("UID=1234")
(gdb) call putenv ("EUID=1234")
(gdb) call putenv ("GID=1234")
(gdb) detach

请注意,这将不起作用:

(gdb) call setuid(1234)

这并没有真正回答您的问题(更改 运行 流程的所有者),但考虑到您可能希望更改所有者以影响流程的某些方面,也许这个黑客帮助。

请记住,这很可能会破坏您的流程。

(基于此: Is there a way to change another process's environment variables?)