FTPサーバ構築 vsftp
FTPにてファイルのupload/downloadを可能とする。
目的
ftpとは「File Transfer Protocol」の略。ネットワークでファイルの転送を行うための通信プロトコルである。
今回、vsftpを導入することにより、ftpによるファイルのアップロード/ダウンロードを可能とする。
また、ユーザからのFTPアクセス時以下のとおりとなるよう設定を行う。
- anonymousユーザ(匿名ユーザ)のログイン禁止
- アスキーモードでのupload/downloadを許可
- デフォルトでホームディレクトリより上層へのアクセスを禁止する
構築条件
構築機器
- 仮想サーバ SUN VirtualBox 4.3/Hyper-V で構築
作成環境
OS | CentOS 6.5 64bit版 |
サーバ作成条件
サーバIP | 192.168.0.10/24 |
ホスト名 | hogehogeServer |
user | hogehoge |
userpasswd | hogehogepass |
手順記入ルール
- コマンド行頭記号で 「$」はユーザ権限 「#」はスーパーユーザー権限 を表示
- コマンドが長くなる場合は、行末に「\」を記述し複数行に記述。
前準備
- CentOSインストール 実施
- yumリポジトリ設定 実施
インストール
(1)インストール
【Telnet】
- rootでログイン
$ su パスワード:
- 確認
# yum list install vsftpd
vsftpd.x86_64 2.2.2-11.el6_4.1 c6-media
- インストール
# yum install vsftpd
================================================================================ Package Arch Version Repository Size ================================================================================ Installing: vsftpd x86_64 2.2.2-11.el6_4.1 c6-media 151 k
設定
(1)ftp configファイル設定
- vsftpd.conf ファイル編集
# vi /etc/vsftpd/vsftpd.conf
- anonymousでのログイン禁止設定
anonymous_enable=YES
↓anonymous_enable=NO
- アスキーモードでのアップロード/ダウンロード許可設定
#ascii_upload_enable=YES #ascii_download_enable=YES
↓ascii_upload_enable=YES ascii_download_enable=YES
- 上位ディレクトリ移動禁止設定
#chroot_local_user=YES #chroot_list_enable=YES # (default follows) #chroot_list_file=/etc/vsftpd/chroot_list
↓chroot_local_user=YES ←上位ディレクトリ移動禁止設定 chroot_list_enable=YES ←上位ディレクトリ許可リスト有り設定 # (default follows) chroot_list_file=/etc/vsftpd/chroot_list ←上位ディレクトリ許可リスト有り場所設定
- タイムスタンプ日本語設定 ★最終行に追加
use_localtime=YES
- rootユーザを上位ディレクトリ許可リストに登録
# echo root >> /etc/vsftpd/chroot_list
- 上位ディレクトリ許可リスト登録が出来たか確認
# cat /etc/vsftpd/chroot_list
root
起動
(1)vsftp起動
- vsftpd起動
# /etc/rc.d/init.d/vsftpd start
vsftpd 用の vsftpd を起動中: [ OK ]
- vsftpd自動起動設定
# chkconfig vsftpd on
- 確認
# chkconfig --list vsftpd
vsftpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
- 終了
# exit exit $
(2)動作確認
【FTP】
- ユーザ名(hogehoge)でアクセス
→上位ディレクトリにいけない事を確認
その他設定
上位ディレクトリアクセス許可ユーザ作成
【telnet】
- hogehogeユーザを上位ディレクトリ許可リストに登録
# echo hogehoge >> /etc/vsftpd/chroot_list
- 上位ディレクトリ許可リストに登録があるか確認
# cat /etc/vsftpd/chroot_list
root
hogehoge
- vsftpd再起動
# /etc/rc.d/init.d/vsftpd restart
vsftpd を停止中: [ OK ] vsftpd 用の vsftpd を起動中: [ OK ]
確認
【FTP】
- ユーザ名(hogehoge)でアクセス
・上位ディレクトリにいける事を確認
遭遇したトラブル
ftpが「500 OOPS: cannot change directory:/home/hogehoge」エラーとなる
問題:
ftpが「500 OOPS: cannot change directory:/home/hogehoge」でアクセスできない
原因:
SELinux設定解除もれ
「SELinux設定解除手順」にてファイアウォール設定を解除する
ftpがタイムアウトでアクセスできない
問題:
ftpがタイムアウトでアクセスできない
原因:
ファイアウォール設定解除もれ
「ファイアウォール設定解除手順」にてファイアウォール設定を解除する
ftpでログインできない
問題:
ftpでログインできない
原因:
echo root >> /etc/vsftpd/chroot_list 設定忘れ
chroot_list ファイルが全然無い状態だと全ユーザのログインが拒否される
謝辞
テキスト作成に当たり、以下サイトを参考にさせて頂きました。ありがとうございます。