This tutorial is for FreeBSD. If you are looking for setting up Pure-FTPd on Linux, click here.
My client likes to send me a huge data file (More than 10GB after compressed). Since I don’t care about the security during the transfer, I decide to go with the old school technology: FTP.
Basically, I need to set up a FTP server with virtual user. In the other words, the log in used by the FTP server has nothing to do with my system login, and I can easily disable that at any time.
1.) Install Pure-FTPd
sudo pkg_add -r pure-ftpd
2.) Create a user for Pure-FTPd, here I simply call it ftpuser.
sudo adduser ftpuser
3.) Let say, we want to create a user called guest to access the ftp server. guest is a virtual user, and its virtual home is in /home/ftpuser/guest
sudo mkdir /home/ftpuser/guest sudo chown -R ftpuser:ftpuser /home/ftpuser/ sudo chmod a+rw -R /home/ftpuser/
4.) Edit /etc/inetd.conf and add the following:
ftp stream tcp nowait root /usr/local/sbin/pure-ftpd -O stats:/var/log/pureftpd.log pure-ftpd -l puredb:/usr/local/etc/pureftpd.pdb
5.) Restart inetd
ps -ax | grep inetd sudo killall -HUP inetd sudo /usr/sbin/inetd -wW -C 6
6.) Edit /etc/syslog.conf
sudo nano /etc/syslog.conf
7.) Restart syslog
ps -ax | grep syslog killall -HUP syslogd /usr/sbin/syslogd -ss
8.) Create a user and add it into the Pure-FTPd database:
sudo pure-pw useradd guest -u ftpuser -d /home/ftpuser/guest/
You can also set the quota and maximum space:
1000 files, 100MB quota
pure-pw useradd guest -u ftpuser -d /home/ftpuser/guest/ -n 1000 -N 100
9.) Set the password in case you forget the enter the password:
pure-pw passwd guest
10.) Update the database:
11.) If the system could not update the database, try this instead (One command, not two):
sudo pure-pw mkdb /usr/local/etc/pureftpd.pdb -f /usr/local/etc/pureftpd.passwd