広告

VirtualBoxにCentOS7.6を導入したから、ftpで接続できるようにする

vsftpdをインストール VirtualBox
この記事は約7分で読めます。

WordPressの開発環境を整えるために、VirtualBoxにCentOS7.6を導入したので、ftpでも接続できるようにして、簡単にファイル管理ができるようにします。

環境

ホスト:macOS Mojava バージョン 10.14.5

ゲスト:CentOS7.6

VirtualBox:バージョン 5.2.30 r130521 (Qt5.6.3)

すでに、下記の設定が終わっていることとします。

VirtualBoxにCentOS7.6を導入
WordPressの開発環境を整えるために、VirtualBoxにCentOS7.6を導入してみました。自分でも忘れそうなので、初心者でもわかるように書いていきます。環境ホスト:macOS Mojava バージョン 10.14.5ゲスト:C...
VirtualBoxにCentOS7を入れてSSH接続する(Mac)
環境ホスト:macOS Mojava バージョン 10.14.5ゲスト:CentOS7.6VirtualBox:バージョン 5.2.30 r130521 (Qt5.6.3)VirtualBoxネットワークの設定VirtualBoxで一番、面...
CentOS7.6にLAMP環境を整える
下記の環境でWordPressを動かすための作業をしていきます。環境ホスト:macOS Mojava バージョン 10.14.5ゲスト:CentOS7.6VirtualBox:バージョン 5.2.30 r130521 (Qt5.6.3)アッ...

vsftpdをインストール

yum -y install vsftpd

vsftpdをインストール

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

vsftpd -v

vsftpd確認

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

which vsftpd

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
コマンドモードで「:set number」とタイプして、行数を表示させる。

12行目 匿名ユーザーログインを禁止
anonymous_enable=YES → anonymous_enable=No

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行目 TCP Wrapperの無効化 ルーターによって外部からのFTPアクセスは遮断されている
tcp_wrappers=YES → tcp_wrappers=NO

ファイルの末尾に追加

130行目 ローカルタイムの使用
use_localtime=YES

131、132行目 「/etc/vsftpd.user_list」に記述されている特定のユーザーアカウントにのみFTP接続を許可
userlist_enable=YES
userlist_deny=NO

133〜135行目 SSLでFTP接続ができるように設定(SSL接続する時のみ追記)
# ssl settings
ssl_enable=YES
rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem

136行目 chrootした先に書き込み権限があるとエラーになるので追記
allow_writeable_chroot=YES

137行目 隠しファイル表示
force_dot_files=YES

変更、追記したら、:wqで保存してviエディタを終了。

「/etc/vsftpd.user_list」の編集

FTPサーバーへの接続を許すアカウント名を「/etc/vsftpd.user_list」に記述する。

viエディタでuser_listを開く。

vi /etc/vsftpd/user_list

接続可能なユーザー名をいれて保存。

rootでFTP接続できるようにしちゃうのなら・・・ 決して本番環境ではやらないように!

まずは/etc/vsftpd/ftpusersからrootを除外(コメントアウト)する。

vi /etc/vsftpd/ftpusers

2行目
root → # root

「/etc/vsftpd/chroot_list」の作成

ファイルを新規に作成し、上位ディレクトリの参照を許可するアカウント名を記述する。

vi /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

ここまでのvsftpd設定画面

vsftp設定画面

SELinux が有効になっているので下記コマンドを実行して、vsftpd からのアクセスを許可を忘れずに!
setsebool ftpd_full_access on

念の為、停止コマンド

systemctl stop vsftpd.service

再起動コマンド

systemctl restart vsftpd.service

これで、FTPで接続が可能になります。

起動エラー

# systemctl start vsftpd
Job for vsftpd.service failed because the control process exited with error code.  
See "systemctl status vsftpd.service" and "journalctl -xe" for details.

このようなエラーが出た場合、「/etc/vsftpd/vsftpd.conf」に設定ミスがあることが多いです。

文法確認のコマンド(下記)を実行してみてください。

問題があれば指摘。問題がなければ起動しますのでご注意!!

# /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

ちなみに、

listen と listen_ipv6 を両方 YES にすることはできません。
どちらかにする必要があります。