実践!Samba移行術 1

パスワードデータベースの変換

パスワードデータベースの変換

   Samba 2.2では、基本的に利用されるパスワードデータベースはコンパイル時に決定されていたため、ほとんどのユーザはsmbpasswdファイル(テキスト ファイル)を利用しているだろう。Samba 2.xのユーザ管理データベースとしてsmbpasswdファイルを使用していて、そのままSamba3.0でもsmbpasswdを利用したい場合 は、"passdb backend = smbpasswd"とすることで継続利用が可能だ。

   しかし、Samba 3.0では設定で自由にパスワードデータベースが変更できる。Samba 3.0の新機能やドメイン機能を利用する場合はsmbpasswdではなく、「TDBSAM」もしくは「LDAPSAM」に変更することが望ましい。用途 は以下のように使い分けるといいだろう。


  • TDBSAM
    スタンドアロンサーバで、かつ小規模サーバの場合。(ユーザ数が200人程度まで)
  • LDAPSAM
    ドメインコントローラ、もしくは中・大規模サーバの場合。(ユーザ数が200人以上の場合。)

smbpasswd →TDBSAMの場合

   これまでsmbpasswdを利用しており、新たに「passdb backend = tdbsam」としたい場合は、以下のコマンドでデータ移行が可能である。

# pdbedit -i smbpasswd:/etc/smbpasswd -e tdbsam:/etc/samba/passdb.tdb

smbpasswd →LDAPSAMの場合

   また、Samba2.2でパスワードデータベースとしてsmbpasswd(と OSの/etc/passwd)を使用しており、Samba3.0でLDAPに変更したい場合は、既存の/etc/samba/smbpasswdや /etc/passwd ファイルからLDAPへ移行することも可能だ。

   RPMを使ってOpenLDAPをインストールすると、/usr/share/openldap/migrationディレクトリには、/etc ファイルやNISなどの古い認証情報をLDAPフォーマットに移行するための一連のシェルとPerlスクリプトが含まれている。(これらのスクリプトを使 用するには、システムにPerlがインストールされている必要がある。)以下、手順を説明します。

   最初にmigrate_common.phファイルを修正し、ドメインを反映させる必要がありますが、デフォルトのDNSドメインは以下のようになっている。

 

$DEFAULT_MAIL_DOMAIN = "padl.com";


これを、たとえば以下のように変更する必要がある。
 

$DEFAULT_MAIL_DOMAIN = "miraclelinux.com";


デフォルトのベースは以下のようになっている。
 

$DEFAULT_BASE = "dc=padl,dc=com";


これも、例えば以下のように変更する必要がある。
 

$DEFAULT_BASE = "dc=miraclelinux,dc=com";


次に、表5に記載されたスクリプトを使用して移行を行う。

 


既存のネームサービス LDAPは動作しているか 意味
/etcフラットファイル はい migrate_all_online.sh
/etcフラットファイル いいえ migrate_all_offline.sh
ネット情報 はい migrate_all_netinfo_online.sh
ネット情報 いいえ migrate_all_netinfo_offline.sh
NIS(YP) はい migrate_all_nis_online.sh
NIS(YP) いいえ migrate_all_nis_offline.sh

表5:LDAP移行スクリプト

/usr/share/openldap/migration にあるREADMEとmigration-tools.txtに、情報の移行方法に関する詳細が記載されているので、必要に応じて参照して欲しい。

   続いて以下のpdbeditコマンドを実行することで移行が実行される。

 

# pdbedit -i smbpasswd:/etc/smbpasswd -e ldapsam:ldap://localhost

上記のコマンドを実行するには、smb.confを、LDAPSAMを使ったPDC用に設定し、"smbpasswd -w"を実行してLDAP管理者のパスワードを設定しておく必要がある。

   またSamba2.xでLDAPを使ったPDCを構築している場合は、LDAPデータをいったんLDIFデータファイルにエクスポートし、以下のコ マンド(samba-3.0.0のソースファイルの中"examples/LDAP/convertSambaAccount"コマンド)を使用すること で、Samba3.0の新しいスキーマに変換できる。

 

convertSambaAccount --sid=<Domain SID> --input=<input ldif>
--output=<output ldif> --changetype=[modify|add]

OUTPUTで出来たLDIFファイルを、またLDAPに投入すれば移行は完了だ。実行手順は以下の通りだ。

Samba 2.xでのLDAPデータ取り出し
    「ldapsearch -x -W -D 管理者識別子 -LLL」


実行例)

# ldapsearch -x -W -D "uid=Administrator,ou=Users,dc=miraclelinux,dc=com" -LLL > samba2.ldif


ドメインSIDの確認
    以下のコマンドでSamba2.xでのドメインSIDを記録する。

 

# rpcclient Samba2.xのPDCマシン名 -U Administrator%パスワード -c 'lsaquery'

-Uにはドメイン管理者として登録されているユーザ(Administratorなど)を指定する。

LAPデータの変換
 

# convertSambaAccount --sid="S1-12345-124"
--input=samba2.ldif --output=samba30.ldif
--changetype=add


LDAPデータの投入

LDAPサーバを停止し、slapd.confのdirectoryパラメータで指定した「/var/lib/ldap」 にあるデータファイルをすべて削除する。その後LDAPサーバを起動してから、新たにデータを投入する。

実行例)

# ldapadd -x -W -D "uid=Administrator,ou=Users,dc=miraclelinux,dc=com" -f samba30.ldif

以上でユーザ情報、グループ情報に関しての移行に関しては終了だ。

 

この記事をシェアしてください

人気記事トップ10

人気記事ランキングをもっと見る