centOSのVPSサーバでFTP設定(VSFTPD)した。

FTPサーバの設定をする。
VSFTPDインストールしたところからです。
(yum install vsftpd は完了ね)

取り敢えず、インストールしたら、起動してみてアクセスできるかを先に確認したい。(設定終わってからでも全然いいけど。いや、むしろセキュリティ上その方がいいけど。でも、一応気になるから、先にチェックしとく。不要な場合この手順は飛ばす。)

[root@server]# ftp
ftp> op
(to)000.000.000.000 →IPアドレスかドメイン叩く。今回はまだドメイン設定してないので、IP叩く。
Name(000.000.000.000:root): namae →ユーザ名入れる
Password: →パスワード入れる
230 Login successful. と返ってきたら、接続はOK。
ftp> quit でFTP接続から抜ける。

設定ファイルを編集または作成する。
・/etc/vsftpd/vsftpd.conf (設定ファイル)
・/etc/vsftpd/chroot_list (上位階層にもアクセスを許可するユーザのリスト)
・/etc/vsftpd/user_list  (FTP接続を許可しないユーザのリスト)
・/etc/vsftpd/ftpusers (FTP接続を許可しないユーザのリスト)

user_list とftpusersは、CONFファイルの設定次第で全然リストの意味が変わってくるので注意が必要。
user_list をデフォルトのままで使って、ftpusersは使わないので、この2つは一旦編集はなし。ファイル自体があるかどうかと中身だけ確認しとく。

こちら(http://www.obenri.com/_ftpserver/vsftpdconf01.html)を参考に、設定ファイルをいじるまえには、常にオリジナルのバックアップを取っておくことを癖にする!

まずは、「/etc/vsftpd/vsftpd.conf」を編集します。

[root@server]# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.org →初期ファイルに末尾に「.org」と付けてオリジナルファイルを保存。
[root@server]# nano /etc/vsftpd/vsftpd.conf  →CONFファイルを編集(上から順にいきますワ)

  1. #anonymous_enable=YES (コメントアウト)
    anonymous_enable=No (追加)
    匿名ユーザは禁止。anonymousFTPは使用しない。
  2. local_enable=YES (確認:作成したLINUXユーザのログイン許可)
  3. write_enable=YES (確認:ユーザのFTPファイル書き込み・アップロードを許可)
  4. local_umask=022 (確認:新規作成のディレクトリは755パーミションになる)
  5. #anon_upload_enable=YES (確認:コメントアウト=無効)
    #anon_mkdir_write_enable=YES (確認:コメントアウト=無効)
    dirmessage_enable=YES (確認:有効 ※ディレクトリにメッセージファイルを置いた場合そのメッセージ内容が表示される。動作には影響ないからどっちでもいい)
  6. xferlog_enable=YES (確認:logを記録する)
  7. connect_from_port_20=YES (確認:ポート20でアクセス ※パッシブモードでアクセスするときのデフォルトポート)
  8. #chown_uploads=YES (確認:コメントアウト=無効)
    #chown_username=whoever (確認:コメントアウト=無効)
  9. #xferlog_file=/var/log/xferlog (コメントを取る=有効にする)
    xferlog_file=/var/log/xferlog
    コメント取って有効にする。「/var/log/vsftpd.log」にFTPのログを保存する。
  10. xferlog_std_format=YES (無効にする)
    xferlog_std_format=NO
    YESにすると、「vsftpd.log」ではないログ(=アナライザーで解析できる形式のログ形式)を保存する設定になる。特殊なログは不要なので、明示的に「NO」としておく。
  11. #chown_uploads=YES (確認:コメントアウト=無効)
    #chown_username=whoever (確認:コメントアウト=無効)
  12. #idle_session_timeout=600 (確認:コメントアウト=無効)
    #data_connection_timeout=120 (確認:コメントアウト=無効)
    どちらも確認のみでOK。コメント取ってもどっちでもいい。ただし、サーバの反応が遅くてセッションタイムアウトが続くようなら、この値を大きくしてコメントアウト。
  13. #nopriv_user=ftpsecure (確認:コメントアウト=無効)
    #async_abor_enable=YES (確認:コメントアウト=無効)
  14. #ascii_upload_enable=YES (コメントを取る=有効にする)
    ascii_upload_enable=YES
  15. #ascii_download_enable=YES (コメントを取る=有効にする)
    ascii_download_enable=YES
    アスキーモードでのアップロード、ダウンロードを許可。
  16. #ftpd_banner=Welcome to blah FTP service.  (確認:コメントアウト=無効)
    ftp接続したユーザにWELCOMEメッセージを表示させたいなら、コメントを取るとFTPサーバのバージョンなどが表示されるようになる。動作には影響ないからどっちでもいい。)
  17. #deny_email_enable=YES (確認:コメントアウト=無効)
    #banned_email_file=/etc/vsftpd/banned_emails (確認:コメントアウト=無効)
  18. chroot_local_user=YES (追記)
    有効にすると、デフォルトでユーザがホームディレクトリより上位階層にFTPで接続するのを禁止する。
  19. #chroot_list_enable=YES (コメントを取る=有効にする)
    chroot_list_enable=YES
    ホームディレクトリより上位階層に移動できるユーザのリストを有効にして、リストに名前のあるユーザのみ認める。(上の設定とセットで考える)
  20. #chroot_list_file=/etc/vsftpd/chroot_list (コメントを取る=有効にする)
    chroot_list_file=/etc/vsftpd/chroot_list
    ※上位階層にアクセスできるユーザのリストの保存場所
  21. #ls_recurse_enable=YES (コメントを取る=有効にする)
    ls_recurse_enable=YES
    ディレクトリごと削除できるようにする
  22. listen=YES (確認:有効)
  23. #listen_ipv6=YES (確認:コメントアウト=無効 IP6使わないから。)
  24. pam_service_name=vsftpd (確認:有効)
    userlist_enable=YES (確認:有効)
    tcp_wrappers=YES (確認:有効)
  25. 以下、追記。
    pasv_promiscuous=YES (パッシブモードを使う)
    use_localtime=YES (サーバのローカルタイムを使用する=日本時間ね。)
    pasv_addr_resolve=YES (パッシブモードで接続先IPアドレスをホスト名から取得する)
    force_dot_files=YES (「.htaqccess」などの非表示ファイルを強制的に表示させる)
    local_root=/var/www/ (通常はユーザのルートディレクトリ。※下に注記する)
    pasv_address=49.212.40.244 (PASVモード接続先IPアドレスが牽けるホストのIPアドレス)
    pasv_min_port=40000 (PASVモード接続時の最小ポート番号:空いてるポートで大体で。)
    pasv_max_port=40030 (PASVモード接続時の最大ポート番号大体で。空いてるポートで大体で。)
    #ssl_enable=YES (SSL使う場合。使うかどうか、ここ保留)
    #rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem (SSL使う場合。使うかどうか、ここ保留)
    #force_local_logins_ssl=NO (SSL使う場合。使うかどうか、ここ保留)
    #force_local_data_ssl=NO (SSL使う場合。使うかどうか、ここ保留)

※「local_root=」:これは、デフォルトだと、ユーザのルートディレクトリにアクセスしてしまうので、「public_html」とかにすると、一般的なWEBサービスみたいに、自分のホームページ公開エリア以上には勝手にFTP接続できませんよ、という設定になる。ブラウザでのアクセスは、http://サバ.com/~onamae/という見慣れたやつ。今回は、アパッチのルートディレクトリ(っていうか、LIVE COMMERCE使うためにサーバを立てているので、便宜上、公開ディレクトリの1つ上の階層)をルートとする。なんで、「/var/www/」です。ちなみに公開ディレクトリは、その下の「/var/www/html/」ですね。

[root@server]# nano /etc/vsftpd/chroot_list

chrootのユーザリストを新規作成する。
FTPで上位階層へのアクセスを認めるユーザ名を1行1名で記入して、保存。
「namae」

長かった。

ここで、FTPサーバの再起動をかけて設定を有効にしたら、FTPクライアントのFILEZILLAで、WINDOWSマシンから、FTP接続テストしてみます。
[root@server]# service vsftpd restart
まだサーバのドメイン設定してないから、IPアドレスで。
接続→OK
上位階層への移動→OK
ファイルのアップロードとか削除→できまへん。はい、乙。

public_htmlなどの、FTPユーザの所有ディレクトリならファイル操作ができるが、/var/www/以下は、ROOTの所有なので、namaeくんでは、ファイル操作ができません。
対応は2つ。
・ROOTでFTPアクセスできるように変更
・該当ディレクトリの所有者をnamaeくんに変更
もちろん2つ目採用で。

[root@server]# chown namae:namae /var/www/
[root@server]# chown namae:namae /var/www/html/

これで、OK。あと/www/以下には、iconsディレクトリとかcgi-binディレクトリとか色々あるけど、取り敢えずCGI使う予定ないし、動作確認は最小から始めたいので、一旦無視で。
FTP設定終了。

念のため、HTMLファイルとJPGファイルをアップロードして、アップロードしたファイルに、ブラウザ経由でアクセスして表示出来てるかも確認しておく。

再起動時の自動起動設定のおまじないも忘れない。

[root@server]# chkconfig vsftpd on
[root@server]# chkconfig –list vsftpd


参考にさせていただきました。

http://www.aconus.com/~oyaji/ftp/vsftpd_rpm.htm
http://centossrv.com/vsftpd.shtml
http://www.orchid.co.jp/computer/linux/vsftp.html

*********************************