トップページ > サーバ構築 > RedHat8 / CentOS8 に FTP をインストールして利用できるまでの手順
RedHat8 / CentOS8 に FTP をインストールして利用できるまでの手順
RedHat や CentOS など Linux 系のサーバでファイルをアップロードしたりディレクトリを作成するために FTP サーバが必要になるため、FTP サーバとして提供されている vsftpd のインストールと設定方法について紹介する。
このページの目次
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>
関連記事
サーバ
RedHat や CentOS など Linux 系のサーバにインストールしたパッケージを一覧で確認するために、インストールやアップデートで利用した yum コマンドを活用する方法を紹介する。
サーバ
RedHat や CentOS など Linux 系のサーバでファイルやディレクトリの一覧を表示する ls コマンドの使い方と同時に付与するオプションにより並び替えや表示する数を指定して便利に活用する方法を紹介する。
RedHat8 / CentOS8 のインストールと初期セットアップまでの手順
サーバ
数あるサーバ OS の中から RedHat8 とその派生 OS となる CentOS8 のインストールとネットワークやユーザ作成など必要最低限の初期セットアップまでの手順を掲載。
サーバ
OS「CentOS 7」でセキュリティ制御ツールの"SELinux"の一時的停止と恒久的な停止の設定について掲載しています。
サーバ
OS「CentOS 7」でパッケージ管理ツールの"yum"のアップデートと EPEL リポジトリのインストールと設定について掲載しています。