如何在CentOS 7上编译PureFTPd

如何在CentOS 7上编译PureFTPd

在本教程中,我将介绍在CentOS 7上从源编译PureFTPd的步骤。Pure-ftpd是一个轻量级和稳定的FTP守护程序,支持各种身份验证后端,如Linux系统用户,puredb,MySQL和PostgeSQL。 稍后我将使用纯ftpd进行ISPConfig 3,因此我将使用MySQL / Mariadb来进行编译。

我最初为ISPConfig 3完美的服务器教程写了本指南,因为目前还不清楚EPEL是否会为CentOS 7发布纯ftpd软件包,而且我需要这个软件包来严重地为ISPConfig添加CentOS 7支持。 几天前,EPEL发布了一个现成的纯ftpd .rpm,我将使用它完美的服务器教程,对于大多数用户来说,使用EPEL rpm会更方便,建议使用。 然而,我将在这里记录构建您自己的纯ftpd软件包的步骤,因为这对于定制的构建可能仍然有用。

准备建筑环境

安装CentOS开发工具链。

yum -y groupinstall 'Development Tools'

安装MariaDB开发文件。

yum -y install mariadb-devel

下载纯ftpd源文件并解压缩存档。

cd /usr/local/src
wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.36.tar.bz2
tar xvjpf pure-ftpd-1*.tar.bz2
cd pure-ftpd-1*

运行configure命令来准备构建。 要获取所有编译区域的概述,请运行./configure --help。

./configure --prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --libexecdir=/usr/libexec --datadir=/usr/share --sysconfdir=/etc --sharedstatedir=/usr/com --localstatedir=/var --libdir=/usr/lib64 --includedir=/usr/include --infodir=/usr/share/info --mandir=/usr/share/man --with-mysql --with-virtualchroot --with-everything

并编译pure-ftpd二进制文件:

make
make install

创建配置文件和启动脚本

首先我们创建起始脚本。 对于这个构建,我将使用CentOS 6.5中的起始脚本,它仍然适用于CentOS 7。

nano /etc/init.d/pure-ftpd
#!/bin/bash
#
# Startup script for the pure-ftpd FTP Server  $Revision: 1.1 $
#
# chkconfig: - 85 15
# description: Pure-FTPd is an FTP server daemon based upon Troll-FTPd
# processname: pure-ftpd
# pidfile: /var/run/pure-ftpd.pid
# config: /etc/pure-ftpd/pure-ftpd.conf

# Source function library.
. /etc/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is configured.
# [ ${NETWORKING} = "no" ] && exit 0

RETVAL=0

prog="pure-ftpd"

# Path to the pure-ftp binaries.
fullpath=/usr/sbin/pure-ftpd
pureftpwho=/usr/sbin/pure-ftpwho
pure_config=/etc/pure-ftpd/pure-ftpd.conf
pure_launch_script=/usr/sbin/pure-config.pl


start() {
        echo -n $"Starting $prog: "
        daemon "$pure_launch_script $pure_config --daemonize > /dev/null"
        RETVAL=$?
        [ $RETVAL = 0 ] && touch /var/lock/subsys/pure-ftpd
        echo
}

stop() {
        echo -n $"Stopping $prog: "
        killproc pure-ftpd
        RETVAL=$?
        [ $RETVAL = 0 ] && rm -f /var/lock/subsys/pure-ftpd
        echo
}

# See how we were called.
case "$1" in
        start)
                start
                ;;
        stop)
                stop
                ;;
        restart)
                stop
                start
                ;;
        reload)
        echo -n $"Reloading $prog: "
                killproc pure-ftpd -HUP
                RETVAL=$?
                echo
                ;;
        condrestart)
                if [ -f /var/lock/subsys/pure-ftpd ] ; then
                        stop
                        # avoid race
                        sleep 3
                        start
                fi
                ;;
        status)
                status pure-ftpd
                RETVAL=$?
                if [ -f $pureftpwho ] && [ $RETVAL -eq 0 ] ; then
                        $pureftpwho
                fi
                ;;
        *)
                echo $"Usage: pure-ftpd {start|stop|restart|reload|condrestart|status}"
                RETVAL=1
esac
exit $RETVAL
chmod +x /etc/init.d/pure-ftpd
mkdir /etc/pure-ftpd/
cp configuration-file/pure-ftpd.conf /etc/pure-ftpd/pure-ftpd.conf 
cp configuration-file/pure-config.pl /usr/sbin/pure-config.pl
chmod 744 /etc/pure-ftpd/pure-ftpd.conf
chmod 755 /usr/sbin/pure-config.pl

然后创建系统启动链接并启动PureFTPd:

chkconfig --levels 235 pure-ftpd on
systemctl start pure-ftpd.service

现在我们将PureFTPd配置为允许FTP和TLS会话。 没有TLS的FTP是一个非常不安全的协议,因为所有密码和所有数据都以明文形式传输。 通过使用TLS,可以对整个通信进行加密,从而使FTP更加安全。

TLS需要OpenSSL; 要安装OpenSSL,我们只需运行:

yum -y install openssl

打开/etc/pure-ftpd/pure-ftpd.conf ...

vi /etc/pure-ftpd/pure-ftpd.conf

如果要允许FTP和TLS会话,请将TLS设置为1

[...]
# This option can accept three values :
# 0 : disable SSL/TLS encryption layer (default).
# 1 : accept both traditional and encrypted sessions.
# 2 : refuse connections that don't use SSL/TLS security mechanisms,
#     including anonymous sessions.
# Do _not_ uncomment this blindly. Be sure that :
# 1) Your server has been compiled with SSL/TLS support (--with-tls),
# 2) A valid certificate is in place,
# 3) Only compatible clients will log in.

TLS                      1
[...]

为了使用TLS,我们必须创建SSL证书。 我在/ etc / ssl / private /中创建它,因此我先创建该目录:

mkdir -p /etc/ssl/private/

之后,我们可以生成SSL证书,如下所示:

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

国家名称(2个字母代码)[XX]: < - 输入您的国家名称(例如,“DE”)。
州或省名(全名)[]: < - 输入您的州或省名称。
地点名称(例如,城市)[默认城市]: < - 输入您的城市。
组织名称(如公司)[默认公司有限公司]: < - 输入您的组织名称(例如您公司的名称)。
组织单位名称(如部分)[]: < - 输入您的组织单位名称(例如“IT部门”)。
通用名称(例如,您的姓名或服务器的主机名)[]: < - 输入系统的完全限定域名(例如“server1.example.com”)。
电子邮件地址[]: < - 输入您的电子邮件地址。

更改SSL证书的权限:

chmod 600 /etc/ssl/private/pure-ftpd.pem

最后重新启动PureFTPd:

systemctl stop pure-ftpd.service 
systemctl start pure-ftpd.service

而已。 您现在可以尝试使用FTP客户端连接; 但是,您应该将FTP客户端配置为使用TLS。

链接

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏