Chmod über php mit Joker-Verzeichnis

Liebe/-r Experte/-in,
Ich versuche nich gerade in Galery2 (falls ihr das kennt)

Nun wird dort angegeben, dass ich mehrere Verzeichnisse auf 777 umstellen soll. Es sind alles „PO“ verzeichnisse, die es aber in sehr vielen Verzeichnissen gibt. Die Hilfe sagt dazu ich soll in einer Shell folgendes eingeben

cd /var/www/meinweb/html/meinverzeichnis/
chmod -R 777 modules/*/po

ich benutze ws_ftp (freeware) und confixx, beide haben aber keine shell, so habe ich einzeln jedes Verzeichnis umgestellt.Trotzdem sagt Gallery2 ich solle es machen(zeigt aber nicht an, bei welcher es fehlt), offensichtlich gibt es mehr oder ich habe ein paar übersehen. Alles einzeln durchgehen ist sehr mühsehlig zumal confixx über IE cache hat und die Anzeigen nicht einmal stimmen.
Nun wollte ich es per php machen und habe in eine PHP eingegeben

chmod(„meinverzeichnis/modules/*/po“, 0777);

diese php-Datei ist im Verzeichnis html. Jetzt kommt der Fehler, dass keine passende Datei gefunden wurde.

wie kann ich alle „Po“ Unterverzeichnisse die sich um Ordner Modules befinden auf einmal auf 777 setzen?

Hallo Michael,

Galery2 verwende ich nicht, ich werde aber versuchen deine Frage so gut wie möglich zu beantworten.

Nun wird dort angegeben, dass ich mehrere
Verzeichnisse auf 777 umstellen soll.

Offensichtlich werden die PO-Verzeichnisse zum Schreiben benutzt und müssen deshalb beschreibbar sein. Dies kann auch die darin enthaltenen Unterverzeichnisse und Dateien betreffen. Das heißt, du kannst versuchen die Verzeichnisse auf 0777 zu setzen und die Dateien in diesen Verzeichnissen auf 0644.

Das Ganze hängt vom Serversystem und der -konfiguration ab. Statt 0777, kann auch 0755 erforderlich sein. Schau dir zunächst einmal die Dateirechte von bereits vorhandenen, beschreibbaren und lesbaren Verzeichnissen und Dateien, auf deinem Webspace an. Dann weißt du, was für Werte du verwenden musst. Wir können dir auch besser weiterhelfen, wenn du uns sagst, bei welchem Hoster du bist.

Leider ergibt sich durch das Setzen von 0777 eine Sicherheitslücke, da die Gruppen „Gruppe“ und „Welt“ nun auch in diese Verzeichnisse schreiben können.

chmod(„meinverzeichnis/modules/*/po“, 0777);

chmod() schlägt in der Regel bei einem nachträglichen Aufruf fehl, wenn nicht die erforderlichen Dateirechte vorhanden sind. chmod() sollte deshalb direkt nach dem Anlegen einer Datei mit 0644 auf die angelegte Datei angewandt werden. Aber auch dies hängt unter anderem von der Serverkonfiguration ab. Darüber hinaus unterstützt chmod() keine Wildcards (*), weshalb auch keine Datei gefunden werden konnte. Der Code muss deshalb erheblich verändert werden:

<?php chmodr('meinverzeichnis/modules/', 0777);
function chmodr($path, $filemode) { if (!is\_dir($path)) return chmod($path, $filemode); $dh = opendir($path); while (($file = readdir($dh)) !== false) { if($file != '.' && $file != '..') { $fullpath = $path.'/'.$file; if(is\_link($fullpath)) return FALSE; elseif(!is\_dir($fullpath) && !chmod($fullpath, $filemode)) return FALSE; elseif(!chmodr($fullpath, $filemode)) return FALSE; } } closedir($dh); if(chmod($path, $filemode)) return TRUE; else return FALSE; } ?\> Liebe Grüße, franz

Hallo Franz,

wow, ich wollte mich mal mit php befassen, aber ich blicke bei deinen relativ kurzen Code schon nicht mehr durch.
Ich habe in trotzdem getestet und er bringt mir Fehler in Zeile 13
chmod() [function.chmod]: Operation not permitted in /var/www/xyz/html/info.php on line 13
Zeile 13 wäre

elseif(!is_dir($fullpath) && !chmod($fullpath, $filemode))

(Anmerkung, die Datei habe ich info.php genannt, da ich diese eigentlich zu eben dieser Info nehme.)
Kannst du da eventuell nochmal helfen?
Übrigens ich bin bei All-inkusive-webspace.de

Die Rechte sind bei den ‚po‘-verzeichnissen alle auf 755 gewesen und ich habe sie alle mit confixx auf 777 umgestellt. Offensichtlich habe ich welche übersehen oder es existieren weitere Unterverzeichnisse in diesen, die eventuell Po heißen.

Alle einzeln zu überprüfen ist sehr mühsehlig, daher wollte ich der Hilfe nachgehen, weiß aber nicht wo so eine shell herzubekommen ist. Deshalb kam ich auf PHP.

Wo in deinen Code hhinterlegt man eigentlich, dass das Verzeichnis „po“ heißen muss?

LG Micha
und vielen Dank nochmal

Hallo Michael,

chmod() [function.chmod]: Operation not permitted

Das bedeutet, dass die Funktion chmod() deaktiviert wurde und nicht verwendet werden kann. Eventuell könnte man noch eine eigene php.ini-Datei auf dem Server anlegen. Aber wahrscheinlich wird diese auch nicht unterstützt. Kurz gesagt, mit php geht es bei dir nicht.

weiß aber nicht wo so eine shell
herzubekommen ist. Deshalb kam ich auf PHP.

Hast du es schon mit dem Windows-Explorer versucht?

Einfach ein Windows-Explorer-Fenster aufmachen (Eigene Dateien, Arbeitsplatz oder sonst etwas) und bei Adresse die Adresse Deines FTP-Servers eingeben. z.B. ftp://www.meineadresse.de

Dann auf Datei > Anmelden als… klicken und in dem erscheinenden Dialog FTP-Benutzername und Kennwort eingeben.

Anschließend wird der Inhalt deines Webspace angezeigt. Wenn du eine Datei, oder einen Ordner auswählst, kannst du mit der rechten Maustaste auf Eigenschaften gehen und die Dateirechte setzen. Für den Wert 0777 muss in allen Kästchen ein Häkchen stehen. Für den Wert 0755 müssen die Häkchen in allen Kästchen, bis auf „Schreiben - Gruppe“ und „Schreiben - Alle Benutzer“ gesetzt sein. Für 0644 dürfen die Häkchen nur in den Kästchen „Lesen - Eigentümer“, „Schreiben - Eigentümer“ und „Lesen - Gruppe“ stehen.

Liebe Grüße,
franz