FTPサーバーについて
FTP「File Transfer Protocol(ファイル・トランスファー・プロトコル)」はPC等のクライアントからFTPサーバーにファイルを転送するためのサービスです。
ファイルサーバーとして使うのが一般的ですが、ファイル管理はクラウドが主流のこのご時世ではあまり見かけないかもですね。
ファイルサーバーとしては使わないがWordpressのパッケージのインストでFTPを使うと便利です。
(WordPressはFTPが無くてもファイル転送は可能です。)
▼公式WEB
FTPのLinuxパッケージは主に「vsftp」と「proftp」の2つが有名ですが、今回は proftp を選択します。
http://www.proftpd.org/docs/
構築環境
- CentOS Linux release 8.2.2004 (Core)
- ProFTPD Version 1.3.6e
ルータのポート開放でFTP通信を受け入れる
FTPサーバーの構築を行う前に、サーバー側NWのルータのポートを開放して、外部からの通信がサーバーに届くようにします。
FTPサーバーは「通信制御用」と「ファイル転送用」の2種類のポートを解放する必要があります。
ポートの設定方法はルータによって違いますが、概ね下記のような感じです。
ルータが「開始ポート」と「終了ポート」で範囲指定ができる場合は、「TCP/UDP 20~21 192.168.x.x」のように設定する事も可能です。
用途 | プロトコル | 開始ポート | 終了ポート | サーバーのローカルアドレス |
---|---|---|---|---|
通信制御 | TCP/UDP | 21 | 21 | 192.168.x.x |
データ転送 | TCP/UDP | 20 | 20 | 192.168.x.x |
▼通信イメージ
▼ルータの設定イメージ
上記ルータ設定について補足
FTPサーバーで使うポート開放の説明をしましたが、ウチの環境ではFTPはローカル内のみでの利用に限定しており外部に公開していません。
そのため、上記のルータの設定でFTPポートの開放設定はしていないのです。
proftpdのインストール
CentOS 8 では dnf コマンドを利用してパッケージ情報検索やインストール、削除を行うことができます。
パッケージファイルが管理されているダウンロードサーバーをリポジトリと呼び、新規でリポジトリを追加することで、ダウンロードできるファイルの種類を増やすことが可能です。
このパッケージはEPELリポジトリよりDLしてインストールする必要があります。
まだEPELリポジトリが追加されていない場合は こちら の手順を先に確認してください。
▼インストールパッケージの確認
command # dnf list | grep proftpd proftpd.x86_64 1.3.6e-1.el8 @epel proftpd-devel.x86_64 1.3.6e-1.el8 epel proftpd-ldap.x86_64 1.3.6e-1.el8 epel proftpd-mysql.x86_64 1.3.6e-1.el8 epel proftpd-postgresql.x86_64 1.3.6e-1.el8 epel proftpd-sqlite.x86_64 1.3.6e-1.el8 epel proftpd-utils.x86_64 1.3.6e-1.el8 epel
▼インストールの実行
「-y」オプションを指定すると、インストール可否の確認で「yes」となり自動的にインストールが開始します。
command # dnf -y install proftpd
proftpdのコンフィグ設定
command # vi /etc/proftpd.conf
proftpd.conf
▼FTPにログインした際に表示されるメッセージの編集。
ServerName "HS7716-example.com. Fack you!!"
▼日本語のファイルが扱えるように設定を追加。
サーバー上はutf8 クライアントはcp932
UseEncoding utf8 cp932
▼ファイル作成時の初期パーミッションを変更
Umaskはファイル作成時は666より022を引いた644のパーミッションで作成され、ディレクトリ作成時は777から022を引いた755でファイルが作成されるという設定になります。
Umask 022
↓
Umask 000
▼ドキュメントルート
admin グループに属するユーザ意外は、ホームディレクトリより上に移動不可。
DefaultRoot ~ !adm
▼匿名ログインを全てコメントで機能しないようにする
#
# Include /etc/proftpd/anonftp.conf
#
ココに注意
ドキュメントルーの設定を行わないと「/home」より上位の「/root」ディレクトリ等も操作できてしまうので、必ず設定しておきましょう。
proftpdの起動設定
▼自動起動
command # systemctl enable proftpd
▼自動起動の確認
command # systemctl is-enabled proftpd enabled
enabled になっていればサーバー再起動で自動で敵にサービスが起動します。
▼起動
command # systemctl start proftpd
▼起動確認
command # systemctl status proftpd ● proftpd.service - ProFTPD FTP Server Loaded: loaded (/usr/lib/systemd/system/proftpd.service; enabled; vendor preset: disabled) Active: active (running) since Mon 2020-10-05 04:35:27 JST; 5s ago
最後までエラーが無く Active: active (running) となっていればOK。
WinSCPで日本語が文字化けする場合
クライアントアプリとしてWindowsの「WinSCP」を利用した場合の解説です。
1.WinSCPを起動して文字化けを解消したいセッションの「設定」をクリック
2.「環境」をクリックして「ファイル名をUTF-8でエンコード」を「オン」に設定