Auf meinem Linux vServer (Ubuntu) läuft ein FTP Server (vsFTPd) der dazu gedacht ist, mit Freunden größere Datenmengen simpel untereinander tauschen zu können. Dabei war es mir natürlich wichtig, dass die FTP User nicht beliebig Zugriff im System haben. Für die spezielle Gruppe der FTP User (ohne Login Shell), habe ich also ein gemeinsames Home Directory /home/ftp/ angelegt. Die User Anlage geht wie folgt:
adduser --shell /bin/false --home /home/ftp/ --no-create-home --ingroup ftp mario
Natürlich habe ich vorher eine Gruppe ftp angelegt, um später per Gruppen-Quota den maximal verwendeten Speicherplatz der FTP Nutzer zu begrenzen. Folgender Parameter in /etc/vsftpd.conf veranlasst nun vsftpd, jeden User in dieses Verzeichnis einzuschließen:
chroot_local_user=YES
Sollen ausgewählte FTP User nicht in ihr Home Verzeichnis eingesperrt werden, sind folgende Parameter zu verwenden:
chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list
In der Datei vsftpd.chroot_list werden alle User eingetragen, die von der chroot Regel ausgenommen werden sollen. Sollten die User jedoch keine reinen FTP User sein, sondern auch mit einer Login Shell arbeiten können, ist es nicht sinnvoll, allen Usern dasselbe Home Directory zuzuweisen. In dem Fall bietet sich eine andere Lösung an. vsFTPd kennt hierzu die Möglichkeit, jedem User über eine separate Konfigurationsdatei individuelle Parameter (abweichend von der vsftpd.conf) mitzugeben.
user_config_dir=/etc/vsftpd/
Dieser Parameter teilt nun vsftpd mit, nach der Anmeldung eines Users, die gleichlautende Konfigurationsdatei aus dem Verzeichnis /etc/fsvftpd/ zu öffnen und anzuwenden. In diesem Beispiel also die Datei „mario“, in der dann folgender Parameter enthalten sein könnte:
local_root=/home/ftp/
So behält also User mario sein Home Verzeichnis für sich, kann aber trotzdem per FTP nur im Pfad /home/ftp/ agieren. Der Vorteil ist hierbei, daß jeder FTP User ein anderes chroot Verzeichnis erhalten kann. Sollen alle User das gleiche chroot Verzeichnis erhalten, kann der Parameter auch direkt in /etc/vsftpd.conf anstatt in den User Konfigs gesetzt werden und gilt somit für alle User. Grundsätzlich ist aus Sicherheitsgründen jedoch davon abzuraten, Shell User für FTP Zugriffe zu verwenden. Immerhin geht das Passwort bei der Anmeldung unverschlüsselt durchs Netz. Als Alternative bietet sich SFTP an, wobei hier erst ab OpenSSH 4.9 die Möglichkeit besteht, User zu change rooten.