vsftpd is a GPL licensed FTP server for UNIX systems, including Linux.
This Docker image is configured to allow anonymous uploads only.
A very minimal level of access control is provided by listing allowed emails in /etc/vsftpd.email_passwords
. /var/lib/ftp/incoming
should be mounted as a volume, note permissions are important! xferlogs are sent to stdout.
Passive FTP ports are configured to fit with the default Kubernetes NodePort range since FTP does not support port-forwarding between different ports.
docker run -d --name vsftpd -p 21:21 -p 32022-32041:32022-32041 -v /var/lib/ftp/incoming vsftpd-anonymous-upload
Login as anonymous
, password [email protected]
. You can upload files to incoming but listing is blocked.
$ ftp [email protected]
Connected to 127.0.0.1.
220 Place files in /incoming for upload.
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
229 Entering Extended Passive Mode (|||21015|)
150 Here comes the directory listing.
d-wxrwx--- 2 ftp ftp 4096 Nov 29 17:06 incoming
226 Directory send OK.
ftp> put test.txt
local: test.txt remote: test.txt
229 Entering Extended Passive Mode (|||21052|)
553 Could not create file.
ftp> cd incoming
250 Directory successfully changed.
ftp> ls
229 Entering Extended Passive Mode (|||21018|)
150 Here comes the directory listing.
226 Transfer done (but failed to open directory).
ftp> put test.txt
local: test.txt remote: test.txt
229 Entering Extended Passive Mode (|||21017|)
150 Ok to send data.
100% |***********************************| 6 53.26 KiB/s 00:00 ETA
226 Transfer complete.
6 bytes sent in 00:00 (6.59 KiB/s)
ftp> ls
229 Entering Extended Passive Mode (|||21026|)
150 Here comes the directory listing.
226 Transfer done (but failed to open directory).
ftp> put test.txt
local: test.txt remote: test.txt
229 Entering Extended Passive Mode (|||21007|)
553 Could not create file.
ftp> rm test.txt
550 Permission denied.
An experimental Kubernetes Helm chart is included (note the TODOs regarding configuration).
helm upgrade --install --namespace=vsftpd vsftpd ./helm -f helm-example-config/config.yaml [-f <volume-config>.yaml]
This image is based on https://github.com/vimagick/dockerfiles/tree/361bbf6e46665af72910542afaece71f27e46089/vsftpd