ftpサーバを立てる

お仕事のWEBサイトを管理することになったので、自宅サーバ(5-55.jp)にVirtualHostを追加することにしました。それ自体はなんら問題はないのですが、自分以外のメンバーにもこのWEBサイトのアップロードができるようにしないといけないので、さて、どうしようかと。ユーザIDを作ってあげて、SSLでリモートログインさせてもいいんだけど、たかがWEBサイトの管理にリモートログインはあまりにも大げさだし、自宅サーバは自分使用前提なので、イントラネット系のセキュリティが甘々で、外部の人に限定的とはいえ公開するのはどうかなぁと。じゃあ、ftpサーバを立てりゃいいじゃん、ということで。

proftpd

Ubuntuというか、最近のLinuxftpサーバというと proftpd が定番のようです。vsftpd というのもあるようですが、今回は proftpd でいくことにします。
早速、apt-get install proftpd といきたいところですが、その前に proftpd でググって「そのままではWindowsクライアントから日本語ファイル名が使えない」という情報を読んでしまったので(知らなきゃそのままインストールして「日本語ファイル名なんて使う方が馬鹿」という対応をしていたと思う、きっと)、その対応を行うためにソースからインストールします。

proftpdのインストール(日本語変換パッチ)の前振り

自宅サーバUbuntu hardy(8.04)なんですが、日本語変換パッチがあるのは gutsy(7.10)です。

Ubuntu hardy(8.04) proftpd-dfsg (1.3.1-6ubuntu1)
Ubuntu gutsy(7.10) proftpd-dfsg (1.3.0-24ubuntu1)

さあ、ここで問題です。proftpd の最新版は 1.3.1 です。1.3.0 からセキュリティ面での対応がされているかもしれません(実際されてます)。どうせ使うなら最新版がいいですよね。選択肢は次の3つです。

  1. 最新版(1.3.1)をそのままインストール。日本語変換はしない。
  2. gutsy版(1.3.0)をインストール。日本語変換パッチを当てる。
  3. 最新版(1.3.1)をインストールして日本語変換パッチを当てる。

3番目を選んだ貴方。ブブー。私と同じです。パッチのなかを見てみると mod_codeconv.c とmod_df.c を追加して、mod_ls.c、netio.c で local2remote()を使うようにしているくらいなので、パッチを当てる場所を変更するくらいでいけるんじゃないのと思って、1.3.1のソースを落としてきて、diffを修正してパッチを当ててみました。ガンガンガンガンとコンパイルが通って、いけるかなと思った最終段階でエラーを吐きやがりました。

/usr/bin/install: cannot stat `.libs/mod_wrap2.so': No such file or directory
make[3]: *** [install] Error 1
make[3]: Leaving directory `/home/mam/proftpd-dfsg-1.3.1/contrib/mod_wrap2'
make[2]: *** [install] Error 2
make[2]: Leaving directory `/home/mam/proftpd-dfsg-1.3.1/modules'
make[1]: *** [install-modules] Error 2
make[1]: Leaving directory `/home/mam/proftpd-dfsg-1.3.1'
make: *** [install] Error 2
dpkg-buildpackage: failure: debian/rules binary gave error exit status 2

mod_wrap2 がうまくコンパイルできていないようです。パッチを当てないでコンパイルすると当然ちゃんとコンパイルされますので、パッチで追加した関数名かなにかが衝突しているのかもしれませんね。
これをやるのが目的じゃありませんので、うまくいかないということが確認できた時点で次の2番目にトライすることにします。
長くなったので、明日に続く。

diffファイルを手で修正するときの注意:
変更のない行は先頭に空白を1つ入れること。エディタでそのままコピーして
貼り付けると、patch: **** malformed patch at line というエラーになる。
(わからなくてしばらく悩んだ)

参考

  1. hardy(8.04)の proftpd-dfsg のページはこちら(→ http://packages.ubuntu.com/ja/source/hardy/proftpd-dfsg )
  2. gutsy(7.10)の proftpd-dfsg のページはこちら(→ Ubuntu – Error )
  3. vsftpdを使う場合はこちら(→ Dapper Drakeでサーバ構築(ssh, ftp, vncとか) - jitsu102's blog )を参考にしてください。