トップページ > サーバ構築 > RedHat8 / CentOS8 に FTP をインストールして利用できるまでの手順

RedHat8 / CentOS8 に FTP をインストールして利用できるまでの手順

RedHat や CentOS など Linux 系のサーバでファイルをアップロードしたりディレクトリを作成するために FTP サーバが必要になるため、FTP サーバとして提供されている vsftpd のインストールと設定方法について紹介する。

RedHat8 / CentOS8 に FTP をインストールして利用できるまでの手順

1. FTP サーバとは

FTP サーバとは異なる端末間でファイルの転送を行うためのサーバソフトで、FTP サーバが起動している端末に対して FTP 接続できるクライアントソフトでアクセスさせて操作させるものである。

FTP サーバではファイルの転送だけでなく、サーバ内にディレクトリを作成したり、ファイルまたはディレクトリに対する読み書きの権限(パーミッション)や操作できる所有者の設定を行うことができる。

2. インストール前のポートの確認

OS に FTP サーバをインストールする前に、FTP で利用されるポートが空いているか下記のコマンドで確認する。
FTP は 20 または 21 番ポートを利用することから、この時点では FTP 用のポートが空いていないのがわかる。

# ss -atn
State   Recv-Q   Send-Q   Local Address:Port    Peer Address:Port
LISTEN  0        128            0.0.0.0:22           0.0.0.0:*
LISTEN  0        128            0.0.0.0:80           0.0.0.0:*
ESTAB   0        96        172.168.1.**:22    ***.***.***.***:60898
LISTEN  0        128               [::]:22              [::]:*
LISTEN  0        70                   *:33060              *:*
LISTEN  0        128                  *:3306               *:*

3. FTP 用のユーザを OS に作成

次に FTP 用のユーザを OS に作成する。
ユーザの作成方法は通常の OS にユーザを追加する手順と変わらないが、OS のユーザを FTP でも利用すると Telnet や SSH といった FTP 以外のサーバ操作も許してしまうので、FTP 用のユーザを別途用意することでセキュリティを高められる。
尚、ここで作成したユーザは後ほど FTP 用に利用するように設置を行う。

# useradd ftp-access
# passwd ftp-access
ユーザー ftp-access のパスワードを変更。
新しいパスワード: → 任意のパスワードを入力(※1)
よくないパスワード: このパスワードは 8 文字未満の文字列です。
新しいパスワードを再入力してください: → ※1を再入力
passwd: すべての認証トークンが正しく更新できました。

4. FTP 用のディレクトリを作成

作成した FTP 用のユーザが FTP ソフトでサーバに接続した際に利用できるディレクトリを作成する。
FTP はファイル操作できるが故に不用意にファイルを削除されると OS が正常稼働しなくなったり、他のユーザのディレクトリが見れてはいけないため、自由にディレクトリ移動させないために FTP 接続時の初回ディレクトリを指定する。
尚、FTP ユーザごとにアクセスできるディレクトリは別途設定が必要となるが、今回はその設定は行わない。

# mkdir -p /var/www/ftp_dir
# chown ftp-access /var/www/ftp_dir
# chmod 755 /var/www/ftp_dir
# ls -la /var/www/
合計 4
drwxr-xr-x   5 root       root   48 10月  8 09:35 .
drwxr-xr-x. 21 root       root 4096  4月 20  2020 ..
drwxr-xr-x   4 root       root   53  9月 28  2020 cgi-bin
drwxr-xr-x   2 ftp-access root    6 10月  8 09:35 ftp_dir
drwxr-xr-x   6 root       root  116 11月 23  2020 html

上記は /var/www 配下に ftp_dir という名称でディレクトリを用意しているが、特に作成場所とディレクトリ名に決まりは無く、利用に応じて変更することができる。

5. FTP サーバをインストール

ここで OS に FTP サーバをインストールする。
FTP サーバにはいくつか種類があるが、RedHat 及び CentOS では FTP サーバとして vsftpd が用意されている。

# yum -y install vsftpd
(略)
インストール済み:
  vsftpd-3.0.3-33.el8.x86_64

6. vsftpd の初期設定

vsftpd のインストールが終われば、利用できるように設定を行う。
設定は /etc/vsftpd/vsftpd.conf を追記したり編集することで適用される。
基本的な設定事項は下記となる。

# vi /etc/vsftpd/vsftpd.conf

↓ 下記を追加する
# userlist_file で指定したユーザを接続許可
userlist_enable=YES

# アクセスファイル(/etc/hosts.allow, /etc/hosts.deny)をアクセス制御に利用
tcp_wrappers=NO

# ファイル(またはディレクトリ)のタイムスタンプの表示をローカルタイムで表示
use_localtime=YES

# ドットから始まるファイルを含めた一覧を表示
force_dot_files=YES

#ユーザー毎の設定ファイルの場所
user_config_dir=/etc/vsftpd/user_conf

また、既に /etc/vsftpd/vsftpd.conf に記載されている項目もあり、コメントを外して有効化するなど編集を行う。

# ユーザのログインディレクトリの外側へのアクセス許可
#chroot_local_user=YES
chroot_local_user=YES → これがないと「パスワードが違う」と表示されログインできない

# chrootを有効化
#chroot_list_enable=YES
chroot_list_enable=YES

# chroot対象のユーザーリストファイルの場所を指定
#chroot_list_file=/etc/vsftpd/chroot_list
chroot_list_file=/etc/vsftpd/chroot_list

7. vsftpd に FTP ユーザを紐付け

最後に、FTP サーバへの接続を許可するユーザと、そのユーザが FTP 接続してきたときに利用させるディレクトリを設定する。
まずは下記のファイルに OS に作成した FTP 用ユーザを記載する。

# vi /etc/vsftpd/chroot_list
ftp-access → 追記

次に FTP ユーザごとに接続先のディレクトリをフルパスで記載したファイルを用意する。
尚、このファイルを設置するディレクトリは vsftpd の設定ファイルとなる vsftpd.conf に先に設定したが、インストール時には無いため作成する。

# mkdir /etc/vsftpd/user_conf
# vi /etc/vsftpd/user_conf/ftp-access
local_root=/var/www/ftp_dir → 追記

8. FTP サーバを起動

以上で vsftpd の設定と接続できる準備が整ったため、下記のコマンドで FTP サーバを起動する。

# systemctl start vsftpd

9. インストール後のポートの確認

FTP サーバをインストールして起動した後に FTP で利用される 20 または 21 番ポートが空いているか確認する。

# ss -atn
State   Recv-Q  Send-Q Local     Address:Port    Peer Address:Port
LISTEN  0       128               0.0.0.0:22           0.0.0.0:*
LISTEN  0       128               0.0.0.0:80           0.0.0.0:*
ESTAB   0       96           172.168.1.**:22    ***.***.***.***:60898
LISTEN  0       32                      *:21                 *:*
LISTEN  0       128                  [::]:22              [::]:*
LISTEN  0       70                      *:33060              *:*
LISTEN  0       128                     *:3306               *:*

10. FTP の接続確認

FTP サーバが起動すれば実際に FTP クライアントソフトなどで接続して操作することができる。
Windows のコマンドプロンプトでも FTP 通信することができるため、コマンドプロンプトを起動して次の手順でアクセスし、「230 Login successful.」が表示されれば FTP 接続に成功したことを確認できる。

Microsoft Windows [Version 10.0.17763.2183]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\Users\855908>ftp {FTP サーバの IP またはホスト名}
{FTP サーバの IP またはホスト名} に接続しました。
220 (vsFTPd 3.0.3)
200 Always in UTF8 mode.
ユーザー ({FTP サーバの IP またはホスト名}:(none)): ftp-access
331 Please specify the password.
パスワード:
230 Login successful.
ftp>

関連記事