vsftpdの設定で謎のエラーにハマった
皆さん
こんにちは、こんばんは
TomoProgです。
今日はTwitterボット用にサーバを設定していたら、vsftpdの設定でハマったのでここに書いておきます。
ちなみにサーバは「Ubuntu14.04 amd-64 LTS」です。
それでは頑張っていきましょう。
vsftpdをインストールする
まずはvsftpdをインストールします。
インストールするには以下のコマンドをターミナルで入力します。
$ sudo apt-get install vsftpd
インストールはこれだけです。
vsftpd.confを設定する
vsftpdのインストールが完了したら、vsftpdの設定ファイルであるvsftpd.confを設定します。
ちなみにvsftpd.confの場所は/etc/vsftpd.confです。
# 書き込み許可(コメント解除) write_enable=YES # アスキーモードの転送許可(コメント解除) ascii_upload_enable=YES ascii_download_enable=YES # ログイン時のバナーメッセージ(コメント解除) # (ログイン時にバージョン情報の表示を行わないように設定) ftpd_banner=Welcome to blah FTP service # chroot許可(コメント解除) chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list # ディレクトリごと一括での転送有効(コメント解除) ls_recurse_enable=YES # FTP接続時のルートディレクトリを設定(追記) local_root=/home/tomoprog/ftp_root # これはよく分からんがとりあえず追記 seccomp_sandbox=NO
ちなみに設定は下記のサイトを参考にさせていただきました。
http://www.server-world.info/query?os=Ubuntu_14.04&p=ftpwww.server-world.info
さて、chroot_list_fileを有効にしたので、指定したリストファイルを作成しておきます。
今回はすべてのユーザのFTPでのルートディレクトリをlocal_rootに指定したディレクトリにしたかったので、空のリストファイルを作成します。
$ sudo touch /etc/vsftpd.chroot_list
すべての設定が終わったので、vsftpdを再起動します。
$ sudo service vsftpd restart
500 OOPSでハマる
さて、設定が終わったので、早速別の端末からFTP接続してみます。
# xxx.xxx.xxx.xxxはFTPサーバのIPアドレスを指定
$ftp xxx.xxx.xxx.xxx
上記のコマンドを入力すると、ユーザとパスワードを求められるので入力します。
すると以下のエラーメッセージが返ってきました。
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
英語とか分からんよ・・・。
というわけでGoogle先生に聞いてみると以下のサイトを教えてくれました。
ftp接続でrefusing to run with writable root inside chrootが出た時の対処法 – ムッシューのIT備忘録
なるほど。
chrootした先に書き込み権限があるとエラーとなるようです。
かと言って書き込み権限を消してしまうとアップロードできないので、vsftpd.confに以下の一行を追記します。
allow_writeable_chroot=YES
これでもう一度FTP接続してみると・・・
230 Login successful. Remote system type is UNIX. Using binary mode to transfer files.
接続に成功しました!!
まとめ
今日はvsftpdを設定してみました。
エラーが出てから、たった1行の追加に2時間かかったのは内緒です。
それではまた。
TomoProg