![](https://seccdn.libravatar.org/avatar/b615a5b0cf1090fa484a325041d670f4.jpg?s=120&d=mm&r=g)
Jan Trippler wrote:
On Don, 28 Nov 2002 at 19:39 (+0100), Bernd Brodesser wrote:
Du mußt Dein C-Programm umstricken. So wie Du es gemacht hast, also mit der Funktion system() funktioniert es nicht. Die Funktion system() nimmt das SUID-Bit weg. Genauso, wie es die bash tut, und mit genau der gleichen Begründung
Ich hab mich eventuell nicht korrekt ausgedrueckt. Das Programm selbst macht keinen "system()" -Aufruf sondern dieses wird ueber einen System() -Aufruf gestartet ( durch ein CGI-Script ). Allerdings wird in diesem Programm ein anderes Programm mit popen() kontaktiert ,und mit Kommandos gefuettert, und dieses ueber eine Pipe verbundene Programm erzeugt dann den Fehler.
Nein, das stimmt nicht. Die Ursache liegt im fehlenden setuid(0) Aufruf innerhalb des Programms. Siehe unten.
if (setuid (0) == -1) { printf ("Fehler bei setuid() (%d): %s\n", errno, strerror (errno)); return (0); }
das wars :-) ich hab dies im Programm aufgenommen und neu uebersetzt, und es funktioniert tatsaechlich. danke fuer eure Hilfe Erich