vsFTPd is a versatile piece of software designed for customization and ease of use. It allows for MySQL authentication, local users, limitation of upload/download speeds for users, chrooting users to specific directories, and various other options.
vsFTPd is also a very lightweight FTP daemon. Many users can be supported without any performance issues on a decently sized VPS, for example, AKLWEB HOST’s 30 GB NVMe plan.
This guide explains how to install vsFTPd and configure MySQL for authentication.
Installing the required packages. To begin, we’ll need to install the EPEL (Extra Packages for Enterprise Linux) repository. Run the following commands as the root user.
yum install epel-releaseGreat – now you have the EPEL repository installed.
Now, let’s install vsFTPd.
yum install vsftpd mysql mysql-server httpd php php-mysql php-mcrypt phpmyadmin -yStart the web server.
service httpd startConfiguring the FTP server. Now that you have all of the required packages installed, you can configure the software. If you want to allow local users, open your favorite text editor:
nano /etc/vsftpd/vsftpd.confChange local_enable = no to local_enable = yes.
Since we’re using MySQL to authenticate users, we need to configure MySQL.
mysql_secure_installationFollow all of the steps and make sure you change the MySQL root password.
Then, modify the phpMyAdmin configuration file:
nano /etc/httpd/conf.d/phpMyAdmin.confRemove the line where it specifies the required local, then save and exit.
Restart Apache.
service httpd restartCreate a MySQL database and table to store user data.
mysql -uroot -pthepasswordyousetforthemysqlrootpasswordCREATE DATABASE vsftpd;CREATE TABLE accounts (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,username VARCHAR( 30 ) NOT NULL ,pass VARCHAR( 50 ) NOT NULL ,
UNIQUE (username
)
) ENGINE = MYISAM ;quitConfigure vsFTPd to use the MySQL database.
echo /dev/null > /etc/pam.d/vsftpd
nano /etc/pam.d/vsftpdNow that you have your text editor open, paste the following text into the vsftpd file. Make sure to replace yourmysqlrootpassword with your MySQL root password.
auth required pam_mysql.so user=root passwd=yourmysqlrootpassword host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2
account required pam_mysql.so user=root passwd=yourmysqlrootpassword host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2Restart vsFTPd by running the following command.
service vsftpd restartTo add a user to vsFTPd, follow these steps.
Add a user to your system. useradd bob
Add the user to your MySQL server. mysql -uroot -pyourmysqlrootpassword use vsftpd; INSERT INTO accounts (username, pass) VALUES('bob', PASSWORD('yourpasswordforbob')); quit;
That user will now be able to log in with FTP and access their home directory.