Coding system = EUC の時に username map ファイル中で日本語ユーザ名が使用できない

提供: Samba-JP
J30から転送)
移動先:案内検索
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日本語版に対しても、同様のロジックを適用することで、この問題を修正することが可能だと考えられます。

samba-2.0.7-ja-2.2_username-map.patch

この技術情報は sugj-tech:2690 からの一連のスレッドの議論を元に作成されています。