If your distribution does not come with ProFTPD, you can either compile and install it from the source tarball or use a package appropriate for your distribution. RPM-based distributions can install the RPM from http://proftpd.org. Debian users can enter apt-get install proftpd.
Unless there is a specific binary RPM for your distribution, download the source RPM and build it: rpmbuild --rebuild proftpd-1.2.10-1.src.rpm. This will produce two installable RPMs: proftpd-1.2.10-1.i586.rpm, which contains the actual software, and proftpd-inetd-1.2.10-1.i586.rpm, which contains the support files for running ProFTPD from xinetd. The proftpd-inetd RPM is optional, and we will not cover it in this book. Install the main RPM after the build completes:
# rpm -ivh /usr/src/packages/RPMS/i586/proftpd-1.2.10-1.i586.rpm
The RPMs seem to be tailored for Red Hat, so if you use SUSE, you need to do a few adjustments. The rc script installs to /etc/rc.d/init.d/proftpd, which isn’t the right location on SUSE; also, the script itself will not work. Instead, use the following replacement script and copy it to /etc/rc.d/proftpd:
#!/bin/sh
#
# Startup script for ProFTPD
#
# chkconfig: 345 85 15
# description: ProFTPD is an enhanced FTP server with \
# a focus toward simplicity, security, and ease of configuration. \
# It features a very Apache-like configuration syntax, \
# and a highly customizable server infrastructure, \
# including support for multiple 'virtual' FTP servers, \
# anonymous FTP, and permission-based directory visibility.
# processname: proftpd
# config: /etc/proftpd.conf
PROFTPD=/usr/sbin/proftpd
PATH="$PATH:/usr/sbin"
if [ -f /etc/sysconfig/proftpd ]; then
. /etc/sysconfig/proftpd
fi
. /etc/rc.status
rc_reset
# See how we were called.
case "$1" in
start)
echo -n "Starting proftpd: "
startproc $PROFTPD $OPTIONS
rc_status -v
;;
stop)
echo -n "Shutting down proftpd: "
killproc -TERM $PROFTPD
rc_status -v
;;
try-restart)
$0 status
if test $? = 0; then
$0 restart
else
rc_reset # Not running is not a failure.
fi
# Remember status and be quiet
rc_status
;;
status)
checkproc $PROFTPD
rc_status -v
;;
restart)
$0 stop
$0 start
rc_status
;;
reload)
echo -n "Re-reading proftpd config: "
killproc -HUP $PROFTPD
rc_status -v
;;
suspend)
hash ftpshut>/dev/null 2>&1
if [ $? = 0 ]; then
if [ $# -gt 1 ]; then
shift
echo -n "Suspending with '$*' "
ftpshut $*
else
echo -n "Suspending NOW "
ftpshut now "Maintanance in progress"
fi
else
echo -n "No way to suspend "
fi
echo
;;
resume)
if [ -f /etc/shutmsg ]; then
echo -n "Allowing sessions again "
rm -f /etc/shutmsg
else
echo -n "Was not suspended "
fi
echo
;;
*)
echo -n "Usage: $0 {start|stop|restart|try-restart|status|reload|resume"
hash ftpshut
if [ $? = 1 ]; then
echo '}'
else
echo '|suspend}'
echo 'suspend accepts additional arguments which are passed to ftpshut(8)'
fi
exit 1
esac
rc_exitOf course, this could be fixed in a later version.