「.」からはじまるファイル名をWindows側から表示させないようにする方法
KB番号 | J0026 |
最終更新日 | 2002/04/02 |
作成者 | たかはしもとのぶ |
最終更新者 |
対象
この文書は、以下のプロダクトに付いて説明したものです。
- Samba 2.2.x
- Samba 2.0.7 日本語版
- Samba 2.0.7
説明
各ユーザ毎の共有を作成する為に [homes] 共有を利用した場合、通常「.」からはじまるファイルが表示されます。これらはUNIX上で動作するアプリケーションが生成した各ユーザ毎の設定ファイルであるため、Windows 上からアクセスした場合に問題が発生する場合があります。
Samba ではこの問題に対処するため、hide dot files というパラメータが存在します。このパラメータはデフォルトでyesになっているため、「.」からはじまるファイルは全て隠しファイルとして扱われています。ただし、Windows 側の Explorer で隠しファイルを表示する設定にした場合は、これらのファイルも表示されるため、根本的な解決にはなりません。 以下、この問題に対処する方法について記述します。
veto files を利用する
veto files オプションで指定されたファイルは、Windows からは完全に不可視になり、アクセスしたり、新規に作成したりることもできなくなります。この方法を利用する場合、以下のように記述します。
[homes] veto files = /.??*/
ただし、veto files オプションを利用するとパフォーマンスが著しく低下します。また上記の指定では、 .a や .~ といった名前のファイルの表示やアクセスは可能なままです。
ただし
[homes] veto files = /.*/
と設定してはいけません。このように設定するとルートディレクトリやカレントディレクトリを示す「.」や「..」もアクセスすることができなくなってしまいます。DOS/Windows の各種 API は、root directory 以外では「.」や「..」が存在しないことを想定していないため、このように設定するとfunction callレベルで支障が生じます。
現在判明している限りでも、Microsoft Office で UNC 形式で Samba 共有上のファイルにアクセスしようとした場合に、共有のルートにあるファイルをアクセスしようとすると、「ディレクトリ名が無効です」というエラーが発生してアクセスすることができないという事象が報告されています。
このように、veto files オプションを用いる場合は、一部のファイル名を隠蔽することができないという問題があります。
Windows 側に提供するホームディレクトリの位置を変更する
どうしてもホームディレクトリ直下を公開しないといけない場合以外は、各ユーザのホームディレクトリ以下に特定の名前のディレクトリ(たとえばsmbdir)を作って、
[homes] path = %H/smbdir
のように指定することで、ホームディレクトリ直下を公開することを避け、結果として「.」ではじまる多数のファイルの公開を避けることができます。