経緯
Docker 上で WordPress を試験する中で、プラグインのインストールを試みたら失敗。……よくよく考えれば FTPサーバ が不在なので当然でした。
そこで、 FTPサーバ として vsftpd をインストールして WordPress のアップデートができることを確認してみます。
ちなみに、ベースはいつも通りdocker_compose_ambergreaseで。
対処 ( vsftpd インストール)
インストール
# dnf -y install vsftpd
## 略
Installed:
logrotate-3.14.0-4.el8.x86_64 vsftpd-3.0.3-34.el8.x86_64
Complete!
OK。
設定
# vi /etc/vsftpd/vsftpd.conf
## タイムアウト時間変更
#idle_session_timeout=600
idle_session_timeout=600
#data_connection_timeout=120
data_connection_timeout=60
## ASCIIモード有効
#ascii_upload_enable=YES
ascii_upload_enable=YES
#ascii_download_enable=YES
ascii_download_enable=YES
## ホームディレクトリより上へのアクセス制限
#chroot_local_user=YES
chroot_local_user=YES
#chroot_list_enable=YES
chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd/chroot_list
chroot_list_file=/etc/vsftpd/chroot_list
## IPv4有効
#listen=NO
listen=YES
## IPv6無効化
#listen_ipv6=YES
listen_ipv6=NO
## アクセスユーザ制御
userlist_deny=NO
## ユーザごとの設定ファイルを指定
user_config_dir=/etc/vsftpd/user_conf
## ローカル時間有効
use_localtime=YES
## パッシブモード有効
pasv_promiscuous=YES
pasv_min_port=50000
pasv_max_port=50030
## .htaccessをFTPソフトから見られるようにする
force_dot_files=YES
今回は試験なのでここまで必要ないですが一応。
ユーザ設定
# vi /etc/vsftpd/chroot_list
## 空ファイル作成
## root以外参照できないように権限変更
# ls -al /etc/vsftpd/chroot_list
-rw-r--r-- 1 root root 0 MM月 dd hh:ii /etc/vsftpd/chroot_list
# chmod 600 /etc/vsftpd/chroot_list
# ls -al /etc/vsftpd/chroot_list
-rw------- 1 root root 0 MM月 dd hh:ii /etc/vsftpd/chroot_list
ユーザ作成・設定
# useradd ftpuser
ユーザ追加。
# vi /etc/vsftpd/user_list
ftpuser
/etc/vsftpd/user_list
に追加。 /etc/vsftpd/chroot_list
は上に遡らせないようにするため、記載しない。
# mkdir /etc/vsftpd/user_conf/
# vi /etc/vsftpd/user_conf/ftpuser
local_root=/var/www/sample_site
FTPユーザのルートディレクトリを指定します。
# passwd ftpuser
bash: passwd: command not found
パスワード設定しようとしたら、コマンドがないと言われてしまいました。
# dnf -y install passwd
## 略
Installed:
libuser-0.62-23.el8.x86_64 passwd-0.80-3.el8.x86_64
Complete!
OK。
# passwd ftpuser
Changing password for user ftpuser.
New password:
BAD PASSWORD: The password fails the dictionary check - it is based on a dictionary word
Retype new password:
passwd: all authentication tokens updated successfully.
気を取り直してパスワード設定。
vsftpd 起動
# /usr/sbin/vsftpd &
#
起動完了。これで検証してみます。
検証
試しに翻訳をアップデートしようとすると、FTPサーバの情報を聞かれます。今回はコンテナの名前が web
なのでそれを指定。ユーザ名とパスワードは先程設定したものを。
OKです。