Ich will Klartext: CHMOD

Sunray

Erfahrenes Mitglied
Wenn man so die Tutorials und Themen nach CHMOD durchsucht findet man überall Antworten wie
"Gib dem Verzeichnis Schreibrechte" oder "Setz ma 777".

Ich hab das CHMOD Tutorial gelesen.

1. Wie wir alle wissen sind PHP-Dateien KEINE ausführbaren Dateien sondern nur Anweisungen für die php.exe. Es macht also keinen Sinn irgend einer PHP-Datei oder einem Verzeichnis CHMOD 777 zu geben. Bin ich da richtig?

2. Was ist standardmässig CHMOD? 644?

3. Wird die php.exe vom Besitzer, Gruppe oder etwas Anderem ausgeführt?

4. Wenn man einem Verzeichnis Schreibrechte für Besitzer, Gruppe und Andere gibt, heisst das, dass jedes Programm (auf dem Webserver) Dateien in diesem Verzeichnis erstellen und löschen kann?

Aber: wenn man einem Verzeichnis (mit Inhalt) CHMOD 777 gibt, sind die darin enthaltenen Dateien nicht 777 immer noch das selbe wie vorher. -> *Schlussfolgerung* -> heisst das, dass man jede Datei, die man, z.B. mit PHP, erstellt zunächst "mit Schreibrechten" (666?) versehen muss bevor man darin schreiben kann?
Klingt für mich unlogisch.


Ich habe 2 mal Webspace beim selben Anbieter, der Linux (RedHat glaub ich :-) ) verwendet. Auf beiden Accounts habe ich das selbe Script. Mit dem Unterschied, dass es beim einen funktioniert und beim anderen nicht. Ich habe schon versucht die CHMOD's "nachzubauen" aber das hat mangels verständnis dieser Materie nicht geklappt.

Könnte mir bitte einmal einer erklären, was ich setzen muss, wenn ich mit PHP eine Datei erstellen und dann beschreiben will. Und mit "erklären" meine ich nicht "schau mal hier http://www.tutorials.de/forum/showthread.php?s=&threadid=6877".

Ich habe das Gefühl, dass ich nicht der einzige bin, der keinen Plan von all dem hat.

Danke an jeden, der mich nicht als nichtswissenden , kiddie oder Windows-Freak bezeichnet und mir beim Begreifen dieses hochinteressanten Themas hilft.
 
1. nein die php dateien gehen über den apache. allerdings macht es keinen sinn ausführrechte auf php dateien zu geben. es reicht sozusagen 666
2. ja
3. std.mässig wird jede datei vom besitzer ausgeführt, ghört aber ein andrer besitzer ( dem diese datei NICHT gehört ) der gruppe an kann er diese ebenfalls ausführen
4. ja

chmod wird immer nur auf das entpsprechende verzeichnis bzw. auf die entpsrechende datei angewendet, will man es recursive machen ( also chmod auf den inhalt von einem verzeichnis ebenfalls anwenden ), so muss man den parameter -R bzw. --recursive mit angeben

eigentlich reicht es aus wenn du dem web verzeichnis dem benutzer des apaches zuweist ( meisten user: nobody; group: nogroup ), dies geht mit chown -R nobody:nogroup /pfad/zum/web/verzeichnis und dann noch chmod -R 770 /pfad/zum/web/verzeichnis/ sollte dir das zu unsicher sein, machst du auf dateien chmod 660 und auf verzeichnisse chmod 770
sollte das web verzeichnis nicht dem benutzer vom apache angehört musst du natürlich chmod 777 bzw. chmod 666, ansonsten wird apache nicht darauf zugreifen können

hoffe ich habs einigermassen richtig und nichts falsch erklärt.

wenn noch fragen offen sind, dann frag ;)
 
Original geschrieben von Devil Noxx
1. nein die php dateien gehen über den apache. allerdings macht es keinen sinn ausführrechte auf php dateien zu geben. es reicht sozusagen 666

Wozu brauch die Gruppe/Andere Schreibrechte? ;)
Eher schlecht.
640 wenn du an deinem Script noch arbeiten willst.
440 wenn dieses Script als finale version hochgeladen wird.

Wenn dein FTP Upload Accaunt == Apache User ist
solltest du:
600
400
nutzen.

Faustregel: Minimale Rechte die nötig sind.

Original geschrieben von Devil Noxx

du natürlich chmod 777 bzw. chmod 666, ansonsten wird apache nicht darauf zugreifen können

Bitte nicht!
Nicht Allen zugriff geben. Sprich finger weg von der letzten Nummer.
Wenn der FTP Upload Accaunt nicht so administriert ist das Gruppenrecht ausreicht, schreib lieber deinem Hoster einen Brief das er keine Ahnung hat und wechsel den Hoster.

Zum Rechtekonzept (sollte jeder PHP Programmierer verstehen ob er Windows nutzt oder nicht):
http://www.selflinux.org/selflinux/html/nutzer_unter_linux05.html#d19e741

Hier ists recht ausführlich beschrieben
 
Hm...

ok, bei mir ist es so, dass, wenn ein User eine Seite anfordert, er die Leserechte für Andere haben muss. Heisst das, dass Apache unter Andere läuft? Den Hoster möchte ich eigentlich nicht wechseln, da es in der Schweiz schwierig ist, an günstigen Webspace heran zukommen.

Wenn das so ist muss ich ja eben genau diese Zahl verändern. Hab ich da recht?

Das würde bedeuten:
Normale Dateien/Verzeichnisse: 644
Beschreibbare Dateien/Verzeichnisse: 666

ABER:
Um ein Verzeichnis zu betreten brauch ich ja Ausführrecht. Das bedeutet:
Verzeichnisse müssen 7** sein.

Wenn ich eine Datei aus einem verzeichnis includen will, wird diese Datei vom Apache-Server geöffnet und ausgelesen. Wieso muss das Verzeichnis Ausführrechte für Andere haben: 765
Ich würde ja verstehen, dass Apache eine temporäre Datei anlegt und dafür Schreibrechte benötigt, aber das ist ja nicht der Fall. Ein Verzeichnis, welches beschreibbar und "inlcudebar" sein soll muss also 747 haben.

Bei mir funktioniert jetzt alles aber wieso weiss ich nicht
 
Original geschrieben von Sunray
Hm...

ok, bei mir ist es so, dass, wenn ein User eine Seite anfordert, er die Leserechte für Andere haben muss.

Das ist falsch. Denn nicht der Besucher liest die php (oder html) Datei
sondern der Webserver.
Und unter welchem User der Apache läuft steht in der httpd.conf unter
------
User apache
Group apache
------

Original geschrieben von Sunray

Heisst das, dass Apache unter Andere läuft? Den Hoster möchte ich eigentlich nicht wechseln, da es in der Schweiz schwierig ist, an günstigen Webspace heran zukommen.

Nein, es wird so sein das der apache unter dem apache (oder nobody) läuft und unter einer apache group.
Du mit deinem FTP Accaunt solltest mitglied der apache group sein was dazu führt das du Gruppenleserecht für die Datei gibst.
440

Original geschrieben von Sunray

Wenn das so ist muss ich ja eben genau diese Zahl verändern. Hab ich da recht?
Nein eben nicht, denn das jeder Recht sollte wenn überhaupt nur im /tmp verzeichnis gesetzt werden. Dein Hoster sollte eigentlich das so konfiguriert haben das du eben nicht jedem das recht geben musst.
Ansonsten rate ich dennoch zum Wechsel, aber eine email an den Support dürfte dir gegenüber für Aufklärung sorgen.

Original geschrieben von Sunray

Das würde bedeuten:
Normale Dateien/Verzeichnisse: 644
400 bzw
440 falls dein FTP-Accaunt != Apache Accaunt

Original geschrieben von Sunray

Beschreibbare Dateien/Verzeichnisse: 666
Dementsprechend 600
bzw 660

Original geschrieben von Sunray

ABER:
Um ein Verzeichnis zu betreten brauch ich ja Ausführrecht. Das bedeutet:
Verzeichnisse müssen 7** sein.
Nein auch das muss nicht sein. Sogar 100 (bzw 110) reicht bei dem Aufspielen der finalen Version aufs Verzeichnis zu setzen.
Denn der Apache muss nur in das Verzeichnis wechseln können um dort dann anhand den Angeforderten Dateien diese auslesen zu können.
Aber 770 auf Verzeichnisse zu setzen ist jetzt mal kein Beinbruch.
Doch die Finger weg von der letzten Ziffer ;)

Original geschrieben von Sunray

Wenn ich eine Datei aus einem verzeichnis includen will, wird diese Datei vom Apache-Server geöffnet und ausgelesen. Wieso muss das Verzeichnis Ausführrechte für Andere haben: 765
Muss es ja nicht

Original geschrieben von Sunray

Ich würde ja verstehen, dass Apache eine temporäre Datei anlegt und dafür Schreibrechte benötigt, aber das ist ja nicht der Fall. Ein Verzeichnis, welches beschreibbar und "inlcudebar" sein soll muss also 747 haben.
Finger weg von der letzten Ziffer :-)

Original geschrieben von Sunray

Bei mir funktioniert jetzt alles aber wieso weiss ich nicht

Ja kommt mannchmal vor :)
 
Ja ber es funktioniert bei mir nur, weil ich die letzte Ziffer auch ändere.

Jetzt weiss ich auch, wieso ich das nicht verstehe: Weil mein Webserver abnormal eingerichtet ist.

Danke für all die Antworten. :-)
 
Zurück