• Da ich im unteren Forum nicht antworten kann, Antwort mal hier:

    Zitat

    Jetzt sollte ich auch noch das Problem mit den CGI-Skripten hinbekommen, dann funzt auch das Postkartencenter wieder. Apache/Suse

    Wenn Du magst, kannst Du Dich mal ins Apache-Forum einklinken, wenn Du es nicht schon kennen solltest, dort hängen ein paar der Gurus,:):

    http://www.apachefriends.org/f/index.php

    • Offizieller Beitrag

    Ich komm da nicht weiter.... :(

    Der 500 Serverfehler bleibt beim Aufruf des CGI-Scripts und in der Log steht "Premature end of script headers". Irgendwo muß ich da Rechte vergeben, aber wo?

    Zu den Begriffen gibt es haufenweise Erklärungen in diversen Foren. Einige verstehe ich nicht und viele haben nichts mit meinem Problem zu tun.

    Nun warte ich erst mal auf mein bestelltes Apache Büchlein

  • Schuss ins Blaue:

    Die Rechtevergabe muss 755 lauten

    Die betreffende Datei / Dateien muss dem entsprechenden Nutzer !UND! der Gruppe zugehören. Welche das sind, erfährt man im Fehlerlog suexec. Wenn die IDs nicht identisch sind, taucht ein solcher Fehler wie der von Dir gepostete auf.

  • Was Du z.B. auch kontrollieren kannst, ist:

    1) das bei einem FTP-Upload des Scripts der FTP-Client auf ASCII und nicht auf "Auto" eingestellt ist, das kann u.a. auch mal ein Script abschiessen.

    2) Ferner ist wichtig, das die Datei mit chmod 755 <scriptname> gesetzt wird.

    3) Das Script muss exakt im cgi-bin Verzeichnis liegen.

  • Zuguterletzt, was mir einfällt:

    Wenn das Script korrekt im ASCII-Mode upgeloadet wurde, kommt es vorallem auf den richtigen Abschluß der Pfad-Zeile an. Es darf dort kein x10 (also Zeilenvorschub) stehen sondern nur ein x13 (CR).

    Dann kommt es darauf an, das der Interpreterpfad korrekt gesetzt ist. Was bedeutet: Stimmt der Pfad in der ersten Zeile?

    Z.B bei Perl: /usr/bin/perl.

  • Gut, das schliesst ja schon mal einiges aus. Dann gehe ich davon aus, das es an einer nichtkorrekten Rechtevergabe liegt.

    Das kannst Du, wenn Du möchtest, im suexec-log kontrollieren.

    Beispielpfad (bei Dir anpassen): /var/log/apache2/suexec.log

    Das Script muss 755 haben und den User und Group des webXXX. User und Group-ID müssen identisch sein:

    Mal zu Rechten:

    Quelle: Schlaues Buch

  • Das Script erhält die Rechte. Chmod habe ich schon genannt, damit weisst Du 755 zu.

    Dann sind da noch die Befehle:

    chown = Change Owner ist ausschließlich root-Usern, also allen mit der Benutzerkennung 0, erlaubt

    chgrp = Change Group ist auch dem Owner der Datei erlaubt. Er muss aber selber in der Gruppe sein, der er die Datei zugänglich machen will

    groups <username> zeigt die Gruppen an, in der der User Mitglied ist

    Beispiel (bei Dir anpassen):

    chown -cR user:group

    Mit diesen beiden Befehlen werden der Eigentümer (engl. "owner") und die Gruppenzugehörigkeit (engl. "group ownership") gesetzt. Das Chmod 755 macht das Script für diese ausführbar. Was bedeutet, das Chmod das Script ausfühbar macht für user:group. User und group-ID müssen identisch sein.

    Versuche das mal nachzuvollziehen. Zu den Befelen lies auch mal in Deinen Suse Handbüchern nach,:)

    Einmal editiert, zuletzt von Ahasveru (29. Januar 2007 um 14:00)

  • Hier nochmal eine Kurzreferenz:

    Und mal hier lesen:

    http://www.drweb.de/cgi/cgi_chmod.shtml

    Einmal editiert, zuletzt von Ahasveru (29. Januar 2007 um 14:18)

  • Dateien, die per FTP auf den Server geladen werden, gehören dem User xx, der sich in der Gruppe psacln befindet.

    Dialout und video sind auch Gruppen, welche unter Groups gehören. Diese Gruppen benutzt Linux, um Dir Rechte auf Gerätedateien wie Sound- oder Video-Karte zu verleihen. So können alle Mitglieder der Gruppe audio auf die Sound-Karte zugreifen.

    In Groups stehen z.B.: (Ob in CGI-bin, weiss ich nicht)

    users uucp dialout audio video

    Und es macht mich etwas stutzig, das bei Dir unter Groups nicht: users steht. users ist die primäre Gruppe, die auch von Dir neuangelegten Dateien zugewiesen wird. Unter SuSE Linux ist jeder Benutzer automatisch Mitglied der Gruppe users.

    Ich weiss jetzt nicht, inwiefern Du ein Backup des Servers hast, um Dir mal die Groups anzeigen zu lassen, sprich: Was vor dem Serverupdate dort drinstand, könnte aber sein, das users in der CGI-bin Groups fehlt.

    Dann kannst Du auch mal schauen, was seEXEC genau bei den CGI-Script prüft, sprich: Wie es eingestellt ist. Auf englisch findest Du eine Beschreibung hier:

    http://httpd.apache.org/docs/1.3/suexec.html

    Auch:

    Zitat

    Suexec

    The suexec support program allows CGI programs to be run under different user permissions, depending on which virtual host or user home directory they are located in. Suexec has very strict permission checking, and any failure in that checking will result in your CGI programs failing with Premature end of script headers.

    To check if you are using suexec, run apachectl -V and check for the location of SUEXEC_BIN. If Apache finds an suexec binary there on startup, suexec will be activated.

    Unless you fully understand suexec, you should not be using it. To disable suexec, simply remove (or rename) the suexec binary pointed to by SUEXEC_BIN and then restart the server. If, after reading about suexec, you still wish to use it, then run suexec -V to find the location of the suexec log file, and use that log file to find what policy you are violating.

    Hier eine deutsche Dokumentation zu Apache-Server, vielleicht findest Du da was:

    http://httpd.apache.org/docs/2.0/de/

    Auf englisch zu CGI:

    http://httpd.apache.org/docs/2.0/de/howto/cgi.html

    2 Mal editiert, zuletzt von Ahasveru (31. Januar 2007 um 11:20)

  • Die suEXEC ist ja ein Sexurity-Wrapper. Kontrolliert die Header von Scripten.

    Zitat

    Es kann z.B. passieren, dass User-Webverzeichnisse WWW heißen, während in httpd.conf public_html steht. Was besagt, das der suEXEC im Header WWW finden möchte, aber public_html findet. Das brächte dann den Fehler: Premature end of script headers.

    Schau mal in die httpd.conf, was darin zum obigen Pfad steht, falls es da steht. Der Bereich als Anhaltspunkt für Dich könnte so aussehen:

    AddHandler cgi-script .cgi .sh .pl

    <IfModule mod_userdir.c>
    UserDir WWW
    </IfModule>

    Zitat

    uid 10002/kontromisslos)
    gid 10001/10001) cmd:admin.pl

    Einmal steht hier die USER-ID auf 10002, die Groups-ID auf 10001, Du könntest mal testen, was ist, wenn Du die UID auf 10001 setzt. (Testweise die GID, wenn ersteres nicht funktioniert, in beiden Werten auf 10002 setzen)

    Desweiteren: Kannst Du mal posten, oder vergleichen, was /var/log/apache2/suexec.log als Premature end of script Fehlermeldung ausgibt? Sprich die Zeilen, welche dort stehen mit den UID / GID.

    Gibt /var/log/apache/error.log auch was in Richtung Premature end of script Fehlermeldung aus?

    Einmal editiert, zuletzt von Ahasveru (31. Januar 2007 um 14:54)

    • Offizieller Beitrag

    Schaue ich mir heut abend mal an, aber danke schon mal für die Hilfe.

    Das Apache Buch ist übrigens unterwegs und sollte bis Sonnabend bei ir sein. Da kann ich mich auch mal reinlesen. Wo ichs Buch bestellt hatte, stand dabei " sofort lieferbar". :D

  • Kluges Buch bin ich auch :D ...aber hab keinen Blassen, worums hier geht *schmunzel* Das sind alles böhmische Dörfer für mich *zugeb*

    Aber hey, der RSS - Feed ist wirklich klasse :tup:

    Ich drück Dir die Daumen, Robert, dass das Winnetou-Buch Aufschluss gibt und die Probleme beseitigen hilft :)

    _________________________________________