setuid und Coredumps

Antworten
Nachricht
Autor
Benutzeravatar
hjb
Pro-Linux
Beiträge: 3264
Registriert: 15. Aug 1999 16:59
Wohnort: Bruchsal
Kontaktdaten:

setuid und Coredumps

#1 Beitrag von hjb » 18. Aug 2006 17:29

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
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?

Marco Gerber

#2 Beitrag von Marco Gerber » 18. Aug 2006 21:51

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: Alles auswählen

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: Alles auswählen

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

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


hth

Marco

Benutzeravatar
hjb
Pro-Linux
Beiträge: 3264
Registriert: 15. Aug 1999 16:59
Wohnort: Bruchsal
Kontaktdaten:

#3 Beitrag von hjb » 19. Aug 2006 11:25

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
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?

Antworten