更改当前 运行 进程的所有者
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?)
我有一个进程当前为 运行 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?)