サーバー設定 · 2 min read · Nov 27, 2025

CentOS 7でPureFTPdをコンパイルする方法

CentOS 7でPureFTPdをコンパイルする方法

バージョン 1.0
著者: Till Brehm
howtoforgeをTwitterでフォロー

このチュートリアルでは、CentOS 7でPureFTPdをソースからコンパイルする手順を説明します。Pure-ftpdは、Linuxシステムユーザー、puredb、MySQL、PostgeSQLなどのさまざまな認証バックエンドをサポートする軽量で安定したFTPデーモンです。後でISPConfig 3でpure-ftpdを使用するため、MySQL / Mariadbサポートでコンパイルします。

このガイドは、EPELがCentOS 7用のpure-ftpdパッケージをリリースするかどうか不明だったため、ISPConfig 3のパーフェクトサーバーチュートリアルのために最初に書きました。このパッケージが必要だったため、CentOS 7のサポートをISPConfigに追加する必要がありました。数日前、EPELは準備されたpure-ftpd .rpmをリリースし、パーフェクトサーバーチュートリアルでそれを使用します。ほとんどのユーザーにとって、EPEL rpmを使用する方が便利で推奨されます。それでも、カスタマイズされたビルドに役立つ可能性があるため、独自のpure-ftpdパッケージをビルドする手順をここに記録します。

ビルド環境の準備

CentOSの開発ツールチェーンをインストールします。

yum -y groupinstall ‘Development Tools’

MariaDBの開発ファイルをインストールします。

yum -y install mariadb-devel

pure-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に設定します:

[...]
# このオプションは3つの値を受け入れることができます:
# 0 : SSL/TLS暗号化レイヤーを無効にします(デフォルト)。
# 1 : 従来のセッションと暗号化されたセッションの両方を受け入れます。
# 2 : SSL/TLSセキュリティメカニズムを使用しない接続を拒否します。
#     匿名セッションを含む。
# この設定を盲目的にコメント解除しないでください。次のことを確認してください:
# 1) サーバーがSSL/TLSサポートでコンパイルされていること(--with-tls)、
# 2) 有効な証明書が配置されていること、
# 3) 互換性のあるクライアントのみがログインすること。

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」)。
州または省名(フルネーム) []: <– 州または省名を入力します。
所在地名(例:市) [Default City]: <– 市名を入力します。
組織名(例:会社) [Default Company Ltd]: <– 組織名を入力します(例:会社名)。
組織単位名(例:部門) []: <– 組織単位名を入力します(例:「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を使用するように構成する必要があります。

リンク

  • pure-ftpd
Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。