Lösung:

Wie viele wissen, bin ich Freund von schneller, schlanker, sicherer und stabiler Software. Deshalb nutze ich, um FTP auf meinem vServer zur Verfügung bereitzustellen, vsftpd. Wer seinen proftpd oder anderen FTP-Server aussondern und auch auf vsftpd setzen möchte, dem empfehle ich das Tutorial vom Blog-Kollegen Daniel.

Jetzt zum Problem unter Debian Wheezy. Mit Wheezy wird vsftpd 2.3.5 ausgeliefert, was nur eine kleine Steigerung zur Squeeze (2.3.3) darstellt. Mittlerweile ist die Version 3 raus.

Der Fehler, den ich beim verbinden mit dem FTP-Server bekam lautete:

500 OOPS: vsftpd: refusing to run with writable root inside chroot()
Login failed.

Es gibt nun zwei Möglichkeiten – die Schreibberechtigung im Root-Verzeichnis des Users entfernen, oder eine zusätzliche Option in der /etc/vsftpd.conf zu setzen.

Diese Option lautet:

allow_writeable_chroot=YES

Das Problem: In der Version 2.3.5 von Wheezy gibt es diese Option nicht – setzt man die Option, startet vsftpd nicht mehr und schreibt einen Fehler in die Logs.
Bislang wurde das Paket aus dem Debian Wheezy-Repo nicht angepasst, weshalb man sich nen vsftpd selbst in aktueller Version kompilieren oder ein Fremdpaket verwenden kann.

Ich bevorzuge hier das gepatchte Paket vom Cyconet Blog, welches in wenigen Schritten eingerichtet werden kann.

Zur sources.list muss folgende Zeile hinzugefügt werden:

deb http://ftp.cyconet.org/debian wheezy-updates main non-free contrib

Mittels

apt-get update && apt-get install -t wheezy-updates vsftpd

Werden die Paketlisten und das Paket vsftpd auf die gepatchte Version aktualisiert.

Während dem Paketlistenupdate könnte es zu einer kleinen Fehlermeldung kommen, die mit dem Schlüssel des Cyconet-Repos zusammenhängt. Sollte in Zukunft geplant sein, weitere Pakete von dort zu verwenden, empfiehlt es sich noch das Paket “debian-cyconet-archive-keyring” via

apt-get install -t wheezy-updates debian-cyconet-archive-keyring

zu installieren.

Wenn die Prozesse abgeschlossen sind, einfach die oben genannte Option zur Config hinzufügen, vsftpd neustarten und FTP ist wieder nutzbar.
Ich bin nicht ganz sicher, ob die Debian-Leute diese Funktion noch nachträglich in die Pakete einbauen werden, scheinbar bin ich ja nicht der einzige mit diesem Problem. Ich erwarte in Zukunft viele Admins, die von Squeeze auf Wheezy wechseln und das hier vielleicht hilfreich finden oder das Problem bis dahin gelöst wurde.

Alternativlösung:

Wie schon erwähnt handelt es sich hierbei um ein Sicherheitsfeature, das sicherstellen soll, dass der User, welcher FTP verwendet, nicht in sein eigenes Root-Verzeichnis schreiben kann. Wer mit dieser Einschränkung leben kann, sollte einfach die Berechtigung des Rootverzeichnis des User bearbeiten. Ist also /home/maltris das Verzeichnis des User maltris, so muss ihm mittels

chmod a-w /home/maltris

die Schreibberechtigung in diesem Verzeichnis entzogen werden. Er kann dann nur noch in Unterverzeichnisse schreiben, nicht aber selbst in /home/maltris Ordner erstellen, löschen oder Dateien verändern.
Die obige Lösung ist also nur zu empfehlen, wenn man eine Richtlinie mit etwas weniger Einschränkungen pflegt.

Quellen und Weiterführendes:

Fixing 500 OOPS: vsftpd: refusing to run with writable root inside chroot ()

8 thoughts on “500 OOPS: Vsftpd: Refusing to Run With Writable Root Inside Chroot () – (Alternativ-)lösung

  1. In Wheezy lautet die Option übrigens chroot_local_user=YES

    Aktiviert und funktioniert einwandfrei, man braucht gar nicht sich ein alternatives Paket aus anderen Reps ziehen.

  2. Ich möchte mich vielen Mals für diese Seite bedanken. Dennoch arbeitet diese Lösung und weitere nicht bei mir. Bei mir scheitert es schon bei apt-get -t wheezy-* mag er (Ubuntu 12.04.03) gar nicht.

    Beste Grüße

  3. @Remy:

    Richtig, da dieses Repo eigentlich nur fuer Debian gedacht ist, nicht jedoch fuer Ubuntu.

    Normalerweise sollte das Problem bei aktuellen Paketen behoben worden sein. Ist das Ubuntu 12.04.03 denn auf dem aktuellsten Stand?

    Mal die in den Kommentaren gepostete Option “chroot_local_user=YES” ausprobiert?

    Helfe gerne weiter, hoffe auf Antwort!

  4. Der Fehler ist nach wie vor, in Wheezy (7.4), vorhanden und nervig weil vermutlich total unnötig und schnell behoben.
    Ich habe mich damit abgefunden “chroot_local_user=YES” wieder auszukommentieren.

    Vielleicht wird es irgendwann wieder geflickt.

Leave a Reply to cg Cancel reply

Your email address will not be published.