webfs unter Debian 11/12
webfs ist ein kleiner, leichtgewichtiger Webserver, der gut geeignet ist, wenn ein schlanker Webserver benötigt wird, z.B. um lediglich Updates zu verteilen. Ist der Server allerdings leicht veraltet (Debian < 13) kommt es zu einem kleinen Problem. Für den Service wird eine PID-Datei als User www-data erzeugt, wenn webfs aus der Debian-Distribution verwendet wird. Es gilt schon unter Debian 11 als Sicherheitsrisiko, wenn die PID-Datei nicht geschützt ist. Die Folge ist, dass der Service nicht mehr wie gewohnt per
sudo systemctl stop webfs
oder
sudo /etc/init.d/webfs stop
angehalten werden kann. Der Prozess kann dann nur noch manuell per kill gestoppt werden. Das kann zunächst leicht übersehen werden, wenn nicht genau auf die Anzeigemeldungen beim Herunterfahren geachtet wird und es ist natürlich auch unschön. Das gleiche gilt auch für Debian 12. Erst mit Debian 13 (Trixie) ist das Problem in der Distribution behoben.
Nehmen wir an, wir arbeiten auf einer Debian-11-Maschine und können vorerst nicht auf Debian 13 aktualisieren. Genau diese Situation habe ich beim Schreiben dieses Artikel mit einer virtuellen Maschine simuliert. Es war zudem die Situation in der ich mich befunden hatte. Unter diesen Umständen können wir relativ leicht ein Backport des Pakets erzeugen:
Zunächst benötigen wir die Quellen, die wir unter https://packages.debian.org/trixie/webfs finden und herunterladen. Wir benötigen die drei Dateien
- webfs_1.21+ds1-16.dsc
- webfs_1.21+ds1.orig.tar.gz
- webfs_1.21+ds1-16.debian.tar.xz
Die Dateien müssen entpackt werden. Dazu benötigen wir die Pakete dpkg-dev und devscripts, die wir per
sudo apt install dpkg-dev devscripts
installieren. Damit können die Sourcen entpackt werden:
dpkg-source -x paketname_version.dsc
Es wird ein Ordner webfs-1.21+ds1 erstellt. Dann benötigen wir noch die build-Abhängigkeiten des webfs-Pakets, die wir uns mit
sudo apt build-dep webfs
holen. Zudem wir das Paket pkgconf benötigt:
sudo apt install pkgconf
Jetzt kann unser Paket gebaut werden indem wir in den Ordner webfs-1.21+ds1 gehen und
dpkg-buildpackage -us -uc -b
ausführen. Das Package wird oberhalb des aktuellen Verzeichnisses als webfs_1.21+ds1-16_amd64.deb erstellt und wir können es jetzt per
sudo dpkg -i ../webfs_1.21+ds1-16_amd64.deb
installieren. Abschließend prüfen wir, ob die Installation erfolgreich war. webfs sollte installiert sein und die Standard-Konfiguration sollte einen http-Server auf Port 8000 eingerichtet haben. Das können wir per ps anhand der Ausgabe verifizieren:
ps -ef | grep webfs
www-data 17971 1 0 10:19 ? 00:00:00 /usr/bin/webfsd -F -r /var/www/html -u www-data -g www-data
devuser 18147 2494 0 10:58 pts/0 00:00:00 grep webfs
Et Voilà, wir haben einen funktionierenden webfs-Server auf Debian 11 laufen, der per
sudo systemctl stop webfs
sudo systemctl start webfs
angehalten und wieder gestartet werden kann, durch einen einfachen Backport des webfs aus Debian 13 erzeugt. Unser Glück war hier allerdings, dass es keine schwierigen Abhängigkeiten gab, die aufgelöst hätten werden müssen. Dieser Backport hat die schöne Eigenschaft, dass er bei einem Systemupdate nicht berücksichtigt werden muss. Er wird einfach mit der richtigen Version aktualisiert, die ja hier schon erstellt worden ist.
Referenzen