CHMOD bei Safemode

qsrs

Erfahrenes Mitglied
Hallo,

nachdem ich jetzt hier einiges über das Erstellen von Verzeichnissen per PHP mit chmod gelesen habe, konnte ich dennoch keine Lösung für mein eigenes Problem finden.

Habe ein Script geschrieben, welches strukturell aus einem Hauptverzeichnis besteht, unter welchem Dateien und Unterverzeichnisse liegen. Das komplette Script wird auf den Server geladen. Ein Scipt (Setup-Assistent) soll dann in diesem Verzeichnis (chmod-Standard = 0755) ein Unterverzeichnis mit chmod 0777 anlegen. Das klappt natürlich nicht, da das Rootverzeichnis die Rechte 0755 hat. Safemode ist auf dem Sever eingeschaltet. Ich möchte die Rechte nicht manuell per FTP-Client ändern, da dies alles über das Setup erledigt werden soll und der User, der das Script installiert, nicht selbst Hand anlegen muss.

Mich interessiert hierbei im Wesentlichen die Problematik mit CHMOD, nicht die Lösung des speziellen Problemes in diesem Fall.
 
Ich wollte den Thread noch mal hochbringen in der Hoffnung, dass vielleicht doch noch jemand antwortet.
 
qsrs hat gesagt.:
Ein Scipt (Setup-Assistent) soll dann in diesem Verzeichnis (chmod-Standard = 0755) ein Unterverzeichnis mit chmod 0777 anlegen. Das klappt natürlich nicht, da das Rootverzeichnis die Rechte 0755 hat.
Wie kommst du denn auf die Idee? Die Rechte eines Ordners sind nicht von den Rechten des übergeordneten Ordners abhängig.
 
Also ich habe Folgendes getestet:

1. Rootverzeichnis hat Berechtigung 0755
2. Darunter liegendes Script versucht Unterverzeichnis auf 0777 zu setzen - funktioniert nicht
3. Habe Rootverzeichnis auf 0777 gesetzt - Punkt 2. funktioniert


Das würde bedeuten, dass das Rootverzeichnis doch ausschlaggebend für die Berechtigungen der darunter liegenden Verzeichnisse ist.
 
UMASK prüfe ich noch.
Anlegen von Ordnern geht ürbigens auch nicht (Permission denied). Ich solle vielleicht erwähnen, dass ich das Rootverzeichnis per FTP hochlade, was ja üblich ist.
 
Ah, dann liegt es warscheinlich an unterschiedlichen Benutzern für PHP und FTP. Das würde auch erklären, warum es nur bei chmod 777 funktioniert.

Was dann logisch wäre:
Besitzer=RW (7) Gruppe=RW (7) Alle=RW (7)

Wenn Du mit PHP alle Möglichkeiten ausschöpfen möchtest, solltest Du das Rootverzeichnis einmalig mit PHP erstellen um mit dem PHP-Benutzer arbeiten zu können, sonst wirst Du nur mit Benutzerrechten 777 arbeiten können, solange der Rootordner dem FTP-User zugewiesen ist.
 
Ok. Ich suche nur noch nach einer passenden Lösung. Das Script soll universell einsetzbar sein, d.h. ein User lädt sich das Script herunter und lädt es dann auf seinen Server. Ich wüsste nicht, wie ich das mit PHP machen sollte.

Die meisten Scripts sind schon in einer kompletten Verzeichnisstruktur, und werden dann per FTP einfach auf den Server geladen. Fairerweise muss ich dazu sagen, dass bei vielen Scripts Anweisungen in den Installationsanleitungen, (falls notwendig) CHMOD für bestimmte Verzeichnisse manuell zu setzen, gegeben werden.

Wie kann ich also ein Rootverzeichnis mit PHP anlegen, wenn dort mein komplettes Script schon vorhanden ist? Vielleicht mit einem Script über dem Rootverzeichnis, welches die Daten per PHP hochlädt und auch das Rootverzeichnis anlegt? Ist das nicht umständlich? Oder ist diese Überlegung falsch?
 
qsrs hat gesagt.:
Die meisten Scripts sind schon in einer kompletten Verzeichnisstruktur, und werden dann per FTP einfach auf den Server geladen. Fairerweise muss ich dazu sagen, dass bei vielen Scripts Anweisungen in den Installationsanleitungen, (falls notwendig) CHMOD für bestimmte Verzeichnisse manuell zu setzen, gegeben werden.
Das ist in den meisten Fällen auch nicht sehr gut. Weil eben aus besagtem Fall chmod 777 empfohlen wird, was aber oft der Sicherheit entgegensprechen kann.

qsrs hat gesagt.:
Wie kann ich also ein Rootverzeichnis mit PHP anlegen, wenn dort mein komplettes Script schon vorhanden ist? Vielleicht mit einem Script über dem Rootverzeichnis, welches die Daten per PHP hochlädt und auch das Rootverzeichnis anlegt? Ist das nicht umständlich? Oder ist diese Überlegung falsch?
Die Idee ist nicht unbedingt umständlich. Du bietest eine simple (kleine) Installationsdatei an, die nichts weiter tut als alle nötigen Dateien von Deinem Server auszulesen und auf den Zielserver zu schreiben in das frisch von der Installationsdatei angelegte Verzeichnis. ;)
 
Dann müsste ich ja erstmal alles per FTP hoch laden, per Script ein Rootverzeichnis anlegen und dann die Struktur (Dateien und Verzeichnisse) vom Installationsverzeichnis in das Rootverzeichnis kopieren. Das ist mehr Aufwand als 1 - 2 Verzeichnisse explizit per FTP mit chmod auf 0777 zu ändern.

Wenn mein Script nichts ausführt, was die Sicherheit gefährden könnte, ist 0777 doch nicht so wild, oder? Schließlich kann keiner etwas in das Verzeichnis schreiben. Ich frage deshalb, weil in einem dieser Verzeichnisse eine config.php liegt, welche u. a. Angaben zur Datenbankverbindnung enthält.

Um noch mal auf den ersten Abschnitt zurückzukommen. Da gibt es dann wohl nur diese Lösung, sehe ich das richtig?

Habe gerade einen ganz simplen Test gemacht und ein Script in das Rootverzeichnis der Website gelegt. Dieses sollte mit mkdir() ein Verzeichnis anlegen und ich bekam ebenfalls die Meldung "Permission denied". Dann kann ich ja gar nichts anlegen. Kann das sein? Kommt mir etwas komisch vor.
 
Zurück