UNIXCentOSFTPサーバーvsftpd

vsftpd インストール

更新日:2017年10月17日

vsftpdサーバーのインストールと設定

UNIXはWeb,メールサーバーを構築する場合、SSH,telnet,FTPなどネットワーク接続が前提の作業になります。しかし、CentOSインストール直後のネットワーク接続は、上記の内SSHしか受け付けてくれません。
ファイルアップロードはscpを使用すれば可能ですが、手軽にファイルアップロードしたい場合は、FTPを使用するのが一般的です。
CentOS 標準のftpサーバー、vsftpdをインストールして、設定・起動しましょう。vsftpのインストールと設定はサーバー管理者(root)権限で行って下さい。

vsftpサーバーインストール

yumを使ってvsftpdをインストールしましょう。

# yum -y install vsftpd

vsftpd設定ファイルの編集

vsftpd設定ファイルを編集しましょう。

# vi /etc/vsftpd/vsftpd.conf
# 匿名(anonymous)でのログインを禁止しましょう。
anonymous_enable=NO
# コメント(#)を削除して、ASCIIモード転送を許可しましょう。
ascii_upload_enable=YES
ascii_download_enable=YES
# コメント(#)を削除して、ログインしたディレクトリのみアクセス可能にしましょう。
chroot_local_user=YES
# コメント(#)を削除して、chroot_list_file ※1に記述されたユーザーはログインしたディレクトリ以外もアクセス可能にしましょう。chroot_list_enable=YES と chroot_list_file=...を設定すると後述の allow_writeable_chroot=YES を設定してもログインできません
chroot_list_enable=YES
# コメント(#)を削除して、ログインしたディレクトリ以外もアクセスが可能なユーザーのリストファイルを指定しましょう。 ※1
chroot_list_file=/etc/vsftpd/chroot_list
# コメント(#)を削除して、ディレクトリごとのファイル一括転送を可能にしましょう。
ls_recurse_enable=YES
# IPv4でのファイル転送を受付ます。
listen=YES
# IPv6でのファイル転送を受付ません。
listen_ipv6=NO
# 最終行へ追記します。
# ルートディレクトリを指定しましょう (無い場合はホームディレクトリがルートディレクトリになります)
local_root=public_html
# ローカルタイム(日本時間)を使用しましょう。
use_localtime=YES
# ユーザーリストを有効にしましょうuserlist_deny=NOと併せて、/etc/vsftpd/user_list ※2にのっているユーザーだけがログインできます。
userlist_enable=YES
userlist_deny=NO
# vsftp3 系からセキュリティが厳しくなって、ftp ログインするユーザーのホームディレクトリが
# 上記のchroot_list_enable=YES と chroot_list_file=...を設定していないときに限り有効です。
# allow_writeable_chroot=YES

FTPサービスを許可するユーザーを追加しましょう。(※1)

# vi /etc/vsftpd/chroot_list
...
nobody
ken

FTPサービスを許可するユーザーを追加しましょう。(※2)

# vi /etc/vsftpd/user_list
...
nobody
ken

CentOS インストール直後はファイアウォールでFTPを受け付けていないため、FTPサービスを許可する必要があります。

# firewall-cmd --zone=public --add-service=ftp --permanent
# firewall-cmd --reload

vsftpd起動

vsftpdを起動し、サーバー起動時の自動起動も有効にしましょう。

# systemctl start vsftpd
# systemctl enable vsftpd.service

起動しているかどうかを確認しましょう。

# systemctl -t service list-unit-files | grep -i ftp
vsftpd.service enabled

困ったときは

接続出来ない場合、出力されるコードをよく見て対処しましょう。FTPソフトでも出力は表示されます。
たとえば、Windows のFFFTPの場合、下の窓に出力されています。

530 Permission denied.

接続時に 530 Permission denied.が表示されてパスワード入力も表示されないときは
/etc/vsftpd/user_list に接続するユーザーが追加されていません。

500 OOPS: chroot

パスワード入力はされていますが、500 OOPS: chroot が表示されるときは
ログインしたディレクトリ以外もアクセス可能になっていません。
下の1~3のどれかを行う必要があります、3.を設定すると2.のallow_writeable_chrootは効果がありません。
1.ホームディレクトリの書き込み権限を削除する
2./etc/vsftpd/vsftpd.conf に allow_writeable_chroot=YES を追加する
3./etc/vsftpd/vsftpd.conf に chroot_list_enable=YES と chroot_list_file=...を設定する