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

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

   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

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

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30