An FTP server is something basic when you set up a server. It is necessary because it allows us to transfer files to our server from our computer. As you can see it is very useful but requires a few small steps to achieve it. Therefore, today I will teach you how to configure a FTP server on OpenSUSE 15.1.
Configure a FTP server with vsftpd
vsftpd is a daemon that allows you to install and configure an FTP server. It is quite used for being very flexible in its configuration and secure. For example, it is the default in OpenSUSE and CentOS 7 but can be used in almost any Linux distribution.
Its configuration files are quite easy to understand because they are well documented. So this makes it the main option for our purpose.
So let us start.
Install and configure vsftpd on OpenSUSE 15.1
First, we must install it. The big advantage is that vsftpd is in the OpenSUSE repositories so we can install it using zypper.
:~$ sudo zypper in vsftpd
Now comes the configuration for everything to work properly.
The configuration file is this /etc/vsftpd.conf. If you open it you will see that it is very extensive, but it is because it has many commented lines. It is very well documented.
Before we edit it, let’s create a backup.
:~$ sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
There are several things we need to edit.
:~$ sudo nano /etc/vsftpd.conf
Firstly, we must make the service “listen”. IPV4 and disable IPV6.
listen=YES #listen_ipv6=NO
Then, allow writing.
write_enable=YES
There is a clause that defines port 20 as the default. I have commented on it and used the listen_port clause to define another port. For example, port 21. It can be the one you want.
#connect_from_port_20=YES listen_port=21
It is very likely that if you work with FTP you will need to create users. To do this, it is necessary to cage them before creating them. That is to say, that each user cannot upload or download files from other users and even less from the system. In other words, they are isolated to their folder. To do this, add the following lines.
chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list
Then, create the file specified in chroot_list_file and add our system user there
:~$ sudo nano /etc/vsftpd.chroot_list angelo
The pasv_min_port and pasv_max_port clauses define which ports FTP can use to be in passive mode. You have to work in the Firewall with them.
We can use the grep and cat commands to make the file more readable. With them I will show all the lines except the ones that start with a #.
:~$ sudo cat /etc/vsftpd.conf | grep -v "^#"
At this point, the configuration file would look more or less like this.
Now you have to open the necessary ports for vsftpd to work.
:~$ sudo firewall-cmd --add-port=21/tcp --permanent Success :~$ sudo firewall-cmd --add-port=30000-30100/tcp --permanent Success :~$ sudo firewall-cmd --reload Success
Now let’s create the test user service.
:~$ sudo useradd -d /home/user1 -m -s /bin/bash user1 :~$ sudo passwd
Finally, you start the service and check its status.
:~$ sudo systemctl start vsftpd :~$ sudo systemctl status vsftpd ● vsftpd.service - Vsftpd ftp daemon Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled) Active: active (running) since Wed 2019-06-05 10:44:50 -04; 32min ago Main PID: 2888 (vsftpd) Tasks: 1 (limit: 4915) CGroup: /system.slice/vsftpd.service └─2888 /usr/sbin/vsftpd /etc/vsftpd.conf
The anonymous user is enabled by default. Its folder is /srv/ftp/ you can create alli files for download. You can even access it from your web browser. ftp://your-server/
Now, it’s time to install an FTP client. In this case I will use Filezilla.
Using Filezilla as the FTP client on OpenSUSE
First you have to install it.
:~$ sudo zypper in filezilla
Then you have to create the connection. To do this, go to the File menu and click on the Site Manager option. In the window that appears, configure your connection. I’ve done it this way.
And this is it. Now you can start enjoying the FTP server. Note that I’ve already uploaded a test file.
Enjoy it.