Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Perl/CGI » Setuid für Perl-Script

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
06.12.2004, 11:16 Uhr
Tody



Hallo zusammen,

ich habe ein Perl-script geschrieben, dass mir ein Html-Login-Formular anzeigt und wenn ich richtige Benutzerdaten eingebe und bestätige, dann soll iptables-restore, bzw. iptables-save ausgeführt werden.
Da das Script aber unter dem Apache-User (www) läuft fehlt die Berechtigung zum Ausführen von iptables.
Wenn ich jetzt das perl-script setuid setze, also chmod 4711 perlscript.pl, dann bekomme ich immer die Meldung:
Premature end of script headers: perlscript.pl

Mit "normaler" Berechtigung 755 lässt sich das Script aber ausführen (also bis auf iptables).

Ich hab auch schon was über nen Wrapper gelesen, den man sich schreiben soll/kann. Das is dann ein kleines C-Prog, was setuid gesetzt ist und nichts anderes tut als mein Perl-Script auszurufen. Doch wenn ich das aufrufe, bekomme ich ebenfalls o.g. Fehlermeldung.

Ist es verständlcih, was ich geschrieben hab? Kennt sich jemand damit aus?

Vielen Dank

Tody
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
06.12.2004, 11:45 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


hast du apache mit suexec? dann funktioniert es, ohne suexec support klappt es nicht
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
06.12.2004, 11:59 Uhr
Tody



ist suexec ein modul für den apache oder wo finde ich die entsprechende einstellung?

oder liegt es vielleicht an meinem wrapper?


C++:
#include <stdlib.h>

int main () {

        system("/src/www/cgi-bin/perl_script_test2.pl");
        return 1;
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
06.12.2004, 12:56 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


premature end of script headers meint meistens das z.b der interpreter nicht gefunden wurde (ausversehen keine linuxkodierung der datei?)

suexec muss man beim apache mit einkompilieren, nachträglich lässt sich das nicht aktivieren. (evtl beim 2.x, beim 1.x jedenfalls nicht)
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
06.12.2004, 15:11 Uhr
Tody



so, ich hab jetzt mal nachgesehen und festgestellt, dass ein mod_suexec in der loadmodule.conf geladen wird. dieses mod_suexec liegt in /usr/lib/apache2.

ich denke, das ist was ich brauche, oder?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
06.12.2004, 15:35 Uhr
Tody



nach start des apache2 habe ich im error_log auch die folgende zeile stehen:

suEXEC mechanism enabled (wrapper: /pfad/zu/suexec2)

jetzt verstehe ich erst recht nicht warum es noch nicht funktioniert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
06.12.2004, 15:41 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


jetzt müsste dein script mit uid-bit laufen (chmod 4755) evtl hilft es im Perl-script mal, ich glaube es war "-W" oder sowas an die interpreterangabe zu hängen, dann sieht man im error.log vom apache worans liegt
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
06.12.2004, 15:48 Uhr
Tody



im error_log steht:

[...] sh: /src/www/cgi-bin/perl_script_test2.pl: No such file or directory
[...] Premature end of script headers: test.cgi
[...] File does not exist: /srv/www/htdocs/favicon.ico

warum das icon benötigt eird und wer das aufruft, weiß ich nicht. ich weiß nur, dass das perl_script_test2.pl existiert.

ich versteh das nicht...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
06.12.2004, 16:25 Uhr
Tody



ich denke er erkennt mein perlscript nicht als befehl. wenn ich in meinem c-wrapper den aufruf durch "perl" erweitere (also: system("perl /pfad/zum/script"), bringt er die meldung "permission denied".

eigentlich hat doch aber mein c-wrapper (besitzer root) das s-bit gesetzt und somit braucht das perl-script nur noch besitzer-berechtigungen.

vielleicht versteh ich da auch was falsch.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
06.12.2004, 16:30 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


sh: /src/www/cgi-bin/perl_script_test2.pl: No such file or directory

das erste bedeutet das er /src/www/cgi-bin/perl_script_test2.pl nicht findet!
liegt das script nicht unter /srv/www/cgi-bin/perl_script_test2.pl ?

Das icon ruft nur ein Browser ab.

Kann es sein das du vergisst in deinem perl script einen content-type auszugeben?
--
class God : public ChuckNorris { };

Dieser Post wurde am 06.12.2004 um 16:30 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ Perl/CGI ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: