FreeBSD の ja-samba-2.2.2.j1.0 を PDC にしたとき Windows 2000 がドメインに参加できない
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 からの一連のスレッドの議論を元に作成されています。