How to setup an anonymous FTP download server on Fedora Linux

Curt Warfield
2 min readMar 9, 2021

Sometimes you may not need to set up a full FTP server with authenticated users with upload and download privileges. If you are simply looking for a quick way to allow users to grab a few files, an anonymous FTP server can fit the bill. This article shows you show to set it up.

This example uses the vsftp package for the FTP server and assumes you have a Fedora Linux server.

Installing and configuring the anonymous FTP server

Install the vsftp package using sudo:

$ sudo dnf install vsftpd

Enable the vsftp service:

$ sudo systemctl enable vsftpd

Next, edit your /etc/vsftpd/vsftpd.conf file to allow anonymous downloads. Make sure you have the following entries.

anonymous_enable=YES

This option controls whether anonymous logins are permitted or not. If enabled, both the usernames ftp and anonymous are recognized as anonymous logins.

local_enable=NO

This option controls whether local logins are permitted.

write_enable=NO

This option controls whether any FTP commands which change the filesystem are allowed.

no_anon_password=YES

When enabled, this option prevents vsftpd from asking for an anonymous password. With this setting, the anonymous user will log straight in without one.

hide_ids=YES

Enable this option to display all user and group information in directory listings as ftp.

pasv_min_port=40000
pasv_max_port=40001

Finally, these options set the minimum and maximum port to allocate for PASV style data connections. Use them to specify a narrow port range to assist firewalling. You should choose a range for ports that aren’t currently in use. This example uses port 40000–40001 to limit the port range to 1.

Final steps

Now that you’ve set the options, add the appropriate firewall rules to allow vsftp connections along with the passive port range you specified.

$ firewall-cmd --add-service=ftp --perm
$ firewall-cmd --add-port=40000-40001/tcp --perm
$ firewall-cmd --reload

Next, configure SELinux to allow passive FTP:

$ setsebool -P ftpd_use_passive_mode on

And finally, start the vsftp service:

$ systemctl start vsftpd

At this point you have a working FTP server.

Place the content you want to offer in the anonymous download directory.

This directory is set to /var/ftp/pub by default, but you can change it by specifying the anon_root option in the vsftpd.conf file.

See the vsftpd man page for more detail:

$ man vsftpd.conf

Now you can connect to your server using an FTP client on another system and have access to download files anonymously.

--

--