〈さくらのVPS〉FTP接続できるようにする。

1.yumでインストール

$ sudo yum install vsftpd

2.設定ファイルの編集

バックアップ取ってから。大事。

$ sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.org

起動。

$ sudo /etc/rc.d/init.d/vsftpd start

自動起動を有効化。

$ sudo chkconfig vsftpd on

3:onになっていたらOK。

$ sudo chkconfig --list vsftpd

設定ファイルを編集。

$ sudo vi /etc/vsftpd/vsftpd.conf

変更後のパラメータのみ記載してます。(コメントアウト外したりする)

# 匿名アクセスの禁止
anonymous_enable=NO

# グループ書き込み可能になるように002に変更(書き込み時のパーミッションを022(=644)から002(664)に変更)
local_umask=002

# アスキーモードを有効にする
# 改行コードを環境に合わせて変換してくれる
ascii_upload_enable=YES
ascii_download_enable=YES

# 接続時にバージョン情報がさらけだされるのを防ぐ
ftpd_banner=Welcome to blah FTP service.

# ログインディレクトリの外側にアクセスできるユーザを設定
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

# サブフォルダを含む一括アップロード・ダウンロードを許可
ls_recurse_enable=YES

以下をファイルの末尾に記載。

# /etc/vsftpd/user_listのユーザーだけを許可
userlist_deny=NO

# タイムスタンプ時間をローカル時間にする
use_localtime=YES

# PASVのポート範囲を設定
listen_port=50000
pasv_enable=YES
pasv_min_port=50001
pasv_max_port=50020

# ユーザーのログイン時ディレクトリの指定(書かないとホームディレクトリ)
local_root=/var/www/html

終わったら再起動して有効化。

$ sudo service httpd restart

3.設定ファイルの追加

ftpユーザーとパスワードを設定する。

$ sudo useradd username
$ sudo passwd passwd

作成したユーザーを/etc/vsftpd/user_listに追加。

$ sudo vi /etc/vsftpd/user_list

# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
username

/etc/vsftpd/chroot_listを作成。 ファイルのみ作成して中身は空でもOK(追加したユーザはログイン時ディレクトリの外に出れるようになる)

$ sudo vi /etc/vsftpd/chroot_list

4.iptablesに設定を追加

$ sudo vi /etc/sysconfig/iptables

追加項目。

# FTP
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 20    -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21    -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 50000  -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 50001:50020  -j ACCEPT

設定を反映。

$ sudo /etc/rc.d/init.d/vsftpd restart

5.IPTABLES_MODULESのロード

$ sudo vim /etc/sysconfig/iptables-config

以下を追加。

IPTABLES_MODULES="ip_conntrack_ftp ip_nat_ftp"

再起動。

$ sudo /etc/rc.d/init.d/iptables restart

確認。

$ lsmod

6.FTP接続確認

ポート番号は上で設定した50000

接続してもファイルのアップロードが出来ない。
なんでだーとおもったらちゃんと解説してるサイトがあった。

(参考)「Webサーバーを構築しよう(1)」~初心者でもよくわかる!VPSによるWebサーバー構築講座(3)

以下で原因を調べる。

$ cd /var/www
$ ls -l

出てきた。

drwxr-xr-x 2 root root 4096 5月 12 04:29 2016 cgi-bin
drwxr-xr-x 3 root root 4096 5月 26 11:56 2016 error
drwxr-xr-x  2 root root 4096 5月 26 15:15 2016 html
drwxr-xr-x 3 root root 4096 5月 26 13:28 2016 icons

3行目の権限がrootになってるからでした。
ユーザーでアップロードできるように変更する。

$ sudo chown -R username. html

もう一度$ ls -lコマンドを入力すると、権限が書き換わっているはず。