我的流程目前正在使用 pid ,$PID
运行,并由用户 foo
拥有,不是根即可。我想将此流程的所有权转移给另一个用户 bar
,该用户非root 。
是否有更改进程所有者的shell命令?我想到的是chown
,但对于看似类似的过程。
chownproc [option] PID
This question和this question相似,但不完全是我正在寻找的内容,而chown
手册页并没有说明任何有关流程,只有文件的内容。< / p>
如果没有,有没有理由说这还没有完成或不可能?
答案 0 :(得分:2)
你不能这样做,没有这样的系统调用。但是,根据您希望如何影响流程,如果流程对您的系统不重要,您可以尝试一些黑客攻击。
(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?)