Kodama's home / tips.

shfs 利用メモ, ssh による安全なファイル共有

shfs とは何か?

ssh プロトコルでファイル共有を実現するネットワークファイルシステムです.
  1. NFS のように使えるネットワークファイルシステムです.
  2. ssh プロトコルを用いているので(NFSよりも)比較的安全に使用できます.
  3. ssh でログインできるなら, ファイル共有を実現できます.
  4. サーバ側は単なる ssh サーバで充分です.

インストール

deb や rpm でコマンド一発の方はそちらでどうぞ. 以下はソースからのインストールです.

shfs kernel module のソースを取得する. 以下は shfs-0.35 のインストールの例.

まず展開する

shfs-0.35/docs/html/ に解説文書があるので, 読みましょう.
$ tar zxvf shfs-0.35.tar.gz
$ ls shfs-0.35/docs/html
Makefile*  images/      install.html*    shfs.css*
faq.html*  index.html*  internals.html*  shfsv4.css*
ちゃんと読むと,この文書のここから下は不要になりますね.

カーネルソースの確認

カーネルソースをインストールしておくこと. shfs をカーネルモジュールとしてコンパイルするので, 現在使用中のカーネルのソースが必要となる. 具体的には以下のような事:

GCC の版の確認方法:

$ gcc --version
gcc (GCC) 3.4.1

$ cat /proc/version 
Linux version 2.4.30 (root@guppy) (gcc バージョン 3.4.1) #2 2005年 4月10日 (日) 04:32:02 JST

コンパイルする

$ cd shfs-0.35
$ make    (コンパイルする)

動作確認する

$ su
Password:
# /sbin/insmod shfs/shfs.o   (shfsモジュールを読み込む)
# shfsmount/shfsmount localhost:/tmp  /mnt 
      shfsmountのテスト (注. localhost が ssh サーバになっているとする.)
root@localhost's password:    (rootのパスワードを入力)
# mount   (マウントを確認する.)
....略
localhost:/tmp on /mnt type shfs (version=2,mnt=/mnt,fd=4)
# ls /mnt
....略     (/tmp と同じ物が /mnt に見えているはず.)
# umount /mnt   (確認できたらアンマウントする.)

インストールする

# make install
# depmod -a
これで完了.
  1. Debian系のためには make deb があります
  2. RedHat系のためには make rpm もあります.

アンインストールする

問題があるなら削除する.
# make uninstall
# depmod -a

インストールの代案

上では module としてコンパイルして insmod したが, カーネルに組み込むこともできる.

# ls shfs-0.35/shfs
Linux-2.4/  Linux-2.6/  Makefile
# cd shfs-0.35/shfs/Linux-2.4  (使用するカーネルの版のためのディレクトリに移動)
# make patch
以下, カーネルを再構築すると良い.

使用方法 1

192.168.10.2 の/tmpを/mntにマウントするには, root で以下のコマンドを実行する.
# shfsmount 192.168.10.2:/tmp /mnt
root@192.168.10.2's password: ←rootのパスワードを入力
同じ事を mount コマンドでもできる.
# mount -t shfs 192.168.10.2:/tmp /mnt

使用方法 2

接続先(192.168.10.2) の ユーザ(kodama) の権限で ~kodama を/mntにマウントするには, root で以下のコマンドを実行する.
# mount -t shfs kodama@192.168.10.2 /mnt
kodama@192.168.10.2's password: 
# ls -l /mnt/public_html/tips*
-rw-r--r--    1 root   root     2073  6月 13日  11:01 /mnt/public_html/tips-AKS-prime.html
-rw-r--r--    1 root   root     2361  6月 13日  11:01 /mnt/public_html/tips-APRCL-prime.html
....略
しかし, これでは, 手元では root 権限で見える事になってしまう.

使用方法 3

接続先(192.168.10.2) のユーザ kodama のホームディレクトリを, 手元のマシンの ユーザ kod の所有としてマウントする例. この作業自体は root で行う.
# mount -t shfs -o nocache,rw,stable,uid=kod  kodama@192.168.10.2 /mnt
kodama@192.168.10.2's password: 
# ls -l /mnt/public_html/tips*
-rw-r--r--    1 kod   root    2073  6月 13日  11:01 /mnt/public_html/tips-AKS-prime.html
-rw-r--r--    1 kod   root    2361  6月 13日  11:01 /mnt/public_html/tips-APRCL-prime.html
....略

Kodama's home / tips.