
〜 Samba 3.0のインストールと国際化の現状 〜
たかはしもとのぶ <monyo@home.monyo.com>
2004/5/19
国際化機能と文字コードサポート
われわれ日本人にとって最も影響の大きい点として、日本語を含む文字コード関連パラメータの変更が挙げられます。Samba 2.2系列までは、いわゆる文字コード(符号化形式)の変換をSamba自身が行っていました。Samba 3.0系列では、Unicode(UCS-2、UTF-8)やCP850など一部の文字コードを除き、標準的なiconv()関数を利用するように実装が大幅に変更されています。
Samba 2.2系列までは日本語を正しく扱うため、
[global] |
という2つのパラメータを適切に設定する必要がありました。一方、Samba 3.0系列では従来のパラメータは廃止され、代わって新しく追加された、
[global] |
という3つのパラメータを使って文字コードを制御します。これはそれぞれ表2のような意味を持っています。
| unix charset | UNIX上のファイルシステムに用いられている文字コード(符号化形式)。ただし、Sambaが内部的に使用する文字コードやsmb.confをはじめとする各種設定ファイルの文字コードも同時に変更される |
| dos charset | Windows側で利用されている文字コードを指定。日本語を利用する場合は、CP932または同等の文字コードを設定する |
| display charset | SWATの画面に表示される文字コードを指定。日本語を使用する場合に指定する文字コードは、Sambaのバージョンによって異なる |
| 表2 文字コード関連パラメータ | |
各パラメータの値には、iconv()関数がサポートする各種ロケール名を指定してください(注)。
| 注:iconv()関数の実装により、サポートされているロケール名は異なります。本稿では、GNU libiconvおよびglibc付属のiconv()に前述した日本語対応パッチを適用したものを例に説明します。 |
日本語ファイル名を用いる場合の典型的な設定は、以下のようになります。
[global] |
||||||
日本語ファイル名を用いる際の典型的な設定
|
■CAPとHEXのサポート
Samba 2.2系列まではcoding systemパラメータにCAPやHEXといった値があり、広く用いられています。しかし、これらはその性格上iconv()関数ではサポートされないため、Samba 3.0系列のVFS機能を使用してサポートするようにしました。
CAPについては、
[global] |
|||
Samba 3.0系列におけるCAP(およびHEX)のサポート
|
のように、unix charsetとしてCP932を指定したうえで共有単位にvfs_capというVFSモジュールを併用することにより実現します。
HEXについては、Samba本体に同梱されていないため、Samba 3.0国際化プロジェクトの成果物に同梱されているHEXモジュールを使用する必要があります。設定方法などは、CAPと同様です。
■移行の際の注意点
技術的な理由により、Samba 2.2系列とSamba 3.0系列とでは、一部の機種依存文字でマッピングされる位置が異なります(注)。
| 注:ただし、これはあくまでglibcやGNU libiconvに含まれるiconv()関数の実装についての話です。理論上は、すべてのiconv()関数が該当するとは限りません。 |
単純にSambaをバージョンアップした場合、表3に該当する機種依存文字を使っているファイル名があると、ファイルにアクセスできなくなるといった問題が発生する可能性があります。
|
Samba 2.2系列
|
Samba 3.0系列
|
|||||
|
文字
|
SJIS
|
EUC
|
EUC3
|
CP932
|
EUCJP-MS
|
|
| 0xFA4A | 0xADB5 | 0x8FF3FD | 0x8754 | 0xADB5 | ||
| 0xFA4B | 0xADB6 | 0x8FF3FE | 0x8755 | 0xADB6 | ||
| 0xFA4C | 0xADB7 | 0x8FF4A1 | 0x8756 | 0xADB7 | ||
| 0xFA4D | 0xADB8 | 0x8FF4A2 | 0x8757 | 0xADB8 | ||
| 0xFA4E | 0xADB9 | 0x8FF4A3 | 0x8758 | 0xADB9 | ||
| 0xFA4F | 0xADBA | 0x8FF4A4 | 0x8759 | 0xADBA | ||
| 0xFA50 | 0xADBB | 0x8FF4A5 | 0x875A | 0xADBB | ||
| 0xFA51 | 0xADBC | 0x8FF4A6 | 0x875B | 0xADBC | ||
| 0xFA52 | 0xADBD | 0x8FF4A7 | 0x875C | 0xADBD | ||
| 0xFA53 | 0xADBE | 0x8FF4A8 | 0x875D | 0xADBE | ||
| 0xFA59 | 0xADE0 | 0x8FF4AC | 0x8782 | 0xADE0 | ||
| 0xFA5A | 0xADE4 | 0x8FF4AD | 0x8784 | 0xADE4 | ||
| 0xFA58 | 0xADEA | 0x8FF4AB | 0x878A | 0xADEA | ||
| 表3 問題が発生する文字の一覧 | ||||||
| 出典:Samba 2 日本語版の日本語ファイル名の Samba 3 への移行方法(http://www.miraclelinux.com/technet/samba30/migration.html) |
これらの文字を使用している場合は、移行に際してファイル名の移行作業を行う必要があります。移行方法の1つは、一度問題のファイルをWindows上にコピーし、Sambaのバージョンアップ後に、再度Samba上の共有に書き戻すというものです。
サーバ側でファイル名の変換を行う場合は、Samba 3.0国際化プロジェクトが提供しているSMBCHARTOOL 3.0を用いるか、同等の機能を持つスクリプトを作成して、ファイル名の移行を行ってください。
・SMBCHARTOOL 3.0http://www.miraclelinux.com/technet/samba30/migration.html#04
SMBCHARTOOL 3.0を用いる場合は、
$ smbfnconv -f euc3 -t eucjp-ms |
||||||
SMBCHARTOOLの使用例
|
のようにすることで、サーバ上のファイル名を移行可能です。
SMBCHARTOOLの詳細な使用方法は、
・Samba 2 日本語版の日本語ファイル名の Samba 3 への移行方法http://www.miraclelinux.com/technet/samba30/migration.html
を参照してください。
Samba 3.0系列では、Samba日本語版で実装されたSWATの国際化機能が統合されました。これにより、Samba 3.0.1以降では標準で画面1のようにSWAT画面の日本語表示が実現されています。
![]() |
| 画面1 SWATの日本語画面 |
日本語が適切に表示されるようにするためには、前述したとおりdisplay charsetパラメータの値を
- Samba 3.0.1まではCP932
- Samba 3.0.2以降はunix charsetパラメータと同じ値
に設定する必要があります。
Samba 3.0.2以降の変更は、Samba Teamがこの機能を十分に理解していないことが原因であり、筆者としてはバグだと考えています。また、本来この機能はWebブラウザが送出するAccept-Languageヘッダの値(のみ)を参照して、動的に表示する言語を変更するべきものでした。しかし、当時の筆者の誤解などもあり、現状はdisplay charsetパラメータを静的に設定する必要があるので、結果として中途半端な実装になっています。そのため、今後もバージョンアップに伴って設定方法を変更する可能性が高いと考えています。
この機能を使用したくない場合は、デフォルトでsmb.confと同じディレクトリにインストールされる*.msgファイルを削除してください。また、このファイルから生成されるlang_<言語名>.tdbファイル(日本語の場合はlang_ja.tdb)がある場合は(注)、それも削除してください。
| 注:このファイルは、デフォルトでは/usr/local/samba/var/locksディレクトリに生成されます。 |
なお、SWAT国際化とは直接関係ありませんが、Samba 3.0.3まではSWATのPASSWORD画面からのアカウント作成やパスワード変更などが正しく機能していませんでした。この点については、Samba 3.0.4で修正されていることを確認しています。
地味ながら大きな変更点として、ネットワーク上を流れる文字コードが、Windows 9x系列と同じシフトJISなどの各国の文字コードから、Windows NT系列と同じくUnicode(UCS-2)になったことが挙げられます(図1)。
Samba 2.2系列まではシフトJISで送信が行われていましたが、Windows 9x系とWindows NT系とで一部の文字について送信される文字コードが異なるという問題がありました。そのため、Samba日本語版では非常にトリッキーな手段を使ってSamba側で対応せざるを得ませんでした。
今回のUnicode化により、この問題は自然消滅するはずです。また、ASCII以外のファイル名はUnicodeでの通信のみで対応しているSMBクライアント(Mac OS XのSMB機能など)からの日本語利用も可能になります。
![]() |
| 図1 Sambaで用いられる文字コード |
|
3/3
|
|
||||||
|
||||||
| Linux Square全記事インデックス |
| Linux Squareフォーラム サーバ構築・運用関連記事 |
| 連載:Heartbeatでかんたんクラスタリング(連載中) オープンソースソフトウェアの「Heartbeat」を使ってHAクラスタを実現し、サービスを「落とさない」仕組みを実現します |
|
| 特集:Apache 2.2でWebサイトをパフォーマンスアップ! 最新安定版Apache 2.2は、何が変わったのか? 最新のApacheを新機能の使い方とともに解説する |
|
| 連載:実用 Apache 2.0運用・管理術(全8回) 本連載では、Apache 2.0の運用や管理方法を解説する。まず必須設定と基本的なセキュリティ対策を行い今後の運用に備える |
|
| 連載:実用
BIND 9で作るDNSサーバ(全15回) 本連載では、BIND 9の構築/運用方法を解説していく。実際に役立つことを目的に、セキュリティや大規模運用などのテーマを取り上げていく |
|
| 連載:実用qmailサーバ運用・管理術(全14回) 本連載を通して、qmailによるメールサーバの高度な構築・運用・管理術を紹介。SPAM対策やML管理からサーバでのウイルスチェックなどまで |
|
| 特集:Samba
3.0の全貌 改訂版 Samba 3.0リリースから8カ月。ここであらためて、Samba 3.0系列の新機能、インストール方法、国際化の現状を解説する |
|
|
TechTargetジャパン
- OSSライセンスの採用傾向に「変化」あり (2012/5/21)
OSS普及の一翼を担ってきたライセンス、GPLファミリー採用の割合が減少傾向にあるそうです。いったいどうして? - ここからFirefoxの反撃が始まる (2012/3/12)
2月のLinux SquareのランキングではFirefoxの記事がダントツのページビューを集め、トップに立ちました - CMakeでMySQLをビルドしてみる (2012/3/8)
ここまでの作業でCMakeを使う準備が整いました。今回はひとまずMySQLをビルドしてみます - MySQLのビルドに欠かせないCMakeを準備する (2012/3/2)
今回は、MySQLをビルドするために欠かせないツール「CMake」をインストールし、使う準備をします
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -


