Cgi und zugriffsrechte

hallo zusammen,
ich lerne gerade perl und hätte ein paar anfänger-fragen, wie man seine scripts auf einem web-server zum laufen kriegt (in den büchern, die ich hier habe ist das anscheinend nur halb erklärt).

keine panik: lässt sich alles sehr kurz beantworten :wink:

also:

  1. müssen perl-scripts immer im cgi-bin platziert werden, um laufen zu können?
    (ist eigentlich jedes perl-script für den web-server ein cgi-script? oder nur dann, wenn da „use cgi“ drin steht?)
  2. müssen sich dateien, aus denen z.b. daten ausgelesen werden sollen (ähnlich wie bei javascript) im gleichen ordner befinden?

außerdem verhedder ich mich leider immer wieder in den zugriffsrechten (blöd, wenn man kein unix kennt, ist schon klar, aber ich kann halt nicht alles auf einmal…):

a) anscheinend kann man zugriffsrechte sowohl für gesamte ordner, als auch für einzelne dateien vergeben?
b) was davon ist nötig, um meine scripts auf dem web-server zum laufen zu bringen?
c) und wie macht man das genau mit ws_ftp?
d) wenn ich eine neue datei in einen ordner kopiere, für den ich schon zugriffsrechte vergeben habe (bsp. cgi-bin): bekommt die neue datei dann automatisch die zugriffsrechte des ordners oder muss ich die rechte dann nochmal einzeln vergeben?
e) und konkret: ist mit „chmod 755“ schon alles erledigt?

jaja- das grundwissen…
wär nett, wenn sich wer erbarmen könnte.

gruß & dank schonmal
bernd

Hallo bernd,

keine panik: lässt sich alles sehr kurz beantworten :wink:

also:

  1. müssen perl-scripts immer im cgi-bin platziert werden, um
    laufen zu können?
    (ist eigentlich jedes perl-script für den web-server ein
    cgi-script? oder nur dann, wenn da „use cgi“ drin steht?)

kommt darauf an wie der Webserver eingerichtet ist, normalerweise ist die Antwort aber, ja
mir use cgi bindest du das Modul cgi.pm(nicht das common gateway interface) ein, das stellt dir dann fertige Funktionen zu Verfügung
Aufgerufen werden die Funktionen dann mit
$varible = new CGI::wasweissich(); schau mal in den Quelltext da findest du bestimmt so eine ähnliche Zeile
wenn der Webserver so eingestellt ist werden alle Skripte mit der endung .pl oder .cgi ausgeführt. Und natürlich benutzen die dann auch das common gateway interface.

  1. müssen sich dateien, aus denen z.b. daten ausgelesen werden
    sollen (ähnlich wie bei javascript) im gleichen ordner
    befinden?

nein

außerdem verhedder ich mich leider immer wieder in den
zugriffsrechten (blöd, wenn man kein unix kennt, ist schon
klar, aber ich kann halt nicht alles auf einmal…):

a) anscheinend kann man zugriffsrechte sowohl für gesamte
ordner, als auch für einzelne dateien vergeben?

richtig

b) was davon ist nötig, um meine scripts auf dem web-server
zum laufen zu bringen?

beides

c) und wie macht man das genau mit ws_ftp?

Datei markieren/rechte Maustaste/?chmod?(o.ä.) weiß ich jetzt nicht mehr genau wie der Befehl hieß, da ich kein Windoof mehr benutze, sollte aber zu finden sein, ansonsten RTFM :wink:

d) wenn ich eine neue datei in einen ordner kopiere, für den
ich schon zugriffsrechte vergeben habe (bsp. cgi-bin): bekommt
die neue datei dann automatisch die zugriffsrechte des ordners
oder muss ich die rechte dann nochmal einzeln vergeben?

musst du extra vergeben

e) und konkret: ist mit „chmod 755“ schon alles erledigt?

kommt darauf an wenn du Schreibrechte für Group und all brauchst dann 777, wenn nur der User Schreibrechte haben soll dann 755

Gruß Jan

hallo zusammen,
also:

  1. müssen perl-scripts immer im cgi-bin platziert werden, um
    laufen zu können?

Hängt von der Webserver-Konfiguration ab. Die Option ExecCGI kann sowohl für ein Verzeichnis, als auch z.B. für alls .cgi Dateien gesetzt werden.
http://httpd.apache.org

(ist eigentlich jedes perl-script für den web-server ein
cgi-script? oder nur dann, wenn da „use cgi“ drin steht?)

CGI beschreibt nur die Schnittstelle zwischen Webserver und externen Programmen. Alles, was das „ausführbar“-Bit gesetzt hat, wird erst mal gestartet, solange dies von der Konfiguration erlaubt wird. Ob das Programm ein Perl/Bash/Phyton/Tcl/sonstiges Script oder ein kompiliertes Programm ist, ist dem Webserver egal, solange das Programm mindestens die Header korrekt ausgiebt.
Bei Skripten steht in der ersten Zeile (#!/pfad/programm), mit welchem Programm das Script auszuführen ist, wenn da #!/usr/bin/perl oder ähnliches steht, ist’s ein wahrscheinlich ein Perl-Script…

  1. müssen sich dateien, aus denen z.b. daten ausgelesen werden
    sollen (ähnlich wie bei javascript) im gleichen ordner
    befinden?

Nein, aber das Script muss den Pfad kennen. Es gibt auch Konfigurationen, wo relative Pfade nicht gehen (zB: data/datei.txt), dann muss man den absoluten Pfad kennen.

außerdem verhedder ich mich leider immer wieder in den
zugriffsrechten (blöd, wenn man kein unix kennt, ist schon
klar, aber ich kann halt nicht alles auf einmal…):

http://www.alexander-fleischer.de/info/chmod.php

a) anscheinend kann man zugriffsrechte sowohl für gesamte
ordner, als auch für einzelne dateien vergeben?
b) was davon ist nötig, um meine scripts auf dem web-server
zum laufen zu bringen?

siehe url

c) und wie macht man das genau mit ws_ftp?

Linksklick (markieren), Rechtsklick:chmod (Unix)

d) wenn ich eine neue datei in einen ordner kopiere, für den
ich schon zugriffsrechte vergeben habe (bsp. cgi-bin): bekommt
die neue datei dann automatisch die zugriffsrechte des ordners
oder muss ich die rechte dann nochmal einzeln vergeben?

Nein.
Es werden Standardrechte gesetzt, meist 644

e) und konkret: ist mit „chmod 755“ schon alles erledigt?

Meist nicht, falls das Script Dateien schreiben muss.

Alexander