Ein kleiner [[ftp|FTP]] Server für [[linux|Linux]]. =====Installation===== sudo apt install vsftpd Hauptkonfiguration unter /etc/vsftpd.conf local_enable=YES # Nutze lokale User write_enable=YES # Globales Schreiben erlauben, granularere Rechte via file system chroot_local_user=YES # Benutzer auf Homeverzeichnis beschränken local_umask=022 # uploaded files readable via http =====Benutzer===== ====Whitelist==== Um nur bestimmten Benutzern den Login via FTP zu erlauben, müssen folgende Optionen gesetzt werden: userlist_deny=NO userlist_enable=YES userlist_file=/etc/vsftpd.user_list vsftpd.user_list dient nur dazu, die Liste der lokalen User einzuschränken, zusätzliche Benutzer kann man damit nicht generieren. ====Blacklist==== Um bestimmten Benutzern den Login via FTP zu verbieten, müssen folgende Optionen gesetzt werden (In diesem Fall wird den restlichen Benutzern der Login gewährt): userlist_deny=YES userlist_enable=YES userlist_file=/etc/vsftpd.user_list Die Nutzer werden in beiden Fällen folgendermaßen in die Datei /etc/vsftpd.user_list eingetragen: nutzer1 nutzer2 nutzer3 ====No Shell Access==== Möchte man nicht, dass die Benutzer auch via SSH auf den Rechner zugreifen können, so muss die Shell des Benutzers in der /etc/passwd auf /bin/false gesetzt werden. Zum Beispiel: user:x:1000:1000::/home/user:/bin/false Wenn es danach Probleme beim FTP-Login geben sollte (530 Login incorrect), liegt das daran, dass /bin/false nicht als Shell im System hinterlegt ist. Dann muss die Shell noch in die Datei /etc/shells eingetragen werden. =====Zertifikat===== sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.key -out /etc/ssl/private/vsftpd.pem =====Logs===== sudo tail -f /var/log/vsftpd.log =====User homepage===== [[Apache]] und mod_userdir installieren. Geht auch mit [[Nginx]]. apt install apache2 a2enmod userdir local_umask=022 # uploaded files readable via http =====Beispiel===== C:\Users\manuel>ftp 192.168.0.2 Verbindung mit 192.168.0.2 wurde hergestellt. 220 (vsFTPd 3.0.3) 200 Always in UTF8 mode. Benutzer (192.168.0.2:(none)): manuel 331 Please specify the password. Kennwort: ********** 230 Login successful. ftp> ftp> ftp> ftp> put Ubuntu.tar ftp> put test.mp4 ftp> ftp> ftp> ftp> dir 200 PORT command successful. Consider using PASV. 150 Here comes the directory listing. -rw------- 1 1000 1000 1426810880 Dec 14 18:29 Ubuntu.tar -rw------- 1 1000 1000 137062857 Dec 14 18:29 test.mp4 226 Directory send OK. FTP: 140 Bytes empfangen in 0.01Sekunden 28.00KB/s ftp> ftp> ftp> del Ubuntu.tar ftp> ftp> dir 200 PORT command successful. Consider using PASV. 150 Here comes the directory listing. -rw------- 1 1000 1000 137062857 Dec 14 18:33 test.mp4 226 Directory send OK. FTP: 70 Bytes empfangen in 0.00Sekunden 35.00KB/s ftp> ftp> ftp> rename test.mp4 test2.mp4 ftp> ftp> ftp> dir 200 PORT command successful. Consider using PASV. 150 Here comes the directory listing. -rw------- 1 1000 1000 137062857 Dec 14 18:33 test2.mp4 226 Directory send OK. FTP: 70 Bytes empfangen in 0.00Sekunden 35.00KB/s ftp> ftp> ftp> close 221 Goodbye. ftp> ftp> ftp> quit =====Links===== * [[https://wiki.ubuntuusers.de/vsftpd/|Ubuntu Users]] * [[https://www.ionos.at/digitalguide/server/konfiguration/ubuntu-ftp-server-installation-und-konfiguration/|Ubuntu-FTP-Server: So funktioniert die Einrichtung]] * [[https://www.danzei.de/ftp-user-mit-chroot/|FTP User mit Chroot]]