【问题标题】:Change owner of a currently running process更改当前正在运行的进程的所有者
【发布时间】:2016-09-20 23:17:35
【问题描述】:

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

有没有改变进程所有者的shell命令?我正在考虑chown,但是对于看起来像这样的进程。

chownproc [option] PID

This questionthis question 相似,但不是我要查找的内容,chown 手册页没有说明进程,只有文件。

如果没有,是否有理由说明为什么没有这样做或不可能?

【问题讨论】:

  • 我从未听说过这种机制。安全隐患是巨大的——该进程使用 ID foo 打开文件和其他资源;是否应该允许其中任何一个 ID bar?这可能是它没有完成的主要原因之一。

标签: linux shell process centos6


【解决方案1】:

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

(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)

这并不能真正回答您的问题(更改正在运行的进程的所有者),但考虑到您可能希望更改所有者以影响进程的某些内容,也许这个 hack 帮助。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-26
    • 1970-01-01
    • 2010-09-30
    • 2011-04-18
    • 1970-01-01
    • 1970-01-01
    • 2016-03-05
    • 1970-01-01
    相关资源
    最近更新 更多