COMPUTER

Samba + OpenLDAP バージョンアップ

いや~、一ヶ月も間が空いていました。
カリスマブロガーと言われる人たちは毎日、記事をアップしていますが、そういう姿勢、本当に関心します。
私の場合、自分に甘いので、中々、記事をアップすることが出来ないでいます。
ま、私信はここまでにして、最近、Samba 2.x系とOpenLDAPを使用して構築したドメインコントローラーからSamba3.0.23a+OpenLDAPにバージョンアップする機会がありましたので、備忘録を書いておこうかと思います。
(というのも、2系から最新のSambaへバージョンアップした記録が意外とないんですよね。Sambaは3.0.20系から色々と仕様が変わっているようなので)
(バージョンアップ前の環境)
・OS:Redhat Enterprise Linux 2.1 AS(やや古い)
・Samba:Samba 2.2.11-ja-1.0
・OpenLDAP 2.0.27-11
・LDAPサーバ x 1 (ホスト名は仮にLDAP1とする)
・Sambaサーバ x 1 (ホスト名は仮にSMB1とする)
・ドメイン名:SMBTEST1
(バージョンアップ後の環境)
・OS:Redhat Enterprise Linux 2.1 AS
・Samba:Samba 3.0.23a (最新版ではない)
・OpenLDAP 2.0.27-11 (トラブルを避けるため、やや古いが同じバージョンとする。)
・LDAPサーバ x 1 (ホスト名は仮にLDAP1_newとする)
・Sambaサーバ x 1 (ホスト名は仮にSMB1_newとする)
・ドメイン名:SMBTEST1
(要件)
・現状、ドメインログオンしているクライアントが、バージョンアップ後もそのまま、ドメインログオンが出来る
・ldapsam_compatを使用せず、完全にデータコンバートを行う。
(ldapsam_compatはSamba 2系のLDAPデータを、変換せず Samba 3系で使用するオプション)
・ユーザー管理は、Windowsのユーザーマネージャーで行う。


(実際の作業手順 一部嘘があるかもしれません。)
samba,openldapは両方ともに起動
1. ldapサーバでデータをエクスポートする。— ldapホストに
/etc/openldap/ldap.confのbasednを設定する。
以下を追加

# ldapsearch -x -W - D "uid=Administrator,ou=Users,o=test,c=jp,o=testgroup -LLL > samba2.ldif
# Enter LDAP Password: ****** (slapd.confに設定されたパスワード)

ディレクトリにsamba2.ldifファイルが作成されていることを確認する。
エクスポート時にエラー “size limit exceed”が出力される場合の対応は以下を参照
※ldapデータコンバート作業注意点
データが多い場合、”size limit exceed”エラーがでる。
その場合は /etc/openldap/slapd.confに以下の記述を追加し
openldapを再起動
sizelimit 10000

2. sambaサーバでドメインSIDを確認する。 — SMBホストにて
Sambaドメインは固有のSIDを持っています。コンバートの際、ドメインSIDを合わせる必要がありますので、既存の環境のSIDを確認しておきます。
(2.2系の場合)

# /usr/local/samba2/bin/rpcclient smb1 -U Administrator%***** -c "lsaquery"
(結果例)
# cmd = lsaquery
# domain smb1 has sid S-1-5-21-2058214923-2286838100-2412191124

(以下、3.0.x系の場合 ldapsam_compatを使用している環境などの場合のみ)

# /usr/local/samba3/bin/net getlocalsid
# /usr/local/samba3/bin/net getdomainsid
(結果例)
# SID for domain SMB1 is: S-1-5-21-2058214923-2286838100-2412191124

3. データのコンバートを行う。 — sambaホストにて
① ldapサーバからエクスポートしたldifファイルをSambaサーバへコピーする。
② samba3.0のソース example/LDAPフォルダにある convertSambaAccountを実行

# cd /usr/local/src/samba3/samba-3.0.23a/examples/LDAP
# ./convertSambaAccount --sid="S-1-5~(略)" & --input=samba2.ldif -- output=samba30.ldif --changetype=add

※モジュールが足りない場合
上記コマンド実行時にNet/LDAP/LDIF.pm perlモジュールが無いとエラーがでる場合CPANからperlモジュールをインストール を行う。

# perl -M CPAN -e shell
> cpan install Net::LDAP

③ 実行したディレクトリにsamba30.ldifファイルが作成されていることを確認
ファイル内のアカウントにsambasidという項目が追加されているこをを確認
同じく、primarygroupIDがSIDに変更されていることを確認
④作成したファイル samba30.ldifをLDAPサーバへコピーする。
4. データの追加
①ldapサーバ上のopenldapを停止する
②旧ldapデータの移動

# mv /var/lib/ldap /var/lib/ldap20
# mkdir /var/lib/ldap
# chown ldap:ldap /var/lib/ldap
# chmod 700 /var/lib/ldap

③/etc/openldap/slapd.confの設定変更(スキーマをsamba3.0用のものを読み込ませる)

include /etc/openldap/schema/samba30.schema ← 追加
include /etc/openldap/schema/samba.schema ← コメントアウト

その後、ldapサーバの起動
④ldapサーバ上でデータのインポートを実行する。

# ldapadd -x -W -D "cn=Manager,o=test,c=jp,o=testgroup" -f /root/smb_ldapdata2/samba30.ldif

⑤追加できたかどうかをldapクライアントで確認
5.smb.confの設定変更
①データベース参照の記述変更

passdb backend = ldapサーバ

となっているところを

passdb backend = ldapsam:ldap://192.168.x.x (LDAPサーバのIPアドレス)

に修正してsambaを再起動
②ドメインのログオンテスト、プロファイルのテストを行う。
6. smbldap-toolsを使用する
crypt::smbhashがないのでインストールを行う
smbldap-tools 3系を必ず使用することになる。(SIDなどにドメインSIDが追加されないので)その場合、以下の作業が必要
① ldifファイルの作成
samba2系のデータをインポートした場合、sambaUNIXifPoolという情報を持ったオブジェクトが作成されないので、以下のように作成して追加を行う。(smbldap-toolsのINSTALL参照)
※ ldifファイルの内容サンプル

dn: cn=NextFreeUnixId,o=test,c=jp,o=testgroup
objectClass: inetOrgPerson
objectClass: sambaUnixIdPool
uidNumber: 6000 (新規ユーザー作成時に割り当てられるuid)
gidNumber: 7000 (新規ユーザー作成時に割り当てられるgid)
cn: NextFreeUnixId
sn: NextFreeUnixId

② ldifファイルをインポートする。

# ldapadd -x -W -D "cn=Manager,o=test,c=jp,o=testgroup" -f /root/smb_ldapdata/test.ldif

③ そのままだと、groupmappingが全く設定されていないので、手動でgroupmappingを実行する。
(実行例)

# groupadd ntadmins
# groupadd domusers
※実際にはインストール時にローカルposixgroupが登録されているので、グループを作成する必要はない
# net groupmap add ntgroup="Domain Admins" unixgroup=ntadmins rid=512 type=domain
# net groupmap add ntgroup="Domain Users" unixgroup=domusers rid=513 type=domain

実際の環境では

# cd /usr/local/samba3/bin/
# net groupmap add ntgroup="Domain Users" unixgroup="Domain Users" rid=512 type=domain

などと実行する。(SambaのインストールディレクトリへのPATHは各環境にあわせる)
groupに対して権限を設定する場合、rpc right grant を実行する。その場合、smb.confに以下を追加する必要がある。

enable privileges=yes (globalディレクティブに追加)

7. ユーザーマネージャーの使用
①smb.confに以下の記述を追加

passwd program = /usr/local/sbin/smbldap-passwd.pl -u %u
add user script = /usr/local/sbin/smbldap-useradd -F "" -m -a '%u'
delete user script = /usr/local/sbin/smbldap-userdel -r '%u'
add group script = /usr/local/sbin/smbldap-groupadd -a -p '%g'
delete group script = /usr/local/sbin/smbldap-groupdel '%g'
add user to group script = /usr/local/sbin/smbldap-groupmod -m '%u' '%g'
delete user from group script = /usr/local/sbin/smbldap-groupmod -x '%u' '%g'
set primary group script = /usr/local/sbin/smbldap-usermod -g '%g' '%u'
add machine script = /usr/local/sbin/smbldap-useradd -a -w '%u'

②sambaの再起動
※ほとんどの操作が可能だが、ユーザー追加、グループ追加時にエラーがでる(アカウントは追加される)
8. 設定後のテスト
必要なテスト
・ドメインログオン1:以前からのユーザーで問題なく動作可能
※要注意!!(PwdLastSet = 0 になっている場合はパスワードが削除されるので注意)
・ドメインログオン2:新規に作成したユーザーから可能か?可能
・ドメインログオン3:新規に追加したマシンアカウントから可能か?
smbldap-useradd -iw マシン名で追加(パスワード必要)可能
・プロファイル:以前のプロファイルのまま、動作可能
・ファイル共有
・smbldap-toolsの動作確認
(以下、3系のsmbldap-toolsを使用)
・smbldap-useradd:ユーザー追加可能、マシンアカウント未確認
・smbldap-passwd:パスワード設定可能
・smbldap-groupadd:グループの追加可能、groupmappingを行う場合は-aオプションを付与する。
・smbldap-userdel:可能
・smbldap-groupdel:可能

関連記事

  1. COMPUTER

    Airmac Express 速度がでない不具合の改善

    唐突ですが、我が家ではairmac expressを使用して無線L…

  2. COMPUTER

    RHEL 5 への qmailインストール (vpopmail)

    前回までに以下の手順を記載しました。・通常のqmail(port2…

  3. COMPUTER

    RHEL 5 への qmailインストール (PORT587)

    前回の続きです。すでに25番ポートで動作するqmailがインストー…

  4. COMPUTER

    mdadmによるソフトウェアRAID

    我が家ではwebサーバをソフトウェアRAIDで運用しています。S/W …

  5. COMPUTER

    この記事は移転しました。

    この記事は移転しました。新しいURLはプロキシサーバー経由でフ…

  6. COMPUTER

    bootcampの注意点

    私はiMacを仕事用として利用しています。OSXはUNIXライクな使…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

  1. DOG

    ある日
  2. BOOKS

    火山のふもとで
  3. WEAR

    Patagonia Lightweight Travel Pack
  4. WEAR

    Patagonia SynchillaR Snap-TR Pullover
  5. DOG

    をれや
PAGE TOP