tody211: setuid (wrapper und perl-script problem)

Beitrag lesen

Hi,

  • c-wrapper geschrieben, der mit system("pfad/zum/script"); mein perl-script aufruft

Und system() gibt hier keinen Fehler zurück?

nein

  • c-wrapper mit gcc compiliert

Ausgabe von 'uname -a' und 'gcc --version'?
Irgendwelche Sicherheitspatches in die GCC oder den Kernel eingespielt?

gcc --version = gcc (GCC) 3.3.4 (pre 3.3.5 20040809)

uname -a = Linux wlanauth 2.6.8-24.5-default #1 Wed Nov 17 11:10:06 UTC 2004 i686 i686 i386 GNU/Linux

neuinstallation von suse 9.2 ohne patches

  • chmod 4711 test.cgi

Ausgabe von 'chmod -v 4711 test.cgi'?

mode of `test.cgi' changed to 4711 (rws--x--x)

  • in meinem perl-script soll iptables-restore, bzw. iptables-save ausgeführt werden (jeweils mit system())

Warum auch immer, aber gut.

ein user kann über das formular seine ip in iptables eintragen.
erfolgreiche anmeldung (mysql-db abfrage) -> eintrag in iptables

  • das perl-script erstellt ein login-formular (form-action: test.cgi)

Ich hoffe doch schwer, das das nur im Intranet passiert, oder?

user aus einem wlan sollen über uns (firma) ins internet. dafür müssen sie sich an dem rechner, auf dem dieses script läuft erfolgreich anmelden.

  • chmod 755 perl-script.pl (700 funktioniert nicht, weiß nicht warum)

Nun, das 700 nicht funktioniert sollteeinem doch schon zu denken geben,oder?
Was funktioniert denn nicht? Mag chmod nicht oder funktioniert das Skript/der Wrapper danach nicht mehr?

ich dachte eigentlich, dass durch das s-bit beim wrapper nun nur noch die rechte für den besitzer des scripts benötigt werden.
die meldung lautet (bei 700): perl-script.pl: permission denied

mein wrapper ruft das perl-script auf

Ist das Perlscript ausführbar? Wenn nicht: stimmt der Aufruf?

ich habe den pfad zu iptables-xxx angegeben. er führt es nun aus aber die datei, in die er schreiben soll ist leer.

der aufruf sieht nun so aus:

system("/usr/sbin/iptables-save > /var/lib/filters");

und es erscheint mein login-formular. beim bestätigen des formulars mit korrekten zugangsdaten soll dann iptables-xxx ausgeführt werden. rückgabewert von system("iptables-xxx /pfad/zur/datei"); ist aber -1.

Perls system() gibt die Meldungen von wait(2) zurück, das setzt errno im Fehlerfalle, also: mit welcher Fehlermeldung?

perls system gibt jetzt 256 zurück.

das mod-suexec vom apache ist gestartet.

Das hast Du wie geprüft?

nach start des apache2 steht im error log folgendes:

[Tue Dec 07 15:04:28 2004] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec2)
[Tue Dec 07 15:04:29 2004] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
[Tue Dec 07 15:04:30 2004] [notice] Apache/2.0.50 (Linux/SUSE) configured -- resuming normal operations

so short

Christoph Zurnieden

hoffe, du verstehst was ich meine.

gruß
tobi