Ich bin beim Schreiben meines Artikels zum Thema Datenschutz und Piwik über Probleme mancher User beim automatischen Update von Piwik gestolpert. Da es auch mir vor einiger Zeit so erging, wollte ich euch meine Erfahrungen und einen Lösungsansatz nicht vorenthalten.
Augenscheinlich haben einige da draußen das Problem, dass dieses Update per PHP ausgeführt wird und somit unter Linux Schreibrechte für den User, unter dem der Webserver betrieben wird, Voraussetzung sind. Oft liest man in solchen Fällen, dass es mit den Berechtigungen 777 läuft. Klar, dann darf eben jeder (das bedeutet die 3. Ziffer) in diesem Verzeichnis alles (7 heißt lesen, schreiben, ausführen)! Hierbei bekomme ich immer ein wenig Bauchschmerzen…
Ich betreibe meinen eigenen virtuellen Server, d.h. ich habe volle root-Rechte auf dieser Debian-Maschine. Die hier beschriebenen Tipps setzen dies zum Teil voraus. In wie weit das mit einem FTP-Zugang bei Webspace-Anbieter XY möglich ist, kann ich nicht sagen. Vielleicht hat ja jemand einen Linktipp für die Kommentare parat.
Vorbereitungen für das automatische Update
Vor dem automatischen Piwik-Update setze ich die Berechtigungen so, dass der Webserver-Benutzer bzw. die Gruppe (www-data auf meinem System) in und unterhalb der DocumentRoot Schreibrechte (4) bekommt. Ebenso werden das komplette Piwik-Verzeichnis (3) und die Datenbank (2) in meinem home-Verzeichnis (1) gesichert.
cd ~ mysqldump -fQ -uroot -p piwik > piwik.sql tar cvfz piwik.tgz /srv/www/httpd/piwik chmod -R 777 /srv/www/httpd/piwik/html
Das ist keine schöne Lösung! Man könnte natürlich besser das u.a. Script set_perms_web.sh entsprechend anpassen und nur die notwendigsten Rechte vergeben. Wie auch immer, der Webserver braucht Schreibrechte in den Verzeichnissen und muss auch die Dateien überschreiben dürfen.
Piwik-Update durchführen
Jetzt wird’s einfach – wenn alles klappt. Als Administrator anmelden und auf die Meldung mit dem Update-Hinweis klicken.
Im folgenden Fenster sollte die Möglichkeit zum automatischen Update von Piwik auswählbar sein. Ist das nicht der Fall und die neue Piwik-Version lässt sich lediglich herunter laden, dann hat der Webserver-Benutzer keine Schreibrechte und ihr solltet diesen Artikel von oben mit lesen beginnen.
Ein Klick auf Automatisches Update durchführen und wenige Augenblicke später die Meldung für ein erfolgreich durchgeführtes Update erhalten.
So einfach kann es sein, muss aber nicht! Auch ich hatte bereits die eine oder andere Schwierigkeit auf meinem Weg durch die Piwik-Versionen und fand oft Hilfe oder Hinweise im Piwik-Forum, das ich immer als erste Anlaufstelle empfehlen kann.
Shell-Script zum Setzen der Berechtigungen
Ich habe ein kleines Shell-Script für Anpassung der Verzeichnis- und Datei-Berechtigungen, was ich einfach als root starte. Wer möchte kann dies gern auf seinem Server verwenden, anpassen, umschreiben oder was auch immer damit tun. Denkt daran die für eure Umgebung notwendigen Anpassungen vorzunehmen; ich übernehme keinerlei Garantie.
#!/bin/sh # Server-Pfad zur Piwik-Installation; hier liegen bei die Verzeichnisse logs, html, tmp usw. path="/srv/www/httpd/piwik" # FTP-Benutzer oder root user="ftp_123" # Gruppe, mit der der Webserver läuft group="www-data" # Überprüfung, ob Pfad vorhanden ist und ändere den Besitzer sowie die Rechte # Wenn der Pfad zu Piwik vorhanden ist und es dort ein Verzeichnis namens /html gibt # dann werden die Anpassungen durchgeführt, sonst wird das Script bis zum else-Zweig nicht ausgeführt # /html ist das root-Verzeichnis, kann auch /httpdocs, /public_html oder wie auch immer auf anderen Systemen heißen if [ -d $path/html ]; then chmod 750 $path/html cd $path/html find -type f -exec chmod 640 {} \; find -type d -exec chmod 750 {} \; chown -R $user:$group $path/html # Schreibberechtigungen in den Temp-Verzeichnissen setzen chmod 777 $path/html/tmp chmod 777 $path/html/tmp/templates_c chmod 777 $path/html/tmp/cache chmod 777 $path/html/tmp/assets chmod 777 $path/html/tmp/sessions # Das Script archive.sh braucht Ausführrechte chown root:$group $path/html/misc/cron/archive.sh chmod 750 $path/html/misc/cron/archive.sh echo "Alle Änderungen in \"$path/html\" sind durchgeführt!" else echo "\"$path/html\" ist nicht vorhanden!" fi # Dieses Script (set_perms_web.sh) muss nur für root ausführbar sein if [ -f $path/set_perms_web.sh ]; then chmod 700 $path/set_perms_web.sh chown root:root $path/set_perms_web.sh echo "Alle Änderungen in \"$path/set_perms_web.sh\" sind durchgeführt!" else echo "\"$path/set_perms_web.sh\" ist nicht vorhanden!" fi
Wer Fragen oder Ergänzungen zum Berchtigungs-Script für Piwik hat, kann dies gern in den Kommentaren posten. Ich nutze dies in einer erweiterten/ abgewandelten Form für alle Webprojekte.
Warum ein Folder html?
In meiner Installation existiert kein Folder „html“, oder meinst Du den root Folder der Installation?
Gruß
Tom
Genau, das root-Verzeichnis. Heißt ja (überall) ein wenig anders – http, httpdocs oder public_html sind mir hierbei schon begegnet.
Vielen Dank für deinen Beitrag. So weit hat alles bestens funktuniert und Piwik läuft immer noch.
Ich habe da sProblem, das All-Inkl.com keine Shell-Scripte in der Cron ausführt und müsste dazu das Shell-Script in eine Php-Datei einbinden und ausführen.
Hast Du da eine Idee und könntest Du diesen Beitrag um diese Lösung ergänzen?
Vielen Dank
Hallöchen,
wie und wo starte ich das Script. Welche Dateiendung muß es haben? Gibt es evtl.eine fertige Datei?
Vielen Dank im vorraus –
Andreas
Das kleine Script zum Setzen der Dateiberechtigungen ist ein Shellscript. Du benötigst hierfür in der Regel einen root-Zugriff auf deinen Server.
Eine Dateiendung ist unter Linux völlig egal, auch keine ist gut! Es muss halt ausführbar sein …
Danke für die schnelle Antwort. Also könnte die Datei -berechtigung.bat- heißen?
Gruß Andreas
Hast Du vielleicht BITTE ein Beispiel für mich?
Gruß Andreas
Also Script läuft ausschließlich unter Linux! Unter Windows gibt es weder solch‘ ein Berechtigungssystem, noch die im Script verwendeten Befehle …