Pure-FTPd

提供: ArchWiki
移動先: 案内検索

Pure-FTPd はセキュリティを考慮して設計された FTP サーバーです。

インストール

pure-ftpdAURArch User Repository からインストールできます。

サーバーは # systemctl start pure-ftpd で起動できます。

サーバーを自動的に起動したい場合は # systemctl enable pure-ftpd を実行してください。

サービスを管理する方法について、詳しくは Systemd#ユニットを使うを参照。

設定

Pure-FTPd の設定は完全に、実行時の引数によって行います。

また、/etc/pure-ftpd.conf を読み込むラッパースクリプトが存在します。ファイルを読み込んでからそれに対応する引数で Pure-FTPd を起動します。

仮想ユーザーの設定

Pure-FTPd では、実際のシステムユーザーの代わりに仮想ユーザーを使うことができます。

利用可能なユーザーはバックエンドで管理する必要があります。バックエンドを参照してください。

ここでは、デモンストレーションとして、PureDB バックエンドを使用します。以下の2行をアンコメントしてください:

# We disable the anonymous account.
NoAnonymous yes
# We use PureDB as backend and specify its path.
PureDB /etc/pureftpd.pdb

これで認証されたユーザーだけが接続できるようになります。PureDB にユーザーを追加するには /etc/passwd のようなファイルを作成してから、PureDB を作成するときに使います。

/etc/pureftpd.passwd ファイルを作成・閲覧・編集するときは、pure-pw コマンドを使用します:

# pure-pw useradd someuser -u ftp -d /srv/ftp

上記のコマンドで FTP システムユーザーとして使用するユーザー someuser が作成されます。デフォルトでは、作成されたユーザーは /srv/ftp に chroot されます。そうしたくない場合は -d-D に置き換えてください。

ノート: デフォルトでは、FTP システムユーザーになる仮想ユーザーはログインすることができません。ログインするには /etc/pure-ftpd.conf の MinUID オプションを 14 (ftp ユーザーの UID) に設定して、/etc/shells に FTP システムユーザーのシェルを記述する必要があります: # echo "/bin/false" >> /etc/shells
ノート: --with-virtualchroot フラグを付けてコンパイルされていないため、chroot されたディレクトリ以外のシンボリックリンクは機能しません。対処方法として mount --bind source target を使う方法があります。

作成したアカウントを使用する前に、変更を適用する必要があります:

# pure-pw mkdb

これで仮想ユーザーは /srv/ftp 内のファイルにアクセスできるようになりました。

pure-pw mkdb コマンドは先に出てきた /etc/pureftpd.pdb というファイルを作成します。このファイルには仮想ユーザーに関する全ての情報が格納されます。上記のコマンドを実行したときにサービスを再起動する必要はありません。変更はすぐに反映されます。

ユーザーパスワードの変更

ユーザーのパスワードを変更するには、以下のようなコマンドを実行:

# pure-pw passwd someuser

その後、/etc/pureftpd.pdb を更新して変更を適用:

# pure-pw mkdb

ユーザーの削除

ユーザーを削除するには、次のコマンドを入力:

# pure-pw userdel someuser

上記のコマンドではユーザーのホームディレクトリは削除されません。手動で削除してください。

ユーザー設定の確認

ユーザーのアカウント設定を確認したいときは、次のコマンドを入力:

# pure-pw show someuser

バックエンド

最低でも一つのバックエンドを指定する必要があります。複数のバックエンドを指定した場合、Pure-FTPd は指定された順番で優先的に使用します。リクエストされたユーザーが含まれている最初のバックエンドが使われます。

利用可能なバックエンド:

TLS の設定

証明書の作成

詳しくは ドキュメント を参照してください。ここでは概略だけ説明します:

自己署名証明書を作成:

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

パーミッションを設定:

# chmod 600 /etc/ssl/private/*.pem

TLS の有効化

/etc/pure-ftpd.conf の下の方に TLS のセクションが存在します。TLS の設定をアンコメントして 1 に設定することで FTP と SFTP の両方が有効になります:

TLS             1

その後 pure-ftpd.service デーモンを再起動すれば SFTP が使えるクライアント (例: filezillaSmartFTP) でログインができるようになるはずです。

参照