vsftpd 2.0.7 für debian etch kompilieren

Heute hatte ich das Problem, daß Filezilla ab Version 3.1 das Nicht-Abschließen von TLS-Verbindungen eines FTP-Servers nicht mehr toleriert. Das betrifft u.a. [vsftpd](http://vsftpd.beasts.org/), der für Debian Etch nur in Version 2.0.6 zur Verfügung steht.

Filezilla hat entsprechende [Probleme](http://forum.filezilla-project.org/viewtopic.php?f=2&t=7465&st=0&sk=t&sd=a):

Antwort: 150 Here comes the directory listing.
Status: Server hat die TLS-Verbindung nicht ordnungsgemäß geschlossen
Fehler: Could not read from transfer socket: ECONNABORTED – Connection aborted

Glücklicherweise besteht vsftpd nur aus einer binary und einer Config-Datei, und letztere hat sich beim minimalen Versionsschritt auch nicht verändert. Man kann also theoretisch einfach die 2.0.6 Binary gegen die 2.0.7 austauschen. Um das zu erreichen, muß die 2.0.7 allerdings auf dem System kompiliert werden, was sich als nicht so einfach herausstellt. Beim gcc in Version 4.1.2 gibt es in etwa diesen Fehler hier:

sysutil.c: In function ‘vsf_sysutil_wait_exited_normally’:
sysutil.c:604: error: assignment of read-only member ‘__in’
sysutil.c: In function ‘vsf_sysutil_wait_get_exitcode’:
sysutil.c:614: error: assignment of read-only member ‘__in’

Der wurde zwar [in Version 2.0.6 von vsftpd behoben](https://svn.openwrt.org/openwrt/packages/net/vsftpd/patches/005-exit_status_const.patch), hat aber seinen Weg offensichtlich nicht in den 2.0.7 Zweig gefunden. Den fehlenden Patch habe ich natürlich dem Entwickler gemeldet, so daß vsftpd ab 2.0.8 auch wieder unter Etch kompilieren sollte. Nach dem Anwenden des Patches auf das 2.0.7 Paket lässt sich dieser dann auch kompilieren. Dafür benötigt man übrigens diese Pakete hier:

aptitude install make binutils comerr-dev cpp cpp-4.1 gcc gcc-4.1 libc6-dev libcap-dev libcurl3-openssl-dev libidn11-dev libkadm55 libkrb5-dev libmudflap0 libmudflap0-dev libpam0g-dev libssl-dev libssp0 linux-kernel-headers pkg-config zlib1g-dev

Die entstehende Binary vsftpd kann einfach über die bestehende drüberkopiert werden:

# make
[…]
# killall vsftpd
# cp vsftpd /usr/sbin/vsftpd
# vsftpd -v
vsftpd: version 2.0.7

Nach einem Neustart klappt es dann auch mit [Filezilla](http://filezilla-project.org/) und [vsftpd](http://vsftpd.beasts.org/).

Ein Kommentar

  1. Tipp: wenn SSL benötigt wird – was ja in den meisten Fällen der Fall ist, wenn auf diese Version aktualisiert werden muss – dann

    define VSF_BUILD_SSL in builddefs.h aktivieren.

Schreibe einen Kommentar

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