Das Problem: Die beiden bekannten FTP-Server vsftpd und proftpd folgen keinen Symlinks in der chroot-Umgebung.
Beide FTP-Server sind sehr populär und kommen in fast allen Linux-Distributionen zum Einsatz. Paralles Plesk zum Beispiel verwendet proftpd für das Bereitstellen der FTP-Dienste. Für manuelle Setups bevorzugen ich vsftpd, den vermutlich sichersten FTP-Server, so sagt man.
chroot und Symlinks bei vsftpd und proftpd
Innerhalb einer chroot-Umgebung kann man ohne Weiteres mit symbolischen Links arbeiten. Will man aber mit Hilfe eines solchen Symlinks die chroot-Umgebung verlassen funktioniert dies nicht.
Status: Retrieving directory listing... Command: CWD /pfad/zum/symlink Response: 550 Failed to change directory. Error: Failed to retrieve directory listing
Das Sicherheitskonzept der FTP-Server erlaubt es nicht die chroot-Umgebung zu verlassen.
Um trotzdem ein Verzeichnis in unser chroot zu linken müssen wir uns mit Mounts behelfen. Dazu erstellen wir uns zuerst ein Verzeichnis in das wir dann die Daten per mount verfügbar machen.
mkdir /pfad/zum/chroot/mount
Anschliessend können wir das Verzeichnis welche wir ursprünglich als Symlink bereitstellen wollten per mount einbinden.
mount --bind /pfad/zum/verzeichnis /pfad/zum/chroot/mount
Mit diesem Trick haben wir nun auch Zugriff auf Verzeichnisse ausserhalb unserer chroot-Umgebung.
Damit uns diese Einstellungen auch nach einem Reboot erhalten bleiben müssen diese noch in der fstab eingetragen werden.
Wie immer sollte man sich die Webseiten der beiden FTP-Server vsftpd und proftpd mal anschauen und ein Blick auf die Dokumentation werfen.