Froxlor PHP FCGID / FPM – Forbidden bei neuen Kunden

Dieses Problem scheint in letzter Zeit viele Nutzer von Froxlor zu beschäftigen, weshalb ich hier einmal genauer auf das Problem eingehen möchte.

Beachtet bitte, dass dieser Beitrag auf Basis von Debian mit Apache angelegt wurde.

Wie kommt das Problem zu Stande?

Froxlor hat in einer der Letzten Versions Updates die Standard Berechtigung von Kunden-Verzeichnissen von

755 drwxr-xr-x

auf

750 drwxr-x—

geändert. Dadurch haben nur noch Besitzer und Gruppen-Mitglieder Zugriff auf das Kunden-Verzeichnis.

Wenn nun ein neuer Kunde angelegt wird, wird dieser in die Datenbank geschrieben. Genau genommen handelt es sich dabei um den FTP User welcher beim Anlegen eines Kunden in Froxlor mit angelegt wird. Dieser erhält zeitgleich auch eine eigene Gruppe. Im Anschluss wird der Webserver User, im normal Fall ist das www-data, dieser Gruppe hinzugefügt.

Dieser User sowie die Gruppe und die Zugehörigkeit von www-data werden jeweils von libnss-bg-mysql aus der Datenbank ausgelesen. Damit bei einem Dateisystem Aufruf nicht jedesmal ein Datenbank Query gefahren werden muss, wird das ganze mittels dem NSCD Dienst gecached.

Wenn nun nach dem Anlegen eines Kunden der Gruppen Cache noch nicht abgelaufen ist, kann der Webserver noch nicht auf das Kunden Verzeichnis Zugreifen, was zu dem Fehler „Forbidden“ führt.

Was kann ich gegen dieses Problem tun?

Es gibt mehrere Möglichkeiten um gegen das Problem etwas zu tun. Das einfachste währe wohl den Gruppen Cache zu deaktivieren. Dazu muss in der /etc/nscd.conf die folgende Zeile angepasst werden:

enable-cache            group           yes

Hier muss einfach das yes auf ein no abgeändert werden und im Anschluss der NSCD neu gestartet werden:

/etc/init.d/nscd restart

Als nächstes könnte man in der selben Konfiguration die TTL des Gruppen Caches verkürzen. Dazu muss der Wert in Sekunden angepasst werden:

positive-time-to-live   group           3600

Je nach System sollte man den Wert von 3600 problemlos auf 600 oder gar weniger reduzieren können.

Zu guter letzt kann man noch den Gruppen Cache vom NSCD invalidieren. Dazu legen wir einfach folgende Datei an:

/var/www/froxlor/scripts/webserver_restart.sh

#!/bin/bash

/usr/sbin/nscd -i group
/etc/init.d/apache2 reload

Und passen dessen Berechtigungen noch an:

chown root:root /var/www/froxlor/scripts/webserver_restart.sh
chmod 700 /var/www/froxlor/scripts/webserver_restart.sh

Jetzt können wir in Froxlor unter Einstellungen ->  Webserver-Einstellungen -> Webserver-Reload-Command einfach folgendes eintragen:

/var/www/froxlor/scripts/webserver_restart.sh

Nach dem Speichern wird nun unser Froxlor bei jedem Webserver Reload den Gruppen Cache invalidieren wodurch wir kein Frobidden mehr erhalten sollten.

 

One thought on “Froxlor PHP FCGID / FPM – Forbidden bei neuen Kunden

  1. Johannes Wilhelm

    Achso!
    Als ich das letzte mal mein Froxlor aktualisiert hatte, hatte ich auch das Problem 😀
    Mir hat es geholfen die Konfigurationen neu zu beschreiben. Gut zu wissen woran es lag 😀

    Reply

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.