Chapter 20. スタッカブルVFSモジュール

Jelmer R. Vernooij

The Samba Team

John H. Terpstra

Samba Team

Tim Potter

Samba Team

Simo Sorce

オリジナルの vfs_skel README

Alexander Bokovoy

オリジナルの vfs_netatalk 文書

Stefan Metzmacher

複数のモジュールの更新

Table of Contents

特長と便益
検討
含まれるモジュール
audit
extd_audit
fake_perms
recycle
netatalk
他で入手可能な VFS モジュール
DatabaseFS
vscan

特長と便益

Samba-3 より、スタッカブル VFS (ヴァーチャル・ファイル・システム) モジュールがサポートされます。 Samba は UNIX ファイルシステムへのアクセス・リクエストの一つ一つをロードされた VFS モジュールに通します。 この章は、Samba のソースとレファレンスに付いてくるすべてのモジュールと、 一部の外部モジュールについて説明します。

検討

異なるシステムでは異なる方法で共用ライブラリーをコンパイルしリンクするので、 これらのモジュールが、 プラットフォーム分散バイナリー Sambaパッケージと共に供給されない場合、 モジュールをコンパイルするのが困難になるかもしれません。 これらのモジュールは、GNU/Linux 及び IRIX に関してテスト済みです。

VFS モジュールを使用するには、以下の例に類似した共有を作成してください。 重要なパラメーターは、一つ以上のVFSモジュールを名前でリストできる vfs objects パラメータです。 例えば、ファイルへのアクセスをすべてログに取り、 削除されたファイルをゴミ箱に入れるには、 次の設定を参考にしてください:

Example 20.1. VFS モジュールを使用する場合の smb.comf

[audit]
comment = Audited /data directory
path = /data
vfs objects = audit recycle
writeable = yes
browseable = yes

モジュールは指定された順に使用されます。 例えば、ウィルス・スキャナー・モジュールとゴミ箱モジュールを両方持ちたいとします。 この場合、ファイルに関して他のアクションが取られる前に、 最初にウィルスを検知するように、 ウィルス・スキャナー・モジュールを最初のモジュールとし、 このモジュールが最初に走るようにするべきでしょう。 vfs objects = vscan-clamav recycle

Sambaは、Samba 実装のルート・ディレクトリー内の /lib ディレクトリからモジュールをロードしようとします。 (通常、/usr/lib/samba/vfs または /usr/local/samba/lib/vfs)

幾つかのモジュールは同じ共有に関して二度使用できます。 これは、以下の例に示すような設定を用いることによって可能になります。

Example 20.2. 複数の VFS モジュールを使用する場合の smb.conf

[test]
comment = VFS TEST
path = /data
writeable = yes
browseable = yes
vfs objects = example:example1 example example:test
example1: parameter = 1
example: parameter = 5
test: parameter = 7

含まれるモジュール

audit

syslog 機能へのファイル・アクセスを監査するシンプルなモジュールです。 以下のオペレーションのログを取ります:

  • share
  • connect/disconnect
  • directory opens/create/remove
  • file open/close/rename/unlink/chmod

extd_audit

このモジュールは、 上記の audit モジュールとほぼ同じですが、 異なる点は、監査ログを syslog と smbd のログの両ファイルに送ることです。 このモジュールの log level は smb.conf ファイルで設定します。

有効な設定と記録される情報内容を下表に示します。

Table 20.1. 拡張監査ログの情報内容

ログ・レベルログ内容 - ファイルとディレクトリ・オペレーション
0Creation / Deletion
1Create / Delete / Rename / Permission Changes
2Create / Delete / Rename / Perm Change / Open / Close

fake_perms

このモジュールは、 (UNIX での Samba サーバーで) 移動プロファイルのファイルとディレクトリを読み込み専用に設定することができるようにするために作成されました。 このモジュールは、 プロファイルの共有にインストールされている場合、 プロファイル のファイルとディレクトリが書き込み可能であると、 クライアントに知らせます。 これにより、 クライアントがログアウトまたはシャットダウンした時に、 ファイルは上書きされませんが、 クライアントのニーズは充足します。

recycle

ゴミ箱と同様のモジュールです。 使用すると、リンク切断のリクエストを拾って、 ファイルを削除する代わりにゴミ箱のディレクトリに移します。 これは Windows のコンピューターにおけるゴミ箱の機能と同じです。

ゴミ箱は、 Windows エクスプローラー のネットワーク・ファイル・システム (共有) のビューにも、 マッピングされたドライブのいずれのビューにも出ません。 その代わり、.recycle というディレクトリが、 初めてファイルを削除したときに自動的に作成されます。 ユーザーは、.recycle のディレクトリからファイルを取り戻すことができます。 recycle:keeptree が設定されている場合、 削除されたファイルは、 ファイルが削除された元の場所と同一のパスから、 見つけることができます。

recycle モジュールがサポートするオプションは以下の通りです:

recycle:repository

削除されたファイルの移動先であるディレクトリの関連パス。

recycle:keeptree

ディレクトリ構造を維持するか、それとも、 削除されたファイルはゴミ箱に別に保存するかを指定します。

recycle:versions

このオプションを設定すると、 同名の二つのファイルが削除されたとき、 二つとも別のファイルとしてゴミ箱に保存します。 より新しい方の削除ファイルは “Copy #x of filename” という名称で保存されます。

recycle:touch

ファイルがゴミ箱に移されたときに、 ファイルのアクセス日を変更するかどうかを指定します。

recycle:maxsize

このパラメーターで指定したバイト数を超える大きさのファイルは、 ゴミ箱に入れません。

recycle:exclude

ゴミ箱に入れないで、 普通に削除するべきファイルをリストします。

recycle:exclude_dir

ディレクトリのリストを持ちます。 これらのディレクトリからファイルが削除されると、 ゴミ箱には入れずに、普通に削除します。

recycle:noversions

recycle:versions の反対です。 二つのオプションを両方設定している場合は、 こちらのオプションが優先されます。

netatalk

netatalk モジュールは、 Samba と netatalk のファイル共有サービスの共存をやり易くします。

従前のnetatalkモジュールと比較した長所は以下の点です:

  • .AppleDouble フォークの作成を気にかけず、ただ同期を取ります。

  • smb.conf の中の共有が「隠し」または「拒否」リスト中に .AppleDoubleのアイテムを含まないとき、自動的に追加されます。

他で入手可能な VFS モジュール

このセクションには、ネット上に載っているけれども、 Samba CVS ツリーには何らかの理由 (例えば、管理者が独自の CVS ツリーを持つ方が管理しやすいなどの理由) で、 現行含まれない各種の VFS モジュールを一覧します。

ここに言及したからと言って、 そのモジュールの安定性や機能性の良し悪しを示唆したとは解釈しないでください。

DatabaseFS

URL: http://www.css.tayloru.edu/~elorimer/databasefs/index.php

By Eric Lorimer.

私は、かなり完成された読み込み専用のファイルシステムを実現する VFS モジュールを作成しました。 これは、モジュール式あるいは一般的な方式のファイルシステムであるデータベースからの情報を表示し、 異なるデータベースを使用できるようにしています。 (元々は、“アーティスト”、 “歌詞のキーワード”などのディレクトリで MP3 ファイルを整理するために設計されたものです。 これを私は、学生名簿データベースに応用しました。) ディレクトリの構造はデータベース自体の中に保存されており、 その表を確認するプログラムが走りますが、それ以外に、 データベース構造に関して何らかの推定をすることはしません。

フィードバックを歓迎します。 コメント、提案、パッチ、その他何でもお送り下さい。 他に何の役にも立たなくても、 最低、 誰かが仮想ファイルシステムを作成したい場合にお役に立てることを祈っています。

vscan

URL: http://www.openantivirus.org/

Samba-vscan は、 Samba 2.2.x/3.0 alphaX の VFS (ヴァーチャル・ファイルシステム) の特長を活かした、 Samba のためのコンセプト実証 (POC) モジュールです。 もちろん、Samba が、VFS サポートを入れてコンパイルされていなければなりません。 samba-vscan は、 各種のウィルス・スキャナーをサポートします。 Rainer Linkがメンテナンスを行っています。