Page 1 of 1

setuid und Coredumps

Posted: 18. Aug 2006 17:29
by hjb
Hi!

Aus der setuid-Manpage:

If uid is different from the old effective uid, the process will be forbidden
from leaving core dumps.

Wie kann man das umgehen und Coredumps dennoch ermöglichen? Das Verhalten von setreuid scheint identisch zu sein.

Danke,
hjb

Posted: 18. Aug 2006 21:51
by Marco Gerber
guten Tag

Ich habe hier gerade den Source des Kernels 2.6.11 vor mir.
In der Datei arch/i386/kernel/ptrace.c steht folgendes:

Code: Select all

ab Zeile 680:
680 asmlinkage long sys_setuid(uid_t uid)
681 {
682         int old_euid = current->euid;
....

701         if (old_euid != uid)
702         {
703                 current->mm->dumpable = 0;
704                 wmb();
705         }
Deinem Vorhaben wird also in Zeile 703 ein Riegel geschoben.

Ich kenne das Ausmass deines Vorhabens nicht, aber zu Testzwecken koenntest du die Zeile dort enstprechend anpassen auf:

Code: Select all

703                 current->mm->dumpable = 1;
(nicht getestet !)

Ansonsten musst du mehr Informationen geben, in welchem Umfang dies geschehen soll...


hth

Marco

Posted: 19. Aug 2006 11:25
by hjb
Hi!

Danke, das ist schon mal ein Hinweis. Nun möchte ich nicht unbedingt den Kernel patchen. Es wäre zwar möglich, aber wenn das Programm durch einen bestimmten Aufruf die Option selbst wieder einschalten könnte, wäre mir das lieber.

Das Programm ist ein Daemon, der als Root (aus init.d heraus) gestartet wird und dann als anderer User laufen soll. Wie Apache usw.

Danke,
hjb