Ubuntu 14.04 LTSにFTPサーバを導入する

Ubuntuのローカルで作業していてふと疑問に思ったことがあって、

FTPでlocalhostにファイルをアップしたいんだけど

って疑問。そりゃ当たり前に出来るんだろうけどどうやってやるのかわからないので調べてみた。
ローカルでテスト構築しているWORDPRESSでプラグインをインストールしようとすると接続情報がどうたら言われるしね。

まずはVSFTPDってのを入れないといけないみたい。
普段レンタルサーバーを使ってるんだけどFTPのアカウントはこんな感じだからFilezillaとかからこんな風に繋げてねっていう設定があるんだけど自分でローカルに用意したサーバーにつなげるにはFTPの機能自体をインストールする所から。
実際にやっていく。

sudo apt-get install -y vsftpd

こんな感じ。 -yオプションって何?って感じだけどすべての質問にy(YES)で答える
ということだと自分では覚えている。

T61とか今時使ってる奴いたのかよ的な意味で低スペックがバレてしまったところで
実際に設定する。

vi /etc/vsftpd.conf

viなんておしゃれぶったものを使って

</dt>
<dd>set number

で行番号を表示する。

すると29行目に

</p>
<h1>write_enable=YES</h1>
<p>

とあるのでコメントを解除する。

write_enable=YES

これによって「書き込み」(FTPサーバにファイルをアップ)が可能になる。

続いてアスキーモード転送(ファイルの改行コードを変換してアップロードする)を許可する
自分の環境では97行目、98行目にあったので

</p>
<h1>ascii_upload_enable=YES</h1>
<h1>ascii_download_enable=YES</h1>
<p>

↓こちらもコメント解除

ascii_upload_enable=YES
ascii_download_enable=YES

さらに120行目にあるchrootを有効にする。
chrootとは指定したサブディレクトリをルートディレクトリ(/)として扱うコマンドであり、
chrootを有効にすると、そのプロセスと全ての子プロセスはそれより上の階層に移動できなくなります。ftpユーザのホームディレクトリを設定するために有効化。
chroot_list_enableも有効にしてchrootに関する設定をlistで行えるようにします。
↑何言ってんだこれイミワカンナイって人も設定しておこう。
要するに「上層ディレクトリにアクセスさせない制限」を設定しているのです。
デフォルトではrootでのログインは禁止にして(サーバ側で)ftp専用ユーザの作成をした方が安全だしね!っていう。

</p>
<h1>chroot_local_user=YES</h1>
<h1>chroot_list_enable=YES</h1>
<p>

↓コメント解除

chroot_local_user=YES
chroot_list_enable=YES

123行目でchrootリスト指定。このリストに記述のあるユーザー群だけが FTP アクセスできる。

</p>
<h1>chroot_list_file=/etc/vsftpd.chroot_list</h1>
<p>

↓コメント解除

chroot_list_file=/etc/vsftpd.chroot_list

続いて129行目で「ディレクトリごと一括での転送有効」にする。これが無いと不便やね。

</p>
<h1>ls_recurse_enable=YES</h1>
<p>

↓コメント解除

ls_recurse_enable=YES

さてここでchrootのルートディレクトリ指定をしていかなければならないので
(指定しない場合はユーザーのホームディレクトリ直下になる)

local_root=/var/www/html

なんて感じで適当に最終行に指定しておく。
その適当に指定した/var/www/htmlディレクトリが存在しないとログインできないので注意。
存在するディレクトリを指定しよう。(Ubuntuではこれが標準だっけ?)

システムコールが実行できる/できないを設定できる項目として
linuxカーネルの3.5から入った機能「seccomp」のfilterをオフにする為に追記

seccomp_sandbox=NO

chrootのリストを作る。上の階層へ移動を許可するユーザーをここに1行ずつ書き込んでいく。

vi /etc/vsftpd.chroot_list

ここまで設定出来たらVSFTPDを再起動。

initctl restart vsftpd

さてやっと本題のFTPユーザーとパスワードでログインするよ!

vsftpd.chroot_listには"T61″と書いておきました。
このPCのログインユーザー名/パスワードでログインします。

さーて実験。

ドキドキ。

つながったあああああああああ

もちろんWORDPRESSも管理画面からプラグインをインストール出来ました。

これでコメダ珈琲などでT61を開きつつドヤ顔でローカルのWORDPRESSの編集を披露できますね。
お昼の優雅なティータイムを満喫しているおばちゃん達に「キャーあの人Ubuntu14.04LTSでFilezillaでローカルにFTP接続してるー!素敵!」みたいに羨望の目で見られることまちがいなしですね。

Linux

Posted by bistro