WordPressの開発環境を整えるために、VirtualBoxにCentOS8.1を導入したので、ftpでも接続できるようにして、簡単にファイル管理ができるようにします。
環境
ホスト:WIndows10・・・Macでも操作はほぼ変わりません
ゲスト:CentOS 8.1・・・CentOS8.2でも同様にできます!
VirtualBox:バージョン6.1.4・・・6.1.8でも同様にできます!
vsftpdをインストール
dnf -y install vsftpd

vsftpdがインストールされたか確認
vsftpd -v

どこにインストールされたか?
which vsftpd

vsftpdの設定
vsftpdの設定は「/etc/vsftpd/vsftpd.conf」を編集して行います。
設定ファイルのバックアップ。
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.org
Viエディタでvsftpd.confを開く。
vi /etc/vsftpd/vsftpd.conf

83行目 先頭の#を外してASCIIでのデータの送受信許可
#ascii_upload_enable=YES → ascii_upload_enable=YES
84行目 先頭の#を外してASCIIでのデータの送受信許可
#ascii_download_enable=YES → ascii_download_enable=YES
101行目 上位ディレクトリ参照可能関連設定
#chroot_local_user=YES → chroot_local_user=YES
102行目 上位ディレクトリ参照可能関連設定
#chroot_list_enable=YES → chroot_list_enable=YES
104行目 上位ディレクトリ参照可能関連設定
ユーザのログインディレクトリ が、そのユーザのルート ディレクトリとなり、
ログインディレクトリより上部にアクセスすることができなくなる。
ただし、chroot_listに記載されたユーザーは上位ディレクトリにアクセスすることができる。
#chroot_list_file=/etc/vsftpd/chroot_list → chroot_list_file=/etc/vsftpd/chroot_list
110行目 先頭の#を外してls -R (ディレクトリごと一括での転送機能)を有効化
#ls_recurse_enable=YES → ls_recurse_enable=YES
115行目 IPv4の接続も可能
listen=No → listen=YES
124行目 IPv6の接続を不可に
listen_ipv6=YES → listen_ipv6=No
ファイルの末尾に追加
128行目 「/etc/vsftpd.user_list」に記述されている特定のユーザーアカウントにのみFTP接続を許可
userlist_deny=NO
129行目 TCP Wrapperの無効化 ルーターによって外部からのFTPアクセスは遮断されている
tcp_wrappers=NO
130行目 ローカルタイムの使用
use_localtime=YES
131〜133行目 SSLでFTP接続ができるように設定(SSL接続する時のみ追記・・・SSL接続する際は証明書の設定が必要です)
SSLが有効でないときに設定してしまうと、エラーになります!
# ssl settings
ssl_enable=YES
rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem
134行目 chrootした先に書き込み権限があるとエラーになるので追記
allow_writeable_chroot=YES
135行目 隠しファイル表示
force_dot_files=YES
変更、追記したら、:wqで保存してviエディタを終了。
「/etc/vsftpd.user_list」の編集
FTPサーバーへの接続を許すアカウント名を「/etc/vsftpd.user_list」に記述する。
vimエディタでuser_listを開く。
vim /etc/vsftpd/user_list
接続可能なユーザー名をいれて保存。
rootでFTP接続できるようにしちゃうのなら・・・決して本番環境ではやらないように!
/etc/vsftpd/ftpusersからrootを除外(コメントアウト)する。
vim /etc/vsftpd/ftpusers
root → # root
「/etc/vsftpd/chroot_list」の作成
vim /etc/vsftpd/chroot_list
1行目に
root
と記入。
作成したchroot_listは、パーミッションが644になっているため、root以外のユーザーが参照できてしまうので、
「root」アカウント以外はchroot_listを読み書きできないように以下のコマンドでパーミッションを変更しておく。
chmod 600 /etc/vsftpd/chroot_list
念のため、パーミッションが変更されているか確認しておく。
[root@localhost ~]# ls -l /etc/vsftpd/chroot_list -rw-------. 1 root root 5 6月 16 21:30 /etc/vsftpd/chroot_list
-rw——-となっていればOK
ファイヤーウォールの設定
1行ごと、実行していくこと。
もし、ファイヤーウォールを停止していたら、# systemctl start firewalld
で起動します。
firewall-cmd --add-service=ftp
firewall-cmd --add-service=ftp --permanent
firewall-cmd --list-services
パッシブ接続用ポートの許可
firewall-cmd --add-port=60001-60010/tcp --zone=public --permanent
再起動
firewall-cmd --reload
確認
firewall-cmd --list-all --zone=public
ここまでのファイヤーウォールの設定画面

もし、ファイヤーウォールを停止していたら、# systemctl stop firewalld
で停止しましょう。
vsftpdの自動起動設定
サーバーが再起動した際、自動でvsftpdが起動するように自動起動を設定しておく
systemctl enable vsftpd.service
vsftpdを起動
systemctl start vsftpd.service
状態確認
systemctl status vsftpd.service
activeと緑色で表示されていたらOK
停止コマンド
systemctl stop vsftpd.service
再起動コマンド
systemctl restart vsftpd.service
これで、FTPで接続が可能になります。
vsftpd.service が上手く起動できなかったとき
/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
と入力してみてください。
エラーが出力されます。
ただし、エラーがない状態で、↑のコマンドを入れると、vsftpdが起動してしまいますので、お気をつけください。
下記のコマンドでvsftpdを停止できます。
pkill vsftpd