Coding system = EUC の時に username map ファイル中で日本語ユーザ名が使用できない
KB番号 | J0030 |
最終更新日 | 2001/06/30 |
作成者 | たかはしもとのぶ |
最終更新者 |
対象
この文書は、以下のプロダクトに付いて説明したものです。
- Samba 2.0.9 日本語版リリース1.0
- Samba 2.0.7 日本語版リリース2.2
- Samba 2.0.7 日本語版
- Samba 2.0.7
説明
Samba 2.0.7およびSamba 2.0.5a/Samba 2.0.7日本語版では、ある条件を満たすことで、username map オプションで指定したファイル中で、
monyo = "高橋基信"
のように記述を行なうことでWindows側の日本語のユーザ名をUNIX側のアカウント名にマッピングすることが可能です。詳細はusername map ファイル中での日本語ユーザ名の使用についてを参照してください。
ただし、Samba 2.0.7日本語版リリース2.2以前では、本機能については検証を行なっていません。 そのため、Samba 2.0.5aJP2 では coding system =SJIS/EUC/CAP/HEX いずれの場合もうまく動作しますが、Samba 2.0.7日本語版リリース2.2では、EUCの場合にうまく動作しないという現象が発生しています。
原因
これはSamba 2.0.7の不具合になります。
既にdos_to_unix()関数により、coding system パラメータで指定した符号化コードになったユーザ名を示す文字列に対して、再度dos_to_unix()関数が発行されていたため、符号化コードがEUCの場合は文字化けが発生していました。
なお、SJIS/CAP/HEX の場合も同様のロジックを経由していますが、一度CAP/HEXになった文字列に対して再度dos_to_unix()関数を発行しても、文字列が変更されないため、問題が顕在化していません。
Samba 2.0.7日本語版リリース2.2は以下の暫定パッチにて対応しました。この仕様が問題となる場合はこのパッチをソースに適用した上で、再コンパイルを行なってください。なお、このパッチはSamba 2.0.10日本語版リリース1.0にて統合されました。 またSamba 2.0.7オリジナル版およびリリース2.2以前のSamba 2.0.7日本語版に対しても、同様のロジックを適用することで、この問題を修正することが可能だと考えられます。
この技術情報は sugj-tech:2690 からの一連のスレッドの議論を元に作成されています。