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

    MySQL テーブルの修復

    全く気が付いていなかったのですが、ウェブ上で写真を公開する、Coppe…

  2. COMPUTER

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

    最近、qmailって殆ど使われていないかと思ってましたが、まだ、結構使…

  3. COMPUTER

    mdadmによるソフトウェアRAID

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

  4. COMPUTER

    debian etchでaptitude updateに失敗する

    debianもlennyがリリースされてからだいぶ経ちます。我が家…

  5. COMPUTER

    sendmailとspamassassin

    自分の中では終わったMTA sendmailしかし、何故か、今回、…

  6. COMPUTER

    Google Adsenseの異常?

    このサイトではGoogle Adsenseを使用している。(現在は利用…

コメント

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

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

  1. SHOES

    ALDEN ミリタリーラスト OXFORD
  2. MUSIC

    jazz liberatorz “Fruits of the Pas…
  3. BIKE

    エンジンストール
  4. BIKE

    Sportster イグニッションモジュールの故障
  5. HOUSE

    薪ストーブ
PAGE TOP