moin moin,
ich bin zum ersten mal dabei eine webeite zu erstellen. d.h. eigentlich scheitere ich schon bei der installation. wenn ich das erste mal auf dem server den ordner mit den installationsdatein aufrufe, bekomme ich ja ein fenster mit infos und daten die ich eingeben muß. in dem step 2 in diesem fenster steht, daß 6 ordner und die config.php "unwriteable" sind. laut installationsanleitung von der offiziellen wb projektseite sollen die aber "writeable" sein. die werden aber nur writeable, wenn ich alle schreibrechte freigebe. das wäre dann 777. laut anleitung soll aber 755 reichen. soweit ich weiß, soll man es auch unbedingt vermeiden (ausser vielleicht, wenn ich das lokal mit XAMPP ausprobiere) die berechtigungen auf 777 einzustellen. könnte da theoretisch nicht jeder in diesen ordener reinschreiben?
kann mir jemand dazu eine info geben? über die forumssuche habe ich da leider nichts zu gefunden.
gruß
hein
welche Berechtigungen bei der Installation
(5 posts) (2 voices)-
vor 2 years veröffentlicht #
-
Hallo HeinMueck,
Nach dem Ändern der Rechte hast Du die Installationsseite sicher neu geladen. Es kann aber sein, dass die alte Seite noch im Cache ist und deshalb anstelle von writeable immer noch unwriteable angezeigt wird.
Drücke doch mal Shift-Reload um beim Laden der Seite den Cache des Browsers für diese Seite zu löschen.
Oder könnte es sein, dass Dein Rechner hinter einem Proxy-Server steht? Dann hat dieser evtl. noch die alte Seite gespeichert.
Das mit dem Cache war nur so eine Idee von mir.
Jetzt ein bischen was zur Rechtevergabe:
Aus Sicherheitsgründen sollte auf eine Rechtevergabe wie
chmod 777
verzichtet werden.
Wie ist das so mit der Rechtevergabe unter Linux/Unix?
Ganz einfach. Für jede Datei und jedes Verzeichnis können die Rechte für
Besitzer, Gruppe und alle Anderen individuell vergeben werden.
Für alle drei Bereiche stehen jeweils Lesen, Schreiben und Ausführen zur Verfügung.
Also read, write und execute. sympolisiert durch r w x
- r = lesen
- w = schreiben
- x = ausführen
Hier ein Beispiel:
-rw-r--r--
die einzelnen Buchstaben und Stellen stehen für die Rechte.
Die Erste stelle ist (-) ist hier nicht Besetzt. Diese wird für besondere Dateien, z.B. Verzeichnisse gebraucht. Bei einem Verzeichnis würde hier ein d stehen.
Die darauf folgenden drei Stellen sind für die Rechte des Besitzers der Datei. Hier ist das Lesen und Schreiben erlaubt, jedoch nicht das Ausführen (rw-).
Die danach folgenden Stellen sind für die Gruppe der Datei. Diese darf hier nur lesen, aber nicht schreibten und auch die Datei nicht ausführen. Gleiches gilt für alle Anderen die weder Besitzer der Datei sind, noch der Gruppe angehören.
[/Zusammenfassung:
Die erste Stelle steht für unterschiedliche Dinge, wie etwa Verzeichnisse, dann würde hier kein - sondern ein d stehen.
Dann folgen 3 Stellen für den Besitzer, 3 für die Gruppe und 3 für alle anderen.
Wenn jetzt z.B. 644 als Rechtevergabe gesetzt werden soll, dann steht die erste 6 für den Besitzer, die mittlere 4 für die Gruppe und die letzte 4 für alle anderen.
[/Was bedeuten diese Zahlen:
- r - Lesen = 4
- w - Schreiben = 2
- x - Ausführen = 1
Möchte man nur Leseberechtigung vergeben, so reicht die Angabe einer 4.
Um mehrere dieser drei Berechtigungen anzuwenden müssen die Zahlen addiert werden.
Beispiel: Lesen, Schreiben und Ausführen wäre 4+2+1=7
Es müsste also 7 angegeben werden.
[/Möglichen Kombinationen:
- 1 = ausführen
- 2 = schreiben
- 3 = ausführen und schreiben
- 4 = lesen
- 5 = lesen und ausführen
- 6 = lesen und schreiben
- 7 = lesen, schreiben und ausführen
- 0 = keine Rechte
[/Benutzer und Gruppen:
Jeder der per FTP oder SSH Zugriff auf seinen Webspace oder Server hat, braucht einen Benutzer. Dieser Benutzer befindet sich in einer Gruppe.
Ich gehe mal hier von dem Benutzer daniel in der Gruppe users aus.
Aber auch der Webserver (oft Apache) braucht einen Benutzer. Ich gehe hier mal von dem Benutzer www-data aus, der in der Gruppe apache ist.
Wenn ich jetzt eine Datei per FTP auf den Server lade, dann gehört diese dem Benutzer daniel und der Gruppe users. Möchte ich diese Datei jetzt im Brower aufrufen, so könnte es ein Problem mit den Rechten geben.
Warum? Die Datei wird über dem Browser vom Webserver aufgerufen, also vom Benutzer www-data in der Gruppe apache. Wenn die Rechtevergabe der Datei jetzt 644 ist, dann darf die Datei von www-data gelesen werden (letzte 4, alle anderen).
Möchte man aber diese Datei über den Webserver umbenennen oder löschen, so dürfte dies nicht möglich sein, denn alle anderen dürfen ja nur lesen. 644 bezieht sich ja auf: der Besitzer daniel darf lesen und schreiben, die Gruppe users darf lesen und alle anderen (also auch www-data) dürfen auch nur lesen.
Wie kann man dieses Problem umgehen?
Es gibt mehrere Möglichkeiten!
- Man gibt allen anderen mehr Rechte (nicht empfehlenswert)
- Man gibt dem Benutzer www-data die Rechte der Gruppe users (oft bei vielen Providern nicht möglich)
- Man ändert nach dem hochladen einer Datei die Benutzerrechte (sehr aufwendig)
- Man verwendet su-php (wird von vielen Providern angeboten)
- Der FTP Benuzer ist mit dem Webserverbenutzer identisch.
Bei vielen Providern wird aus Sicherheitsgründen und um die Rechtevergabe zu vereinfachen su-php verwendet.
Aber was bedeutet dies. Ganz einfach, auf Dateien die über den Webserver aufgerufen oder bearbeitet werde (also über den Browser), werden die Rechte des eigenen Benutzers angewendet.
Das würde in diesem Beispiel bedeuten, dass eine Datei des Benutzers daniel mit den Rechten 644 auch über den Browser beschrieben werden darf.
Was ist zu beachten?
Wichtig ist, dass in einer su-php Umgebung alle anderen die Datei nicht schreiben dürfen.
Warum?
Weil der Server aus Sicherheitsgründen dies verhindern würde und dann als Resultat im Browser entweder eine leere Seite oder ein Serverfehler angezeigt werden würde.
Wenn also in einer su-php Umgebung 777 als Recht für eine Datei vergeben wird, dann gibt es eine Fehler und die ganze Seite geht u.U. nicht mehr.
Eine Sinnvolle Rechtevergabe wäre
für Ordner: 755
und für Dateien: 644
Wenn man glücklicherweise zugriff per ssh auf den Server hat, dann kann man die Rechte auch mit einem Rutsch für alle Dateien und Dateien in Unterverzeichnissen anpassen.
Wenn beispielsweise das Webserver-Root-Verzeichnis /home/www ist und man die Rechte aller Dateien im Verzeichnis www und allen Unterverzeichnissen auf 644 ändern möchte, aber nicht nicht die Rechte der Verzeichnisse selber, dann kann man folgenden Befehl einsetzen:
find /home/www/ -type f | xargs chmod 644
-f steht für file. Es wird also mit find ab /home/www/ nach allen normalen Dateien (keine Verzeichnisse) gesucht und anschließend als Argument das Recht jeder gefundenen Datei auf 644 geändert.
Das Recht eines Verzeichnis muss immer auf ausführen gesetz werden, weil man sonst nicht in das Verzeichnis wechseln kann.
find /home/www/ -type d | xargs chmod 755
Würde die Rechte aller Dateien vom Typ d (Directory, also Verezeichnis) auf 755 ändern.
Hoffe ich konnte etwas weiter helfen.
Viele Grüße,
Danielvor 2 years veröffentlicht # -
danke erst einmal für die ausführliche antwort.
das mit den rechten kenne ich auch so. ohne die rechte auf 777 zu setzen war es leider nicht möglich wb z7u installieren. nach der installation habe ich die rechte wieder auf 755 gesetzt. jetzt habe ich wiederum das problem, daß ich nichts neu erstellen kann. z.b. einen unterordner /bilder im /media ordner. dabei passiert gar nichts. dann wollte ich eine neue seite anlegen. da gibts nur die fehlermeldung:"Beim Anlegen der Zugangsdatei im Verzeichnis /pages ist ein Fehler aufgetreten (Ungenügende Zugangsrechte)" ich habe keinen proxy und der seitencache meines browsers soll eigentlich immer automatisch gelöscht werden.
leider bin ich noch recht neu in der materie und konnte deinen ausführungen nur zum teil folgen. ich schreibe jetzt mal das, was ich bis jetzt dachte, wie es ist (wahrscheinlich alles falsch ;)):
wenn ich mich in wb als admin anmelde, habe ich die rechte von Benutzer. demnach müßte ich bei einer rechtevergabe mit 755 alles dürfen. da ich aber nicht alles darf und auch keinen user für eine gruppe angelegt habe, verstehe ich jetzt gar nichts mehr. wer bin ich, wenn ich mich bei wb als admin anmelde?sry, wenn ich da jetzt zu sehr um die ecke denke und die antwort eigentlich in deinem posting steht.
bin übrigens bei hosteurope, falls dir das was hilft.
deine video-tutorials habe ich mir auch gerade angesehen. respekt dafür. toll und verständlich gemacht. ich denke, daß ich damit mit wb keine größeren probleme haben sollte. wenn das blöde thema mit den rechten nicht wäre :(vor 2 years veröffentlicht # -
nun bin ich doch noch im forum von hosteurope fündig geworden (hoffe ich zumindest).
ein user schrieb folgenden beitrag:
"Hallo,
ich habe ein Webpack M 2.0 und dort das CMS Website Baker installiert. Dieses CMS läuft in der Regel sehr gut, ich betreibe es auch bei anderen Hostern ohne Probleme. Hier ist das Problem nun, daß alle Dateien, die über das CMS angelegt werden, den Besitzer und die Gruppe nobody/nobody erhalten, so daß sie anschließend nicht mehr geändert werden können."
antwort eines anderen users:
"Das Problem wird dadurch versursacht, dass PHP bei HE als mod_php eingebettet im Apache-Prozess und damit als der Benutzer, mit dem auch der Apache-Server läuft läuft. Die Files kann anschließend nur noch der Webserver selbst ändern/chmoden. AFAIR wurde vor einiger Zeit eine Funktion im KIS eingeführt, die dafür sorgte, dass alle Dateien in deinem Verzeichnis wieder deinem FTP-Benutzer zugewiesen wurden – evtl. suchst du mal danach.
Andere Hoster setzen zur Vermeidung dieses Problems php-cgi ein. Die Diskussion welche der beiden (eigentlich drei mit php-fcgi) Varianten die beste ist wurde hier schon mehrfach geführt; HE macht es nun mal so, andere Hoster machen es anders, beides hat Vor- und Nachteile."
ich habe mir mal die dateiverwaltung meines webpacks angesehen. als user steht da immer eine siebenstellige zahl und bei gruppe steht ftponly. alternativ kann ich bei beiden nobody auswählen. irgendwie scheint es daran zu liegen, nur leider nützt mir das bei meinen beschränkten kenntnissen nicht weiter :(
kannst du da was mit anfangen?vor 2 years veröffentlicht # -
Hallo HeinMueck,
eigentlich ist das alles gar nicht so schwer.
Wenn Du eine Datei über den Webbrowser erstellst, z.B. im Verzeichnis pages durch Anlegen einer neuen Seite, dann gehört diese Datei dem Benutzer des Apache Webservers. Dieser ist, wie ich Deinem Beitrag entnehme, nobody und er gehärt der Gruppe nobody an.
Dein FTP-Benutzer ist aber ftponly.
Wenn die Rechte einer Datei z.B. auf 644 gesetzt sind und diese Datei dem Benutzer nobody gehört, der in der Gruppe nobody ist, dann kann ein Benutzer ftponly diese Datei nicht ändern/löschen.
Warum, das steht weiter oben in dem anderen Beitrag von mir.
Aber hier noch einmal die genaue Beschreibung dieses Beispieles:
Die Rechte 644 in diesem Beispiel bedeuten, folgendes:
Die erste Zahl (hier 6) beschreibt die Rechte des Besitzers der Datei (hier nobody).
Die zweite Zahl (hier 4) beschreibt die Rechte der Gruppe (hier nobody).
Die letzte Zahl (hier 4) beschreibt die Rechte aller anderen die weder Besitzer noch Gruppe der Datei sind.
Die 6 steht für Lesen und Schreiben (siehe oben) und die 4 jeweils für nur Lesen.
Zusammenfassend bedeutet die, dass nobody diese Datei ändern (also auch löschen) darf. Die Gruppe (hier auch nobody) darf die Datei nur lesen und alle anderen dürfen die Datei ebenfalls nur lesen.
Dein Problem ist ja jetzt die Rechte dieser Datei zu ändern, damit Dein FTP-Benutzer diese Datei auch ändern oder löschen darf.
Weil die Gruppe in diesem Beispiel nur lesen darf und alle anderen ebenfalls nur lesen dürfen, bleibt als einzige Möglichkeit der Besitzer der Gruppe übig. Der Besitzer ist der einzige, der die Datei und somit auch die Dateirechte ändern darf.
Deinem Beitrag entnehme ich, dass Du evtl. die Möglichkeit hast die Gruppe der Datei über das Verwaltungsprogramm Deines Providers zu ändern. Das würde für Dateien mit den Rechten 644 aber noch nicht wirklich viel bringen, denn die Gruppe würde immer noch nur lesen dürfen.
Eine etwas umständliche Möglichkeit um die Rechte zu ändern wäre z.B. ein wenig PHP-Code in einer Seite vom Typ Code in Deinem Website Baker.
Warum, ganz einfach, die Datei ist über den Browser mit dem Apache-Benutzer erstellt worden und dieser darf somit auch die Rechte ändern.
Ich gehe hier Jetzt von folgendem Beispiel aus:
1.Dein Seitenverzeichnis ist pages
2.Die Datei, die Du mit dem FTP-Benutzer nicht ändern/löschen kannst ist test.php (also eine Seite Test, die über WB erstellt worden ist)
3.Die Datei gehört dem Benutzer nobody und der Gruppe nobody.
4.Dein FTP-Benutzer ist ftponly
5.Die Rechte der Datei sind 644
Dann könntest Du den Besitzer der Gruppe von nobody nach ftponly ändern. Danach würde die Datei dem Benutzer ftponly gehören.
Dann wäre der UNIX/Linux-Befehl dafür z.B. folgender:
chown ftponly /kompletter-pfad-zu-deiner-wb-installation/pages/test.php
chown ist der Befehl um den Besitzer einer Datei zu ändern (Change Owner).
ftponly ist der neue Besitzer der Datei und danach folgt die Datei deren Besitzer geändert werden soll (hier mit absolutem Pfad).
Dieser Befehl muss jetzt auf einer Code-Seite per PHP ausgeführt werden und das könnte dann etwa so aussenen:
$command = "chown ftponly ".WB_PATH."/pages/test.php"; echo "Folgender Befehl ist ausgeführt worden: "; echo $command.""; echo "Das ist die Rückabe des Befehls: "; system($command);
Und das passiert dabei genau:
Der Variable $command wird der komplette Befehl übergeben. Weil evtl. unbekannt ist wie der komplette Pfad zu der Website Baker Installation ist, wird die Konstante WB_PATH verwendet. Hier ist der komplette Pfad hinterlegt. Der Text muss in Anführungszeichen stehen, Variablen und Konstanten dürfen dies nicht, sonst würde nur der Name ( hier WB_PATH ) übergeben werden. Um die einzelnen Teile zu verknüpfen, wird der Verznüpfungsoperator . (Punkt) verwendet.
echo gibt einfach nur etwas aus, dass man dann auf der Seite lesen kann und system($command) führt den Befehl aus und gibt das Ergebnis des Befehls zurück.
Weil der Rückgabewert von chown nicht ist, wäre es zusätzlich noch gut die Datei und alle ihre rechte auszugeben.
Das angepasste mini-Script würde dann z.B. so aussehen:
$datei = WB_PATH."/pages/code.php"; $befehl1 = "chown ftponly ".$datei; $befehl2 = "ls -al ".$datei; echo "Die Rechte der zu ändernden Datei vor der Änderung:"; echo ""; echo "<pre>"; system($befehl2); echo "</pre>"; system($befehl1); echo "Die Rechte der zu geänderten Datei nach der Änderung "; echo "durch den Befehl".$command1.":"; echo "<pre>"; system($befehl2); echo "</pre>";
Sollte es (z.B. aus Sicherheitsgründen wie es auch sinnvoll wäre) nicht möglich sein chmod über PHP auszuführen, kannst du natürlich auch die Rechte der Datei ändern. Z.B. auf chmod 666.
Das letzte PHP-Script würde dann so aussehen (nur die zweite Zeile müsste geändert werden):
$datei = WB_PATH."/pages/code.php"; $befehl1 = "chmod 666 ".$datei; $befehl2 = "ls -al ".$datei; echo "Die Rechte der zu ändernden Datei vor der Änderung:"; echo ""; echo "<pre>"; system($befehl2); echo "</pre>"; system($befehl1); echo "Die Rechte der zu geänderten Datei nach der Änderung "; echo "durch den Befehl".$command1.":"; echo "<pre>"; system($befehl2); echo "</pre>";
Um den jeweiligen Befehl ausführen zu können, musst Du nur die Seite vom Typ Code einmal laden (im Frontend Deines Website Baker, also einfach nur anklicken wie eine normale Seite).
Weil das alles recht umständlich ist, könntest du auch einen webbasierten Dateimanager verwenden. Ein sehr umfangreicher ist eXtplorer http://extplorer.sourceforge.net/
Diesen installierst du in ein Unterverzeichnis Deiner Website Baker Installation. Also auf der gleichen Ebene wie Dein pages Verzeichnis. Damit sollte es ein Leichtes sein die Dateirechte anzupassen. Aus Sicherheitsgründen ist es sehr empfehlenswert den Zugriff auf den Dateimanager stark einzuschränken, beispielsweise per Login über .htaccess.
So, ich hoffe ich habe Dich jetzt nicht völlig verwirrt.
Viel Erfolg,
Danielvor 2 years veröffentlicht #
Antwort
Du musst angemeldet sein, um einen Beitrag zu schreiben.
