Linux系の作業は、実務での頻度があまり無いため作業する度に手順を忘れてしまう。
今回は、新人の入社に伴い行ったFTP環境の構築手順を、備忘録としてまとめていく。
コンテンツ
前提条件
OSは「CentOS7」、Apache、firewalldのインストールは済んでいるものとする。
また、以下の記事の手順で新規ユーザー「username」を追加しているものとする。
https://chusotsu-program.com/linux-useradd
vsftpdをyumでインストールする
まずはyumでvsftpdをインストールする。
yum -y install vsftpd
インストールが環境したら、サービスの起動、自動起動設定を行っておこう。
systemctl start vsftpd
systemctl enable vsftpd
vsftpd.confの設定変更
vsftpd.confファイルを開き、以下のとおり編集を行う。
だが、その前に必ずconfファイルのバックアップを取っておこう。
cd /etc/vsftpd/
cp vsftpd.conf vsftpd.conf.bk
ファイルのバックアップを取ったら、confファイルを編集していく。
vim vsftpd.conf
# NOに変更(匿名ユーザーを拒否)
anonymous_enable=NO
# コメントイン(アスキーモードでの転送を許可)
ascii_upload_enable=YES
ascii_download_enable=YES
# 追記(タイムゾーン設定)
use_localtime=YES
# 追記(パッシブモードの許可)
pasv_enable=YES
pasv_min_port=10000
pasv_max_port=10100
とりあえず、ここまでが最低限の設定。
続いてユーザーのパーミッション関連の設定を行っていく。
ホームディレクトリの上位階層にアクセスできないようにする
FTPアカウントを発行する際に気を付けたいのがパーミッション周りの設定。
特に発行したアカウントが、ホームディレクトリの上位階層にアクセスできてしまうと何かと問題が多いので、これを制限しなければならない。
では設定方法について詳しく見ていこう。
ユーザー単位の設定ファイルを作成
confファイルに以下の一行を追記する。
vim vsftpd.conf
# 追記(設定ファイル専用ディレクトリのパスを指定)
user_config_dir=/etc/vsftpd/vsftpd_user_conf
次にmkdirコマンドでディレクトリを作成。
mkdir /etc/vsftpd/vsftpd_user_conf
作成したディレクトリ内に、ユーザー名と同じファイル名で設定ファイルを作成する。
vim vsftpd_user_conf/username
# ホームディレクトリのパスを指定
local_root=/var/www/html/username
そしてApache公開ディレクトリに上記で指定したとおりのディレクトリを作成する。
パーミッションは777にしておこう。
mkdir /var/www/html/username
chmod 777 /var/www/html/username
user_listにユーザーを追加
vim vsftpd.conf
# 追記
userlist_enable=YES
userlist_deny=NO
confファイルに上記2行を追記したら、user_listを開き追加したいユーザー名を入力する。
vim user_list
# 追記
username
上位階層へアクセスできないよう設定
vim vsftpd.conf
# 追記
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
allow_writeable_chroot=YES
confファイルでchroot_listを有効化し、以下のとおりchroot_listファイルにユーザー名を入力する。
vim chroot_list
# ユーザー名を入力して保存
username
ここまでの設定が完了したら、vsftpdを再起動しておこう。
systemctl restart vsftpd
firewalldの設定
vsftpdの設定が完了したら、次はファイアウォール(firewalld)の設定を行っていく。
firewall-cmd --permanent --zone=public --add-service=ftp
firewall-cmd --reload
これでOK。
あとは好きなFTPクライアントで接続を試してみよう。