FreeBSD の ja-samba-2.2.2.j1.0 を PDC にしたとき Windows 2000 がドメインに参加できない

提供:Samba-JP
J600から転送)
ナビゲーションに移動検索に移動
KB番号 2003/01/27 15:51:27
最終更新日 中治 弘行
作成者
最終更新者

対象

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

  • FreeBSD の ports/packages システムを利用してインストールしたja-samba-2.2.2.j1.0

現象

FreeBSDにja-samba-2.2.2.j1.0をインストールし、The Samba 2.2 PDC HowToを参考に次の手順を実行すると、Windows2000がドメインに参加できず、エラーになる。

1. smb.confの[global]セクションを以下のようにする。

     [global]
             coding system = CAP
             client code page = 932
             workgroup = WORKGROUP
             server string = Samba %v on %h
             encrypt passwords = Yes
             map to guest = Bad User
             log level = 2
             log file = /var/log/log.%m
             max log size = 500
             socket options = TCP_NODELAY SO_RCVBUF=8576 SO_SNDBUF=8576
             logon script = %U.bat
             logon home = \\%N\%U\profile
             domain logons = Yes
             wins support = yes
             domain master = Yes
             local master = Yes
             preferred master = Yes
             os level = 65
             veto files = /*.eml/*.nws/riched20.dll/*.{*}/httpodbc.dll/
             dos filetime resolution = Yes
             fake directory create times = Yes

2. Windows2000のホストアカウントを/etc/passwdに追加する

     win2000$:*:2000:3000:User &:/nonexistent:/sbin/nologin

     あらかじめ、専用のgidを作成しておく。

     machine:*:3000:

3. ホストアカウントをsmbpasswdに追加

     smbpasswd -a -m win2000$

4. rootのsmbpasswdを設定する

     smbpasswd -a root

5. win2000にAdministratorでログオンし、マイコンピュータのプロパティから「ネットワークID」タブを選択、プロパティボタンを押して、「次のドメイン」欄の「ドメイン」をチェック、ドメイン名に WORKGROUP を記入し、OKを押した。

6. 「ドメインのユーザー名とパスワード」ダイアログで、ユーザー名にroot、パスワードに 4. で設定した root のパスワードを入力し、OK を押した。

7. 「ドメイン "WORKGROUP" に参加中に次のエラーが発生しました:リモートプロシージャコールに失敗しました。」というエラーダイアログが出て、ドメインに参加できない。

原因

sambaをPDCとして利用するためには、ドメイン管理者はrootでなければならない。そのため、 /usr/local/private/smbpasswdにrootを登録してパスワードを適切に設定するのだが、FreeBSD の ports/packages でインストールされるja-samba-2.2.2.j1.0は/etc/passwdを元に/usr/local/private/smbpasswd の雛形が作られる。この雛形にはrootとユーザーIDを同じくする他のユーザー、例えばtoor、も含まれる。

/usr/local/private/smbpasswdへのユーザーの追加や削除を繰り返すうち、sambaを使う必要のないこれらのユーザー IDが参照されることが起こり得る。例えば、/usr/local/private/smbpasswdのエントリが次のようになっている場合、

toor:0:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:[U          ]:LCT-00000000:Bourne-again Superuser
root:0:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:[U          ]:LCT-00000000:Charlie &

Windows2000をドメインに参加させるためにドメイン管理者であるrootのパスワードを入力したとき、smbd/nmbd は root すなわち uid == 0 を /usr/local/private/smbpasswdから検索するので、toorがヒットすることになる。

ここでrootのパスワードとtoorのパスワードが違うというエラーになればよいのだが、現在の samba はパニックを起こす。

対処策

次のいずれかを実施する。

1. /usr/local/private/smbpasswd には、実際に samba のリソースを利用するユーザのみを列挙する。samba を使う必要のないユーザー(toor, daemon, operatorなど)は削除する。

2. FreeBSD の ports/packages を使わずに自分でコンパイル、インストールする。

3. ja-samba-2.2.2.j1.0ではなく、ja-samba-2.2.2.j1.1を使う。

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