Zugriffrechte(lighttpd) -- Komplikationen -- Was tun?

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo Leute,
    habe soeben lighttpd mit php5 installiert. Klappt soweit auch.Allerdings kommt es zu folgenden Komplikatioen und Irritierungen

    1.>Obwohl ich in der /etc/lighttpd/lighttpd.conf den Parameter unter server.document-root auf /home/pi geändert hatte, muss ich die zu hostende Webseiten nach wie vor in das Verzeichnis /var/www/html legen, damit sie angezeigt werden ! Hatte den Server neu gestartet!Warum ist das so ?

    2.> Folgende Fehlermeldungen betreffen folgende php-Skripte die
    2.1> unter XAMPP/localhost tadellos funktionieren; folglich liegt kein Programmierfehler vor
    2.2> die Textdateien aufrufen müssen, damit sie richtig funktionieren:

    2017-01-05 21:25:21: (mod_fastcgi.c.2702) FastCGI-stderr: PHP Warning: fopen(./count.txt): failed to open stream: Permission denied in /var/www/html/counter.php on line 7

    Kann mit FileZilla problemlos Dateien in das Verzeichnis hochladen, runterladen und auch löschen! Das könnte ich wohl kaum, wenn ich die Berechtigungen nicht gesetzt hätte,oder?
    Allerdings scheinen sie noch nicht vollständig korrekt vergeben zu sein, sonst hätte ich obige Fehlermeldung(Zugriff verweigert) erst gar nicht erhalten.....

    ein ls -la im entsprechenden Verzeichnis ergibt für die betroffenen Dateien folgendes:

    Bin über jede Hilfe, die es mir gestattet, alle und nicht nur manche php-Skripte korrekt auszuführen, mehr als dankbar.....

    Einmal editiert, zuletzt von tklustig (5. Januar 2017 um 22:47)

  • Zugriffrechte(lighttpd) -- Komplikationen -- Was tun?? Schau mal ob du hier fündig wirst!

  • Hallo tklustig,

    Problem #1: Ich setze lighttpd nicht ein, aber ich könnte mir vorstellen dass lighttpd wegen fehlenden Zugriffsrechten den Standardwert "/var/www/html" verwendet.

    Problem #2: Aufgrund der Fehlermeldung will "counter.php" die Datei "count.txt" vermutlich zum Schreiben öffnen. Die Datei gehört aber dem Benutzer pi und nur dieser darf die Datei modifizieren. Daher kann das PHP-Skript die Datei nicht öffnen. Versuchsweise kannst du mal allen Benutzern die Schreibrechte auf die "count.txt" geben. Auf Dauer solltest du aber alle Dateien die zur Webseite gehören dem korrekten Benutzer - mit welchem lighttpd ausgeführt wird - zuweisen.

    Gruß Georg

  • Der erste Teil hat sich erledigt!
    Aber der Zugriff wird immer noch verweigert.....

    Bevor ich chmod a+rwx einsetze zum Verständnis:

    Da ein dem Webserver unbekannter Benutzer, nämlich ein beliebiger Client von außen über das http-Protokoll versucht, auf die Textdatei schreibend zuzugreifen, wird abgeblockt, da Zugriffsrechte nur für den pi und www-data bestehen. RICHTIG?

    Wen dem aber so sein sollte, warum besteht diese Restriktion nur für die Texdateien, und nicht für alle anderen Dateien auch?Hier nochmals ls -al

  • Hallo tklustig,

    Zitat

    Da ein dem Webserver unbekannter Benutzer, nämlich ein beliebiger Client von außen über das http-Protokoll versucht, auf die Textdatei schreibend zuzugreifen, wird abgeblockt, da Zugriffsrechte nur für den pi und www-data bestehen. RICHTIG?

    Nein, alle Zugriffe auf die Webseite werden auf dem Raspberry Pi im Benutzerkontext www-data:www-data bearbeitet. Wenn du dir die Zugriffsrechte in deinem ersten Post ansiehst, dann gehört die Datei count.txt dem Benutzer pi:pi und nur dieser hat das Schreibrecht auf diese Datei. Somit kann www-data nicht schreibend auf die count.txt zugreifen.

    Zitat

    Wen dem aber so sein sollte, warum besteht diese Restriktion nur für die Texdateien, und nicht für alle anderen Dateien auch?Hier nochmals ls -al

    Du solltest dir mal deine Zugriffsrechte nochmal durch den Kopf gehen lassen. Alle Dateien und Verzeichnisse im Homedirectory von pi gehören der Gruppe www-data an. Somit kann zum Beispiel www-data auch deine eigenen Dateien lesen. Das ist sicherlich nicht so gewollt.

    Vielleicht wäre es für dich einfacher und auch sicherer wenn du alles in /var/www/html ablegst was zur Webseite gehört und die Dateien dann auch dem Benutzer www-data:www-data zuweist.

    Gruß Georg

  • Blicke jetzt überhaupt nicht mehr durch. Ob ich die Dateien in var/www/html oder in pi/home habe, spielt keine Rolle.
    Könntest du mir bitte genauer erläutern, wem ich welche Rechte geben muss, damit das Ganze funktioniert?
    Am Besten mitt einem Befehl ,also chmod<benutzer><gruppe><parameter>

    Einmal editiert, zuletzt von tklustig (6. Januar 2017 um 00:51)

  • Hallo tklustig,

    Zitat

    Blicke jetzt überhaupt nicht mehr durch. Ob ich die Dateien in var/www/html oder in pi/home habe, spielt keine Rolle.

    Jeder hat da sein eigene Ordnung. Ich persönlich lege etwas mehr Wert auf eine ordentliche Struktur. In deinem Fall liegt alles unter /home/pi das macht es meiner Meinung nach nicht gerarde einfach den Überblick zu behalten welche Dateien zur Webseite gehören und welche nicht. Aber das muss jeder für sich entscheiden.

    Zitat

    Könntest du mir bitte genauer erläutern, wem ich welche Rechte geben muss, damit das Ganze funktioniert?

    Alle Dateien die zur Webseite gehören, sollten www-data:www-data zugewiesen werden. Wenn es Dateien sind die er modifizieren soll - wie deine count.txt - dann muss www-data:www-data auch auf die Datei schreibend zugreifen dürfen - also mindestens 0644.

    Zitat

    Am Besten mitt einem Befehl ,also chmod<benutzer><gruppe><parameter>

    Wenn deine Rechte noch immer wie im zweiten Post aussehen, sollten die folgenden Befehle helfen.

    Code
    chown www-data:www-data ~/count.txt
    chmod 0644 ~/count.txt

    Anschließend sollten die Rechte wie folgt aussehen.

    Code
    -rw-r--r--  1 www-data   www-data     1 Jan  5 22:27 count.txt

    Gruß Georg

  • Hallo Rasp-Berlin,

    die Zugriffsrechte der Datei werden in folgender Schreibweise angezeigt...

    Code
    -rw-r--r--

    Das erste Zeichen zeigt an ob es sich zum Beispiel um ein Verzeichnis handelt. Die nächsten drei Zeichen geben die Zugriffsrechte des Benutzers (hier pi) an. Die nachfolgenden drei Zeichen der Gruppe (hier www-data) und die letzten drei Zeichen von Others (also allen Benutzern die weder pi sind noch der Gruppe www-data angehören). Folglich kann nur der Benutzer pi in die Datei schreiben weil nur dieser die benötigte Berechtigung "w" besitzt.

    Gruß Georg

  • "Benutzer-Gruppe-All"
    ist die Aufteilung der Zugriffsrechte. Ob es sich um ein Verzeichnis handelt, sieht man am kleinen "d" an der ersten Stelle. "drw-r--r--" würde bedeuten, dass es sich um ein Verzeichnis handelt, in dem nur der Benutzer etwas schreiben kann, ohne die Inode (die Anzahl der belegten Blöcke ändert sich nicht) ändern zu müssen.

    Um in ein Verzeichnis wechseln zu können und auch Datei dort erstellen und löschen zu können, muss der Benutzer, der das machen will, (über seine Benutzer-ID, seine Gruppen-ID oder als 'all') x-rechte (Ausführen/eXecute) für diesen Eintrag haben. Denn um in ein Verzeichnis wechseln zu können, muss man das ausführen dürfen.

    In dem obigen Fall darf eben nur der Benutzer PI die Datei beschreiben, und der Dienst lighttpd läuft als Benutzer www-data.
    Damit kann www-data diese Datei nicht beschreiben.

    "chown" ändern den Benutzer, also bei "-XXX------" die Rechte, die an den drei 'X'en stehen.
    "chgrp" ändern die Gruppe "----XXX---"

    Computer ..... grrrrrr

  • Wollt ihr euch jetzt weiterhin gegenseitig die Rechtedarstellung erklären, obwohl ihr sie kennt?
    In Beitrag #6 unten hat boandlkramer doch gezeigt, wie die Rechte an config.txt geändert werden müssen, damit der lighttp schreibend zugreifen kann.
    Allerdings braucht es dort sudo für's chown/chmod.

    Wenn du nichts zu sagen hast, sag einfach nichts.

  • alternativ würde auch chmod 777 ~/count.-txt zum Ziel führen, oder?
    In Zukunft muss ich darauf achten, dass der Besitzer der Gruppe www-data alternativ:alle Schreibrechte auf die Textdateien hat.
    Und chmod ergibt sich aus der Additition r Leserechte (read), Wert: 4 ;
    w Schreibrechte (write), Wert: 2; x Ausführungsrechte (execution), Wert: 1 bzgl. Besitzer,Gruppe und Andere.
    Habe ich das jetzt richtig begriffen??

  • Hallo tklustig,

    Zitat

    alternativ würde auch chmod 777 ~/count.-txt zum Ziel führen, oder?

    Ja, aber man muss ja nicht mit Kanonen auf Spatzen schießen.

    Zitat

    Und chmod ergibt sich aus der Additition r Leserechte (read), Wert: 4 ;
    w Schreibrechte (write), Wert: 2; x Ausführungsrechte (execution), Wert: 1 bzgl. Besitzer,Gruppe und Andere.
    Habe ich das jetzt richtig begriffen??

    Richtig.

    Gruß Georg

  • Nachdem ich jetzt die Zugriffsrechte verändert hatte, bekam ich zwar nicht mehr die Fehlermeldung "Permission denied".
    Geladen wird das Webcounterbild hingegen dennoch nicht.
    Habe jetzt die Fehlermeldung:

    2017-01-06 18:24:59: (server.c.1558) server stopped by UID = 0 PID = 1
    2017-01-06 18:25:05: (log.c.164) server started
    2017-01-06 18:26:44: (mod_fastcgi.c.2702) FastCGI-stderr: PHP Fatal error: Call to undefined function imagecreatefrompng() in /home/pi/counter.php on line 17

    Anmerkung: Unter XAMPP(localhost) läuft das Skript tadellos! Es handelt sich folglich nicht um einen Programmierfehler!
    Habe auf dem Rasperry lighttpd und php5 installiert.
    Die anderen php-Skripte laufen, das wichtigste,nämlich die counter.php allerdings nicht. Was jetzt noch tun?
    Doch den Apache installieren....?

    Einmal editiert, zuletzt von tklustig (6. Januar 2017 um 19:34)

  • VIELEN, VIELEN, VIELEN DANK für deine rasche und kompetente Hilfe.

    Habe jetzt nicht nur die Nutzungsrechte(chmod) in LINUX bzw. was Benutzer & Gruppen(chown) sind,begriffen, sondern so ganz nebenbei noch meine Webseite hosten können!

    Abschließend verbleibt mir nur noch zu posten, dass die Raspery-Szene ohne dich ein ganzes Stück ärmer wäre!!

    Woher wusstest du denn, dass das Paket php5-gd fehlen könnte. Habe dieses Paket noch in keinem Tutorial vorgestellt bekommen. Ein echtes Manko, wie ich finde.....

    Einen schönen Abend noch, und weiter so!!

    P.S.: Wo kann ich in diesem Forum denn diesen thread als 'erfolgreich gelöst' markieren - finde nirgends einen entsprechenden Button

  • Hallo tklustig,

    Zitat

    Woher wusstest du denn, dass das Paket php5-gd fehlen könnte.

    Ganz einfach. Das sagt im Grunde die folgende Fehlermeldung.

    Code
    Call  to undefined function imagecreatefrompng()

    Dann muss man nur wissen oder googeln in welchem Paket die Funktion imagecreatefrompng() enthalten ist ;)

    Zitat

    P.S.: Wo kann ich in diesem Forum denn diesen thread als 'erfolgreich gelöst' markieren - finde nirgends einen entsprechenden Button

    Früher gab es mal irgendwo im Thread einen entsprechenden Button den nur der Threadersteller und die Moderatoren sehen konnten. Denke das wird noch immer so sein.

    Gruß Georg

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!