Vine Linux 4.2 でcurlftpfsを使ってみる

最近はVPNやNASなどの一般化によりファイル共有の利便性が向上してきましたが、ftpなどの昔ながらのサービスは使いにくさが否めません。そこで、ftpを直感的なファイル共有へと仮想化するユーティ リティが求められました。それがcurlftpfsです。

通常、curlftpfsも各Linuxディストリビューションのパッケージ管理システムを利用してインストールしてしまえば事もないのですが、 残念ながら個人的に使用しているVine Linuxにはcurlftpfsが採用されておらず、独自にインストールすることになりました。以下はそのときのtipsと記録です。

以下は、Vine Linux 4.2 フルインストールの環境下で検証されています。


1. 概要
2. 設定と初期導入パッケージ
3. fuseのインストール
4. curlftpfsのインストール
5. curlftpfsの使用法
6. まとめ

1. 概要

curlftpfsは、ftpをファイルシステムの一部としてmountするサービスです。簡単に言えばsmbmountのftp版です。 curlftpfsはユーザースペースファイルシステムにより実装されており、ファイル操作のリクエストは、一旦、kernelのfuseを経由してユー ザースペースに戻され、戻されたユーザースペースでリクエストされたファイル操作が実行されます。

つまり単純には、curlftpfsは、kernelのfuseを有効化することとcurlftpfsのインス トールをもって利用可能となるのですが、curlftpfsはfuseライブラリ及びcurlライブラリを利用しているため事前にそれらのライブラリを導 入する必要があります。

Vine Linux 4.2の場合、curlのみaptにより導入可能なので、以下ではkernelのfuseを有効にし、curlをaptでインストールした後、fuseラ イブラリをrpm化しインストール、最後にcurlftpfsをrpm化してインストールするという流れになります。

2. 設定と初期導入パッケージ

まずはkernelのfuseを有効化します。 Vine Linux 4.2の場合は、fuseはmodule化されているのでfuse.koをロードしてやります。

#modprobe fuse

rc.localなどで起動時に実行されるようにしておくと面倒がないです。なお、fuseでは/dev/fuseが用いられますので適当な権限を付与する必要があります。ここではセキュリティを気にしないことにして

#chmod 666 /dev/fuse

としておきます。この処置は一度実行すれば以後有効となります。

次にcurlをインストールします。開発用も必要なのでcurl-develでインストールします。 curlftpfsのリビルドにはglib2-develも必要なので併せてインストールします

#apt-get install curl-devel glib2-devel

これで第一段階は終了です。

3. fuseのインストール

ここで取り上げるfuseはkernelのfuseを利用するためのライブラリであってkernelのfuseとは異なります。fuseのインストールは、まずfuseをhttp://fuse.sourceforge.net/ よりダウンロードし(ここでは、2.7.3で検証されています)、rpm/SOURCEへコピーします。さらにfuse.specをrpm/SPECにコピーし、ビルドします。このビルドでは、fuseとfuse-develが作られますが、curlftpfsをビルドするには二つともインストールする必要があります。

$cp fuse-2.7.3.tar.gz  rpm/SOURCE/
$cp fuse.spec rpm/SPEC/
$rpmbuild -bb rpm/SPEC/fuse.spec

ビルドが終了したら、普通にインストールします

$su
#rpm -Uvh rpm/RPM/i386/fuse-2.7.3-1pe3.i386.rpm rpm/RPM/i386/fuse-devel-2.7.3-1pe3.i386.rpm

4. curlftpfsのインストール

curlftpfsをhttp://curlftpfs.sourceforge.net/よりダウンロードし(ここでは、0.9.1で検証されています)、rpm/SOURCEへコピーします。さらにcurlftpfs.specをrpm/SPECへコピーし、ビルドします。

$ cp curlftpfs-0.9.1.tar.gz  rpm/SOURCE/
$ cp curlftpfs.spec rpm/SPEC/
$ rpmbuild -bb rpm/SPEC/curlftpfs.spec

ビルドが終了したら、普通にインストールします
$ su
# rpm -Uvh rpm/RPM/i386/curlftpfs-0.9.1-0pe4.i386.rpm

5. curlftpsの使用法

curlftpfsの使用法は、もっとも普通には、

$ curlftpfs ftp://ftp.example.com mnt -o user=username:userpassword

とすることで、これによりマウントポイントmnt以下にftpログインのホームディレクトリ以下が マウントされることになります。詳細については、man curlftpfsしてください。

上記コマンドの問題点としてはpsなどでパスワードが見えてしまうことです。使用の端末を自分しか使っていない場合は特に問題はないでしょうが、セキュリ ティを気にする場合は対策が必要です。例えば、-o user=username:userpassword を使わずに.netrcでユーザー名やパスワードを教えてやる方法などがあります。

アンマウントするには、fusermount -u で対象のディレクトリを指定します。

$ fusermount -u mnt

6. まとめ

以前は、ftpを利用するにはftpクライアントを使うのが一般的でしたが、 curlftpfsを導入してみるといちいちftpコマンドを意識する必要がなくなり、なかなか快適です。dfなどでデバイスの情報が表示されない(無関 係な定数として表示される)のがもどかしかったりしますが、実用上は問題がないのでよしとしましょう。

なにはともあれ、OSにおけるもっとも可視的な部分はなにかと言えば、それはファイルシステムなのではないかと思います。それを扱いやすいユーザースペー スから仮想的にでも操作できるというFUSEはなかなかおもしろく、kernelを学ぶとっかかりとしても適しているのではないかと思います、と言うか、 とっかかりにして勉強してみたいです。


最終更新日 2008月5月11日
yoshino@rita.karing.jp

戻る index.html