● samba 日本語対応について 1. 目的 日本語対応は、 (1) MS-Windows 上で、漢字ファイル名をどうしても扱う必要のあるアプリケーションがちゃ んと動作する。例えば、MS-WORD 5 などは、インストール時に漢字のファイル名を勝手 につけてしまいます。こういった場合にちゃんと対応できるようにする。 (2) UNIX は、最近ではほとんどのものが 8 bits のファイル名をサポートしていますが、 中には、これをサポートしていないものもあります。このような場合でも、(1)の目的 が満足できるようにする。 を目的としています。そのため、日本語対応は、必要最小限しか行なっておりません。 日本語対応した samba を利用するためには、コンパイルする時に、必ず、KANJI の定義を追 加してください。このオプションを指定していない場合は、日本語のファイル名を正しく扱 うことはできません。(コンパイルについては、下記 3. を参照して下さい) 2. 利用方法 (1) 追加したパラメータ smb.conf ファイルの global セクションに以下のパラメータを設定できるようにしました。 [global] .... coding system = <コード系> ここで指定されたコード系が UNIX 上のファイルシステムのファイル名のコードになります。 設定できるものは、次のようになっています。 sjis: SHIFT JIS (MS 漢字コード) euc: EUC コード hex: 7 bits の ASCII コード以外のコードを以下の形式で表す方式です。例えば、 'オフィス' という名前は、':83:49:83:74:83:42:83:58' のように、':' の後に2桁 の16進数を続ける形式になります。 ここで、':' を他の文字に変更したい場合は、hex の後ろにその文字を指定します。 例えば、@を変わりに使いたい場合は、'hex@'のように指定します。 cap: 7 bits の ASCII コード以外のコードを以下の形式で表す方式という点では hexと同様ですが、CAP (The Columbia AppleTalk Package)と互換性を持つ変換 方式となっています。hexとの違いは0x80以上のコードのみ':80'のように変換 され、その他はASCIIコードで現されます。 例えば、'オフィス'という名前は、':83I:83t:83B:83X'となります。 JIS コードについては、以下の表を参照して下さい。 ┌───┬────┬────┬────┬────┬────┬─────────┐ │指定 │漢字開始│漢字終了│カナ開始│カナ終了│英数開始│備考 │ ├───┼────┼────┼────┼────┼────┼─────────┤ │jis7 │\E$B │\E(J │0x0e │0x0f │\E(J │jis 7単位符号 │ │junet │\E$B │\E(J │\E(I │\E(J │\E(J │7bits コード │ │jis8 │\E$B │\E(J │-- │-- │\E(J │jis 8単位符号 │ │j7bb │\E$B │\E(B │0x0e │0x0f │\E(B │ │ │j7bj │\E$B │\E(J │0x0e │0x0f │\E(J │jis7と同じ │ │j7bh │\E$B │\E(H │0x0e │0x0f │\E(H │ │ │j7@b │\E$@ │\E(B │0x0e │0x0f │\E(B │ │ │j7@j │\E$@ │\E(J │0x0e │0x0f │\E(J │ │ │j7@h │\E$@ │\E(H │0x0e │0x0f │\E(H │ │ │j8bb │\E$B │\E(B │-- │-- │\E(B │ │ │j8bj │\E$B │\E(J │-- │-- │\E(J │jis8と同じ │ │j8bh │\E$B │\E(H │-- │-- │\E(H │ │ │j8@b │\E@@ │\E(B │-- │-- │\E(B │ │ │j8@j │\E$@ │\E(J │-- │-- │\E(J │ │ │j8@h │\E$@ │\E(H │-- │-- │\E(H │ │ │jubb │\E$B │\E(B │\E(I │\E(B │\E(B │ │ │jubj │\E$B │\E(J │\E(I │\E(J │\E(J │junetと同じ │ │jubh │\E$B │\E(H │\E(I │\E(H │\E(H │ │ │ju@b │\E$@ │\E(B │\E(I │\E(B │\E(B │ │ │ju@j │\E$@ │\E(J │\E(I │\E(J │\E(J │ │ │ju@h │\E$@ │\E(H │\E(I │\E(H │\E(H │ │ └───┴────┴────┴────┴────┴────┴─────────┘ いずれの場合も、すでに存在している名前に対しては、漢字の開始終了シーケンスは、以下 のものを認識します。 漢字の始まり: \E$B か \E$@ 漢字の終り: \E(J か \E(B か \E(H (2) smbclient のオプション クライアントプログラムでも、漢字や仮名を含んだファイルを扱えるように、次のオプション を追加しました。 -t <ターミナルコード系> ここで、<ターミナルコード系>に指定できるものは、上の<コード系>と同じものです。 (3) デフォルト デフォルトのコード系は、コンパイル時に決まります。 3. コンパイル時の設定 Makefile に設定する項目を以下に示します。 (1) KANJI フラグ コンパイルオプションに -DKANJI=\"コード系\" を指定します。このコード系は 2. で指 定するものと同じです。例えば、-DKANJI=\"euc\" をFLAGSM に設定すると UNIX 上のファ イル名は、EUC コードになります。ここで指定したコード系は、サーバ及びクライアント プログラムのデフォルトに値なります。 尚、オプション中の \ や " も忘れずに指定して下さい。 3. 制限事項 (1) 漢字コード smbd を動作させるホストの UNIX がサポートしていない漢字コードは、利用できないことが あります。変な動作をするようなら hex の指定をするのが良いでしょう。 (2) smbclient コマンド シフトコードなどの関係で、漢字や仮名を含んだファイル名の ls の表示が乱れることがあり ます。 (3) ワイルドカードについて ちゃんとしたスペックがよくわからなかったのですが、一応、DOS/V の動作と同じ動作を行な うようになっています。 (4) ロングファイル名について Windows NT/95 では、ロングファイル名が扱えます。ロングファイル名を 8.3 フォーマット で扱うために、mangling していますが、この方法は、NT や 95 が行なっている mangling と は異なりますので注意して下さい。 4. 障害等のレポートについて 日本語のファイル名に関して、文字化け等の障害があれば、私にレポートして頂ければ幸いで す。ただし、オリジナルからの問題点や質問については、オリジナルの作者へ直接問い合わせる か、もしくはメーリングリストなどへレポートするようにして下さい。 レポートされる場合、利用されている環境(UNIX 及び PC 側のOSなど)とできましたら設定ファ イルやログなどを添付して頂けると幸いです。 5. その他 コード変換は以下の方々が作られたプログラムを利用しています。 hex 形式 大木@大塚・筑波 氏 cap 形式 疋田 道郎 (michiro@po.iijnet.or.jp)(michiro@dms.toppan.co.jp)氏 その他、たくさんの方々からいろいろと御教示いただきありがとうございました。今後ともよ ろしくお願い致します。 1994年10月28日 第1版 1995年 8月16日 第2版 1995年11月24日 第3版 1996年 5月13日 第4版 藤田 崇 fujita@ainix.isac.co.jp