Linux系の作業は、実務での頻度があまり無いため作業する度に手順を忘れてしまう。
今回は、新人の入社に伴い行ったFTP環境の構築手順を、備忘録としてまとめていく。
コンテンツ
前提条件
OSは「CentOS7」、Apache、firewalldのインストールは済んでいるものとする。
また、以下の記事の手順で新規ユーザー「username」を追加しているものとする。
https://chusotsu-program.com/linux-useradd
vsftpdをyumでインストールする
まずはyumでvsftpdをインストールする。
1 | yum -y install vsftpd |
インストールが環境したら、サービスの起動、自動起動設定を行っておこう。
1 2 | systemctl start vsftpd systemctl enable vsftpd |
vsftpd.confの設定変更
vsftpd.confファイルを開き、以下のとおり編集を行う。
だが、その前に必ずconfファイルのバックアップを取っておこう。
1 2 | cd /etc/vsftpd/ cp vsftpd.conf vsftpd.conf.bk |
ファイルのバックアップを取ったら、confファイルを編集していく。
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 | 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ファイルに以下の一行を追記する。
1 2 3 4 | vim vsftpd.conf # 追記(設定ファイル専用ディレクトリのパスを指定) user_config_dir= /etc/vsftpd/vsftpd_user_conf |
次にmkdirコマンドでディレクトリを作成。
1 | mkdir /etc/vsftpd/vsftpd_user_conf |
作成したディレクトリ内に、ユーザー名と同じファイル名で設定ファイルを作成する。
1 2 3 4 | vim vsftpd_user_conf /username # ホームディレクトリのパスを指定 local_root= /var/www/html/username |
そしてApache公開ディレクトリに上記で指定したとおりのディレクトリを作成する。
パーミッションは777にしておこう。
1 2 | mkdir /var/www/html/username chmod 777 /var/www/html/username |
user_listにユーザーを追加
1 2 3 4 5 | vim vsftpd.conf # 追記 userlist_enable=YES userlist_deny=NO |
confファイルに上記2行を追記したら、user_listを開き追加したいユーザー名を入力する。
1 2 3 4 | vim user_list # 追記 username |
上位階層へアクセスできないよう設定
1 2 3 4 5 6 | vim vsftpd.conf # 追記 chroot_list_enable=YES chroot_list_file= /etc/vsftpd/chroot_list allow_writeable_chroot=YES |
confファイルでchroot_listを有効化し、以下のとおりchroot_listファイルにユーザー名を入力する。
1 2 3 4 | vim chroot_list # ユーザー名を入力して保存 username |
ここまでの設定が完了したら、vsftpdを再起動しておこう。
1 | systemctl restart vsftpd |
firewalldの設定
vsftpdの設定が完了したら、次はファイアウォール(firewalld)の設定を行っていく。
1 2 | firewall-cmd --permanent --zone=public --add-service= ftp firewall-cmd --reload |
これでOK。
あとは好きなFTPクライアントで接続を試してみよう。