2016-05-23 17 views
2

Ich habe einen Prozess, der zur Zeit mit pid, $PID, und im Besitz der Benutzerfoo läuft die Wurzel nicht ist. Ich möchte den Besitz dieses Prozesses zu einem anderen Benutzerbar übertragen, der auch nicht root ist.ändern Besitzer eines laufenden Prozesses

Gibt es einen Shell-Befehl, der den Besitzer eines Prozesses ändert? Ich denke an eine chown aber für Prozesse, die ähnlich aussieht.

chownproc [option] PID

This question und this question sind ähnlich, aber nicht ganz das, was ich für und chown Mann Seiten suchen sagt nichts über Prozesse, nur Dateien.

Wenn nicht, gibt es einen Grund, warum das nicht getan wurde oder nicht möglich ist?

+2

ich noch nie von solchen Mechanismus gehört habe. Die Auswirkungen auf die Sicherheit sind dramatisch - der Prozess öffnete die Dateien und andere Ressourcen mit der ID 'foo'; Sollte einer von denen erlaubt sein, "bar" zu identifizieren? Dies ist wahrscheinlich einer der Hauptgründe, warum es nicht gemacht wird. –

Antwort

2

Sie können das nicht tun, es gibt keinen solchen syscall. Je nachdem, wie Sie den Prozess beeinflussen möchten, können Sie jedoch einen Hack versuchen, wenn der Prozess für Ihr System nicht kritisch ist.

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

Beachten Sie, dass diese Arbeit nicht:

(gdb) call setuid(1234) 

Das ist wirklich nicht auf Ihre Frage beantworten (die Inhaber eines laufenden Prozesses aus), aber wenn man bedenkt, dass Sie an den Eigentümer ändern möchten, etwas über den Prozess beeinflussen, vielleicht hilft dieser Hack.

Denken Sie daran, dass es sehr wahrscheinlich ist, dass dies Ihren Prozess unterbricht.

(basierend auf diesem: Is there a way to change another process's environment variables?)

Verwandte Themen