WindowsとUNIXのユーザー名を結びつけたい

提供:Samba-JP
ナビゲーションに移動検索に移動
KB番号 J0116
最終更新日 2003/01/20
作成者 たかはしもとのぶ
最終更新者 はせがわようすけ

対象

この文書は、以下のプロダクトに付いて説明したものです。

  • Samba 2.2 系列
  • Samba 2.0 系列
  • Samba 2.0.7
  • Samba 2.0.5a 日本語版

説明

Samba マシン上の共有にアクセスするときには、ゲストアクセスを行なうのでない限り、普通は Windows にログオンしたユーザ名でアクセスしていることと思います。 でも、様々な理由でこれが不可能な場合もあります。典型的な例を挙げると、まずは Windows のユーザ名が日本語の場合があります。また Windows 側でスペースの入ったユーザ名を利用している場合なども挙げられます。

Windows NT/2000 を利用している場合は、Samba マシン上の共有にアクセスする際に利用するユーザ名とパスワードを自由に設定できるので、多少不便なのを我慢すれば何とかなりますが、常にログオンしたユーザ名でしかアクセスできない Windows 9x 系を利用しているとこの問題は深刻です。

username map オプション

Samba ではこうした場合の力強い味方として username map というオプションがあります。このオプションでは Windows でのユーザ名と Samba サーバ上でのユーザ名との対応づけを行なうファイル名を指定します。

ファイルの名前や場所は何でも構わないのですが、Red Hat Linux 系のディストリビューションでは /etc/smbusers というファイルが用いられているようです。

この場合 smb.conf での記述は次のようになります。

[global]
    username map = /etc/smbusers

このファイルには、以下のように「=」の左側に Samba のユーザ名を、右側には Windows の対応するユーザ名を記述します。

Windows 側のユーザ名が複数ある場合は、スペースで区切ります。Windows 側のユーザ名がスペースを含むときは、下の例のように「"」文字で囲ってください。なお、Windows 側の仕様上大文字/小文字の区別は無視されます。

従って、例えば以下の例の "Takahashi Motonobu" を "takahashi motonobu" と記述しても同じ結果になります。

# Unix_name = SMB_name1 SMB_name2 ...
monyo = "Takahashi Motonobu"
nobody = guest pcguest smbguest

この設定により、例えば Windows のログオン名が「takahashi motonobu」や「Takahashi Motonobu」の場合、Samba 的には monyo というアカウントからのアクセスだとみなして認証やホームディレクトリへの接続を行なうようになります。

日本語ユーザ名対応

日本語共有名に対応した Samba 2.0.5a 日本語版や、Samba 2.0.7 (オリジナル版を含む)以降では、次のようにこのファイル中に日本語を記述することも可能です。

日本語は必ず Shift_JIS で、以下のように記述してください (注: Samba 2.0.7 以降では coding systemパラメータで指定した文字コードで記述してください)。

monyo = "高橋基信:

ただし、Samba 2.0.7 日本語版リリース 2.2 で試したところ、何故か coding system = EUC/CAP の時はうまく動作しないという現象が発生してしまいました。これについては Samba 2.0.5aJP2 では動作するのでバグとして原因を調査中です。

なお機種依存文字や外字を利用している場合も、Samba 日本語版のリリースによってはうまく動作しない場合もありますので注意してください。

security = server/domainでは利用できず

便利なusername map 機能ですが、問題点を挙げるとすれば、利用できるのが security = user/shareの場合に限られることでしょう。

security = server/domainの場合はクライアントのユーザ名がそのまま認証サーバに送られてしまうようで、うまく動作しません。こちらについても今後の課題として調査していきたいと思います。

この技術情報は「Linux Japan 2001年6月号」の草稿を元に作成されています。