Windows側で利用できない文字を利用したファイル名の処理
KB番号 | J0043 |
最終更新日 | 2001/05/29 |
作成者 | たかはしもとのぶ |
最終更新者 |
対象
この文書は、以下のプロダクトに付いて説明したものです。
- Samba 2.0.x
概要
UNIXではファイル名に利用することが許されているが、Windowsでは許可さ れていない文字として、以下のようなものがあります。
「"」「*」「/」「:」「<」「>」「?」「\」「|」
これらの文字を Samba がどのように扱うかについて記述します。
詳細
Windows の LFN(長いファイル名) の命名規則では、「"*/:<>?\|」の 9 種の文字を含めることが禁止されていますが、UNIX のファイルシステム上では「/」以外の文字に付いては許容されています。 Sambaの共有にこれらの文字を含むファイル名が存在した場合も、Sambaはそれらの文字列をそのままWindowsに渡してしまいますが、これらの文字を含む LFN を渡された Windows の側では、そういう LFN は無効であるとして SFN (短いファイル名)の方を使います。
これらの文字は LFN に用いることが出来ないのと同時 SFN にも用いることが出来ないため、そういう LFN に対して、Samba は短いファイル名を生成しています。 そのため、LFN も SFN も無効という最悪の事態は避けられますが、Windows 側から本来のファイル名を確認することが不可能な状態になります。
なお、これらのファイル名の扱いについては、 J0031:「:」や「¥」を含むファイル、ディレクトリにアクセスできないという不具合がありますので、こちらも併せて参照してください。
coding system = CAP の場合の「/」文字の処理
coding system = CAP の場合に Macintosh から CAP や Netatalk 経由で書き込みを行なうことで、「/」を含むファイル名を書き込むことも可能になっています。 この「/」文字はCAPのエンコーディング規則に従い、UNIX上では「:2f」に変換されます。
Samba はこの「:2f」という文字列を元にして短いファイル名を生成するので、他のWindows側で利用できない文字を用いたファイル名のファイルと同様、Windows側からSFNを利用してアクセスすることは可能です。
この技術情報は sugj-tech:2586 からの一連のスレッドの議論を元に作成されています。