denkfehler!

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

Montag 12. April 2004, 11:39

Ja, denn wenn das so wäre, dann könnte jeder Hinz & Kunz die Textdateien manipulieren, und damit alle UNIXE gute nacht mit euerer Security 8) Fast alle Konfigurationsdateien in Linux sind Textdateien.

Zunächst einmal .txt kennen glaube ich nur DOS basierte Systeme. Der Übersichtlichkeit wegen hat sich aber die Dateiextension als Standard etabliert. Einem Unixbasiertem System ist es egal, welche Dateiextension vorhanden ist. Den Dateityp kannst du notfalls mit file /dein/dateiname ermitteln.

Beim Systemstart wird dein Apache (httpd) gestartet. Dieser wird normalerweise mit einem eigenen User (nennen wir ihn ApacheUser) und nicht mit root-rechten gestartet. Wenn du jetzt ein CGI Script ausführst und eine Datei beschreiben willst, dann geht das immer, wenn der Owner ApacheUser Schreibrechte an der Datei hat.

Untersuch einmal deine /etc/httpd/conf/httpd.conf (Pfad könnte bei die etwas anders sein). Da sind User und Group definiert, unter denen Apache gestartet wird. Bei mir ist das in beiden Fällen apache.

Hans
Gast

Montag 12. April 2004, 11:48

???

ist mir alles net neu, aber warum steht dann in jedem lehrbuch für cgi programmierung, in denen beispiele mit textdateien besprochen werden, die rechte müssen au 777???

das habe ich mal als richtig angenommen.

hast das noch nie gelesen?

mfg

rolgal
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Montag 12. April 2004, 11:56

Hi, da hat sich wohl das Lehrbuch vertan. Niemand ist unfehlbar. Ich glaube 755 würde auch vollkommen reichen (rwxr-x-r-x), wobei natürlich wichtig ist, für wen die 7 gilt. In dem Fall wohl für httpd... Ausprobieren kann ich es leider nicht bei mir selbst, sondern nur auf einem webserver, aber da reicht das vollkommen.

Milan
Gast

Montag 12. April 2004, 12:13

ich probiere das jetzt gleich mal aus.
:?
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Montag 12. April 2004, 12:40

Hallo nochmal,

hier scheint einiges durcheinander geraten zu sein.

Directories, in denen auch Dateien angelegt werden dürfen, müssen als Rechte 0755 haben, wenn nur der Owner Dateien, im Verzeichnis, anlegen darf, sonst 0777 wenn jeder Dateien hier anlegen darf.
Nicht ausführbare Textdateien die nur vom Owner geändert werden dürfen müssen 0644 als rechte haben, darf jeder die Textdatei ändern 0666. Ausführbare Dateien (CGI-Scripte) sollten 0755 haben.


Gruß

Dookie
Gast

Montag 12. April 2004, 12:53

hi dookie

sehe es ja genauso. ich habe auch gerade folgendes probiert:
ein gästebuch mit einer textdatei. bei 755 passiert hier nichts. 755 ist für ausführbare cgi skripten.

die 0666 geht bei textdateien, wusste ich nicht.

also 777 für verzeichnisse und 0666 für dateien, wenn sie beschreibbar sein sollen.

mfg

rolgal
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Montag 12. April 2004, 12:58

Hi rolgal,

wenn die Textdatei vom Script selber erzeugt wird reicht 0644.
immer die 0 davor, dann ists oktal und jede Stelle der Zahl entspricht 3 Bit.


Gruß

Dookie
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

Montag 12. April 2004, 18:37

Nehmen wir einmal an, dein Owner vom httpd Prozess ist wie bei mir apache, dann ist 755 für ein Verzeichnis ausreichend, wenn apache auch Owner vom Verzeichnis ist. Wenn du das auf 777 setzt, funktioniert das auch, aber du legst unter Umständen deine CGI Scripte offen. Wenn es auf einem Server läuft, sollte man das nicht machen.

Wenn das Script eine Datei erstellt, dann sollte die normal schon die Berechtigung 644 haben, ist in der Bash so, aber wo kommen da die Voreinstellungen her? Ein umask 022 vorher sollte die Einstellung vornehmen.

So lange du noch entwickelst, setze ersteinmal alles auf 777 (umask 0) und wenn es dann läuft, stell die Sicherheit ein.

Hans
Gast

Mittwoch 14. April 2004, 12:09

hi !

wieder von vorne! wenn ich es geschnallt habe, dann muss ich jedesmal beim aufruf des skripts den nutzer ermitteln ihn zum besitzer der datei machen und ihm die notwendigen rechte übergeben.

so weit so gut. ich habe mir aber in der doku chown angeguckt und hier wird eine zahl erwartet für die uid und gid.

Code: Alles auswählen

os.environ['USER']
liefert aber einen string.

was tun sprach rolgal :D :?:
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Mittwoch 14. April 2004, 12:55

Hi nochmal,

am Einfachsten ist es, wenn Du die Textdateien und Verzeichnisse, die mit CGI-Scripten bearbeitet werden sollen, auch von CGI-Scripten erstellen lässt.
Die CGI-Scripte laufen alle unter dem selben User, bei Debian-Linux heisst der "www-data", ganz egal wer grad das Script aufgerufen hat.

Mach Dir also am besten ein Initscript, das Du auf den Server lädst, welches die Verzeichnisse und Dateien erstellt, die von anderen Scripten bearbeitet werden sollen. In dem Script kannst Du auch Dateien von deinem Rechner hochladen lassen.

So gibts keine Probleme wegen falscher Rechte oder falschem Owner der Dateien und Verzeichnisse. Für Verzeichnisse kannst Du dann 0755 und für Dateien 0644 als Rechte benutzen.

Dann brauchst auch nicht mit Benutzern und Rechten rumdröseln.


Gruß

Dookie
Gast

Mittwoch 14. April 2004, 18:12

hi dookie!

danke für den tipp, aber ich will ein bisschen was anders. jede seite soll bearbeitet werden können. über eine seite die ähnlich wie die sitemap dynamisch erstellt wird, kann ich im administrationsbereich, zu dem nur ich mich einloggen kann, eine seite zur bearbeitung auswählen.
freilich gibt es sowas in zope, ich will es aber tiefer in der seite integriert.

mfg


rolgal
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Mittwoch 14. April 2004, 18:37

Hi rolgal,

is ja egal, dann lad die Seiten mit einem Script hoch und lass sie von dem Script an die entsprechenden stellen schreiben. Dann kannst Du sie mit dem Administrationsscript bearbeiten. Es ist ganz egal wer dann dort eingeloggt ist, der Besitzer der von einem Script erstellten Dateien ist immer der gleiche egal von wem auf welchem Rechner mit welchem Browser oder sonstwie über http das Script aufgerufen wurde!!!

Bei Zope läuft das Ganze noch etwas komplexer ab. Da Du dort ja auch Benutzer anlegen kannst die beim Login erkannt werden und die Objekte dann demjenigen zugeordnet werden. Wei kommst Du jetzt überhaupt auf Zope, ich dachte du machst das mit eigenen Scripten?

Wenn Du aber etwas per ftp hochlädst ist der Eigentümer und die Gruppe ein anderer als wenn ein Script die Datei angelegt hat. Kannst Du schön in einem guten FTP-Programm wie gFTP sehen, dort werden auch die Eigentümer und Gruppen der Dateien und Verzeichnisse angezeigt.


Gruß

Dookie
Gast

Mittwoch 14. April 2004, 18:42

aha, es dämmert!

ich habe das etwas anders verstanden. schreiben ist nicht immer die beste form der kommunikation :D

das mit zope war nur ein bsp. was ich machen will, also so ähnlich eben.

mfg

rolgal
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Mittwoch 14. April 2004, 18:48

rolgal hat geschrieben:aha, es dämmert!
na endlich ;)
ich habe das etwas anders verstanden. schreiben ist nicht immer die beste form der kommunikation :D
Naja, wenn man aufmerksam liest und mal das interpretieren weg lässt. Ich weiss, das ist für nen Menschen schwerer als für einen Computer ;)
das mit zope war nur ein bsp. was ich machen will, also so ähnlich eben.
Na Zope ist schon eine ganz andere Baustelle.
mfg

rolgal

Gruß

Dookie
Gast

Mittwoch 14. April 2004, 19:08

hi dookie!

ich meinte ja nur ich will diese funktion, des online editierens auf meiner seite nutzen können, so wie das u.a. auch mit zope möglich ist.

das anlegen lassen mit dem skript und dann das runterladen hat mal nicht geklappt.

mal sehen, ob ich selber draufkomme.

mfg

rolgal
Antworten