2016-05-23 6 views
2

У меня есть процесс, который в настоящее время работает с PID, $PID и принадлежит пользователяfoo который не корень. Я хочу передать право собственности на этот процесс другому пользователю bar, который также является не root.Изменение владельца запущенного процесса

Есть ли команда оболочки, которая изменяет владельца процесса? Я думаю о chown, но для процессов, которые выглядят примерно так.

chownproc [option] PID

This question и this question похожи, но не совсем то, что я ищу и chown человека страниц ничего не знает о процессах, только файлы не говорят.

Если нет, есть ли причина, по которой это не было сделано или невозможно?

+2

Я никогда не слышал о таком механизме. Последствия для безопасности очень важны - процесс открыл файлы и другие ресурсы, используя ID 'foo'; должен ли кто-либо из них разрешаться ID-бар? Вероятно, это одна из основных причин, почему это не делается. –

ответ

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

Смежные вопросы