「samba3」の編集履歴(バックアップ)一覧に戻る

samba3 - (2006/12/25 (月) 17:41:53) の編集履歴(バックアップ)



samba2 までは、
[global]
 client code page = 932
 coding system = SJIS/EUC/CAP/HEXなど
の2つのパラメーターを使用してきた。samba2では文字コード変換をsambaが行ってきた。
これをsamba3で設定しても動かないと悩んでいたわけだが、このページの説明を読むと、パラメーター自体が変わった。文字コード変換はOSの標準関数により変換が行われている。
肝心なコマンドはこちら。

[global]
 unix charset = CP932/EUCJP-MS/UTF-8など
 dos charset = CP932
 display charset = CP932/EUCJP-MS/UTF-8など

unix charset: UNIX上のファイルシステムに用いられている文字コード(符号化形式)。ただし、Sambaが内部的に使用する文字コードやsmb.confをはじめとする各種設定ファイルの文字コードも同時に変更される
dos charset: Windows側で利用されている文字コードを指定。日本語を利用する場合は、CP932または同等の文字コードを設定する
display charset: SWATの画面に表示される文字コードを指定。日本語を使用する場合に指定する文字コードは、Sambaのバージョンによって異なる

各パラメータの値には、iconv()関数がサポートする各種ロケール名を指定してください(注)。
iconv()関数の実装により、サポートされているロケール名は異なります。本稿では、GNU libiconvおよびglibc付属のiconv()に前述した日本語対応パッチを適用したものを例に説明します。

日本語ファイル名を用いる場合の典型的な設定は、以下のようになります。
[global]
 unix charset = EUCJP-MS/CP932/UTF-8 
 dos charset = CP932
 display charset = CP932  
Samba 3.0.2以降の場合は、display charsetをunix charsetと同じ値に設定する必要がある。  

■CAPとHEXのサポート
 Samba 2.2系列まではcoding systemパラメータにCAPやHEXといった値があり、広く用いられています。しかし、これらはその性格上iconv()関数ではサポートされないため、Samba 3.0系列のVFS機能を使用してサポートするようになった。
 CAPについては、

[global]
 unix charset    = CP932
[cap_share1]
 vfs objects = cap  

Samba 3.0系列におけるCAP(およびHEX)のサポート   vfs_capモジュールを有効にする。capは必ず小文字で指定すること。なおHEXモジュールがインストールされた環境でHEXを有効にするには、capの代わりにhexと指定すればよい。

のように、unix charsetとしてCP932を指定したうえで共有単位にvfs_capというVFSモジュールを併用することにより実現します。

 HEXについては、Samba本体に同梱されていないため、Samba 3.0国際化プロジェクトの成果物に同梱されているHEXモジュールを使用する必要があります。設定方法などは、CAPと同様です。