alles in CGI-BIN executable machen, ausser txt, das auf 666
Aqua
- webserver
Hallo!
Wenn ich ein Script im CGI-BIN verzeichnis ablege,
muss ich immer "chmod 755 script.pl" machen und das nervt.
Geht das, daß automatisch alle _Scripte_ im CGI-BIN
ausführbar sind egal wie man sie speichert,
ob mit einem editor, mit cat, oder sie einfach nur hineinkopiert/verschiebt.
Achtung:
text und dat-Dateien sollen chmod 666 bekommen.
Danke!
Aqua
morgens,
Wenn ich ein Script im CGI-BIN verzeichnis ablege,
muss ich immer "chmod 755 script.pl" machen und das nervt.
Wie legst du es dort ab, auf welchem Betriebssystem bist du grade unterwegs, welche Rechte hast du, machst du das "Ablegen" über FTP?
Geht das, daß automatisch alle _Scripte_ im CGI-BIN
ausführbar sind egal wie man sie speichert,
Ist mir nicht bekannt, schließlich kannst du auch eine Datei "script.txt" nennen, per FTP dorthin legen, und _eigentlich_ ist es vielleicht ein Shellscript.
Schau dir einfach mal an, wie das mit den "Rechten" zustandekommt, die eine neu angelegte Datei plötzlich hat - oder auch nicht hat.
ob mit einem editor, mit cat, oder sie einfach nur hineinkopiert/verschiebt.
Kopieren/Verschieben können nur der Besitzer und root. Wenn du in einem Editor (welchem?) eine Datei neu erstellst und speicherst, bekommt sie zunächst die Rechte, die der Editorprozeß (also so ungefähr deine Benutzeranmeldung) auch hat, was du natürlich nachträglich ändern oder beim Speichern korrigieren kannst. Im übrigen sollte dir "man cat" sagen, was du mit cat machen kannst.
text und dat-Dateien sollen chmod 666 bekommen.
Was für DAT-Dateien hast du in einem cgi-bin liegen?
Im übrigen ist das mal wieder eine prima Gelegenheit, auf http://www.selflinux.org zu verweisen, und insbesondere auf http://www.selflinux.org/selflinux-devel/html/Benutzer_und_Berechtigungskonzepte05.html#d20e797.
Danke!
bitte.
Christoph S.
Moin,
Kopieren/Verschieben können nur der Besitzer und root.
Das ist so natürlich allgemein nicht richtig. Kopieren kann notwendigerweise jeder der Leserechte auf die Datei hat und Verschieben (~ Kopieren mit anschließendem Löschen) darf sie jeder der Schreibrechte auf das enthaltende Verzeichnis hat (und natürlich auf das Zielverzeichnis).
hallo Henryk,
Kopieren/Verschieben können nur der Besitzer und root.
Das ist so natürlich allgemein nicht richtig.
In einem cgi-bin-Verzeichnis? Wie willst du den Inhalt eines Perl-Scripts lesen (selbst wenn es auf 777 stehen sollte), wenn du dich nicht als root oder als Besitzer anmeldest? Wenn das trotzdem geht, stimmt die Systemkonfiguration nicht, und du solltest dich mit deinem System-Administrator in Verbindung setzen.
Kopieren kann notwendigerweise jeder der Leserechte auf die Datei hat und Verschieben (~ Kopieren mit anschließendem Löschen) darf sie jeder der Schreibrechte auf das enthaltende Verzeichnis hat (und natürlich auf das Zielverzeichnis).
Das trifft auf freigegebene Ordner/Verzeichnisse zu. Bei cgi-bin sollte es etwas mehr Einschränkungen geben.
Grüße aus Berlin
Christoph S.
'Morgen Christoph.
Kopieren/Verschieben können nur der Besitzer und root.
Das ist so natürlich allgemein nicht richtig.
In einem cgi-bin-Verzeichnis?
Hat der Name irgendeine spezielle Bedeutung?
Wie willst du den Inhalt eines Perl-Scripts lesen (selbst wenn es auf 777 stehen sollte), wenn du dich nicht als root oder als Besitzer anmeldest?
777 bedeutet (u.a.), dass *jeder* lesen darf ...
Im Übrigen muß jeder, der ein Perl-script ausführen darf, es auch lesen können dürfen. Mit dem Webserver zusammen (suexec mal außen vor), sind das also schon mal drei User.
Wenn das trotzdem geht, stimmt die Systemkonfiguration nicht, und du solltest dich mit deinem System-Administrator in Verbindung setzen.
Das überlegst du dir vielleicht noch mal.
Kopieren kann notwendigerweise jeder der Leserechte auf die Datei hat und Verschieben (~ Kopieren mit anschließendem Löschen) darf sie jeder der Schreibrechte auf das enthaltende Verzeichnis hat (und natürlich auf das Zielverzeichnis).
Das trifft auf freigegebene Ordner/Verzeichnisse zu.
Was bedeutet das in diesem Kontext?
H.
morgen ebenfalls,
Im Übrigen muß jeder, der ein Perl-script ausführen darf, es auch lesen können dürfen.
Nein. "Ausführen" und "Lesen" sind zwei verschiedene Dinge, die nicht zwingend zusammengehören
Christoph S.
morgens,
keine Ahnung, was eben los war, daß meine Antwort plötzlich fortging und nur ein Drittel drin steht.
Kopieren/Verschieben können nur der Besitzer und root.
Das ist so natürlich allgemein nicht richtig.
In einem cgi-bin-Verzeichnis?
Hat der Name irgendeine spezielle Bedeutung?
Zumindest dann, wenn das Verzeichnis über einen Webserver angesprochen wird.
777 bedeutet (u.a.), dass *jeder* lesen darf ...
Wieso "u.a.", was bedeutet es denn noch, außer daß root, Besitzer, Gruppe und der Rest der Welt Lese-, Schreib- und Ausführungsrechte haben?
Wenn das trotzdem geht, stimmt die Systemkonfiguration nicht, und du solltest dich mit deinem System-Administrator in Verbindung setzen.
Das überlegst du dir vielleicht noch mal.
Was soll ich da überlegen? Als root kannst du selbstverständlich drauf zugreifen, und als Besitzer auch. Selbstverständlich kann root dir auch in dein home-Verzeichnis Dateien reinschieben, die dir gar nicht gehören, aber: wenn du dich als user am System anmeldest, hast du auf andere user-Verzeichnisse überhaupt keinen Zugriff - es sei denn, du gehst über den Webserver bzw. ews handelt sich um Scripts, deren Arbeitsergebnisse (das heißt, du kannst sie, ohne sie lesen zu dürfen, ausführen lassen) der Webserver an dich liefert.
Das trifft auf freigegebene Ordner/Verzeichnisse zu.
Was bedeutet das in diesem Kontext?
root kann Verzeichnisse anlegen, die er möglicherweise "pub" nennt, vielleicht ist dir sowas schonmal vorgekommen. Und wenn so ein Verzichnis auf 666 steht, kannst du alle darin liegenden Dateien, die ebenfalls auf xx6 oder xx7 stehen, natürlich lesen, auch wenn sie dir nicht gehören. Übrigens kannst du selbstverständlich auch Dateien lesen, auf die "jeder" Leserecht hat, unabhängig davon, wo sie liegen. Dann mußt du aber den genauen Datei-Pfad kennen, denn wenn das Verzeichnis selbst für dich keine Leserechte aufweist, bekommst du kein Listing und weißt gar nix davon, daß darin Dateien liegen, die du lesen darfst.
Christoph S.
Moin!
Kopieren/Verschieben können nur der Besitzer und root.
Das ist so natürlich allgemein nicht richtig.
In einem cgi-bin-Verzeichnis?
Hat der Name irgendeine spezielle Bedeutung?
Zumindest dann, wenn das Verzeichnis über einen Webserver angesprochen wird.
Ich denke, ihr redet aneinander vorbei. Du hast irgendwie immer den CGI-Kontext im Hinterkopf, während es den anderen nur um die typischen Dateirechte geht.
777 bedeutet (u.a.), dass *jeder* lesen darf ...
Wieso "u.a.", was bedeutet es denn noch, außer daß root, Besitzer, Gruppe und der Rest der Welt Lese-, Schreib- und Ausführungsrechte haben?
Eben weil 777 mehr bedeutet als nur "jeder darf lesen", wurde da "u.a." geschrieben - weil es eben auch "schreiben darf jeder" und "ausführen darf jeder" bedeutet.
root kann Verzeichnisse anlegen, die er möglicherweise "pub" nennt, vielleicht ist dir sowas schonmal vorgekommen. Und wenn so ein Verzichnis auf 666 steht, kannst du alle darin liegenden Dateien, die ebenfalls auf xx6 oder xx7 stehen, natürlich lesen, auch wenn sie dir nicht gehören.
Üblicherweise reicht das Leserecht aus, um Dateien lesen zu können. Also xx4, xx5, xx6 und xx7 funktionieren.
Übrigens kannst du selbstverständlich auch Dateien lesen, auf die "jeder" Leserecht hat, unabhängig davon, wo sie liegen. Dann mußt du aber den genauen Datei-Pfad kennen, denn wenn das Verzeichnis selbst für dich keine Leserechte aufweist, bekommst du kein Listing und weißt gar nix davon, daß darin Dateien liegen, die du lesen darfst.
Das stimmt so nun wieder nicht. Um auf Dateien in einem Verzeichnis bei genauer Kenntnis des Dateinamens zugreifen zu können, müssen alle Verzeichnisse bis hoch zu dem besagten Verzeichnis das Execute-Recht für die eigene User/Group-Kombi besitzen (was darauf hinausläuft, dass es nur dann grundsätzlich geht, wenn die Rechte für Owner, Group und other gleichermaßen gesetzt sind).
Die Rechte bei Verzeichnissen bedeuten im Einzelnen:
x (execute): Darf auf enthaltene Dateien zugreifen (wenn deren Rechte das gestatten)
r (read): Darf das Directory-Listing ansehen (ls geht)
w (write): Darf das Directory-Listing schreiben - was Dinge wie "neue Datei anlegen" oder "Datei löschen" erlaubt, weil dies das Listing verändert.
- Sven Rautenberg
hallo Sven,
Ich denke, ihr redet aneinander vorbei
Möglich.
Du hast irgendwie immer den CGI-Kontext im Hinterkopf
Natürlich, das liegt an der Fragestellung, siehe Threadtitel
xx4, xx5, xx6 und xx7 funktionieren.
Richtig.
wenn das Verzeichnis selbst für dich keine Leserechte aufweist, bekommst du kein Listing und weißt gar nix davon, daß darin Dateien liegen, die du lesen darfst.
Das stimmt so nun wieder nicht
? Du widersprichst dir im folgenden selbst:
Um auf Dateien in einem Verzeichnis bei genauer Kenntnis des Dateinamens zugreifen zu können, müssen alle Verzeichnisse bis hoch zu dem besagten Verzeichnis das Execute-Recht für die eigene User/Group-Kombi besitzen
Ich habe nichts anderes gesagt, du machst es bloß ein bissel genauer
(was darauf hinausläuft, dass es nur dann grundsätzlich geht, wenn die Rechte für Owner, Group und other gleichermaßen gesetzt sind)
Und das ist eine verkürzte Aussage. Prinzipiell ist es möglich (wenn auch bissel unsinnig), ein Verzeichnis auf 411 zu stellen, ich habs eben mal in einem Testverzeichnis durchgespielt. Da können Dateien von unterschiedlichen Besitzern drinliegen, und wenn dann für solche Dateien z.B. 666 gesetzt wird, haben wir genau das Beispiel, das ich meine. Das Verzeichnis ist für den "Benutzer" nicht sichtbar und er bekommt auch kein "ls", aber er kann, wenn er weiß, was der Verzeichnisinhalt ist, "seine" dort liegenden Dateien durchaus lesen - und hier auch Dateiinhalte schreiben/verändern, bloß neue Dateien anlegen oder löschen geht nicht.
Die Rechte bei Verzeichnissen bedeuten im Einzelnen:
x (execute): Darf auf enthaltene Dateien zugreifen (wenn deren Rechte das gestatten)
Und "ls" geht _nicht_
r (read): Darf das Directory-Listing ansehen (ls geht)
w (write): Darf das Directory-Listing schreiben - was Dinge wie "neue Datei anlegen" oder "Datei löschen" erlaubt, weil dies das Listing verändert.
Was die Ziffern, also 666 oder ähnliches, angeht, müßte ein entsprechender ca. 2 Wochen alter Thread im Archiv zu finden sein, ich hab jetzt nicht danach gesucht.
Was daran manchmal schwer zu begreifen ist, ist die Tatsache, daß ein Verzeichnis "geringere" Rechte als eine darin liegende Datei aufweisen kann. Außerdem bedeutet das Ausführungsrecht - x - eben nicht, daß es zwingend auch ein Leserecht ist.
Bleibt zu wünschen, daß Aqua bis hierher mitgelesen hat und seine Frage damit beantwortet ist ;-)
Christoph S.
Moin,
Du hast irgendwie immer den CGI-Kontext im Hinterkopf
Natürlich, das liegt an der Fragestellung, siehe Threadtitel
Seit wann sagt denn der Threadtitel hier etwas über das Diskussionsthema aus? ;-)
Ich zitiere von etwas weiter oben im Thread:
| »» ob mit einem editor, mit cat, oder sie einfach nur
| »» hineinkopiert/verschiebt.
| Kopieren/Verschieben können nur der Besitzer und root.
-- Aqua und Christoph Schnauss
Darauf habe ich geantwortet. Und es ging dabei offensichtlich (und IMHO auch allgemein im Ausgangsposting) nicht um den CGI-Kontext sondern um ein Verzeichnis in dem überproportional viele ausführbare Dateien liegen, welches cgi-bin heisst.
Bleibt zu wünschen, daß Aqua bis hierher mitgelesen hat und seine Frage damit beantwortet ist ;-)
ACK, die Antwort wäre nämlich, dass es keinen richtigen Weg dafür gibt. Man _könnte_ was basteln mit cron, einem shellscript und file und über letzteres überprüfen ob die Dateien im Verzeichnis (Perl|Shell)-Skripte oder Binaries sind und gegebenenfalls die x-Bits setzen.