もし生まれ変わるなら? MOSS 2007 のユーザー情報にみる潜在的願望

こんにちは。

SharePoint サポートチームのたらかわです。

最近、ユーザー プロファイル関連のネタが続いているようなので、たまには違うネタでもやろうかと思ったのですが、残念ながら仕事の合間に粛々と書き溜めておいたネタが前回、前々回に引き続きユーザー プロファイルと微妙に関連するサイトのユーザー情報に関するネタでございました。

お蔵入りにするのももったいないので、このまま公開することにしました。次回は他のネタを用意していますので、勘弁してください。

問題:

MOSS 2007 ユーザーの毛須花子さんは、このたび晴れて舞黒太郎さんと結婚することになりました。これに伴い、花子さんの AD ユーザー名が組織の命名規則に従い mosuh から maikuroh に変更になります。組織では、ユーザー名が変更される場合、新しいユーザー ID を発行する決まりとなっています。このため、花子さんのために新しい AD ユーザー maikuroh が作成されました。

花子さんは、社内の MOSS 2007 サイトにおいて、以前と同じ個人用設定や、サイトやリストのアクセス権を使い続けたいと考えています。

最小限の管理タスクで花子さんの希望を満たすソリューションを選択してください。

と、いきなり MCP チックな問題文を書いてしまいましたが、要は、「サイトのユーザー情報は残したまま、ユーザーの個人用設定やコンテンツのアクセス権を引き継いで、サイトのユーザーに紐づいた AD ユーザーだけ変えたい」ということです。

一般的にユーザー ID が変わるシナリオとして、以下のことが考えられます。

・結婚や部署移動によりユーザー名が変わった

・ドメイン移行によりユーザーが所属するドメインが変わった

・新しい自分に生まれ変わりたくなった

…最後のは一般的ではないかもしれませんが、自分はよくこのような衝動に駆られるので、一般的ということにしておきましょう。

余談ですが、たらかわは子供の頃、当時人気があった某 RPG ゲームの主人公に自分の名前を、ヒロインの名前に何を思ったか好きな女子の名前を付けてしまったことがあります。その後、我に返り、このままだと家に友達を呼べないことに気付き、必死に名前を変えようとしたのですが、残念ながらそのゲームのシステムには、キャラクターのリネームという機能は実装されておらず、泣く泣くそのセーブデータを消去したという甘酸っぱくも切ない思い出があります。そんな話はどうでもいいですか。そうですか。

さすがに、AD のユーザー名に好きな女子の名前を入れて感情移入しようなどという極めて斬新な使い方をするユーザーはごく少数だと思いますが、処々の事情により AD のユーザー名を変更する必要が出てくることもあるでしょう。

ご安心ください。

MOSS 2007/WSS 3.0 には、サイトのユーザー情報は残したまま、ユーザーの個人用設定やコンテンツのアクセス権を引き継いで、サイトのユーザーに紐づいたAD ユーザーだけ変える夢のような機能が実装されています!!

MOSS 2007/WSS 3.0 でサイトのユーザー情報に関連づいた AD ユーザーを変更するには "Migrateuser" Stsadm 操作を使用します。

Migrateuser : Stsadm 操作 (Office SharePoint Server)

https://technet.microsoft.com/ja-jp/library/cc262141.aspx

Migrateuser : Stsadm 操作 (Windows SharePoint Services)

https://technet.microsoft.com/ja-jp/library/cc288467.aspx

"Migrateuser" Stsadm 操作は、ドメインの移行に伴いユーザー情報を移行する時や、検証環境から運用環境への移行時に任意のユーザーに一括でサイトのユーザー情報を移行する場合など、環境の移行シナリオでよく使用されます。"Migrateuser" Stsadm 操作では、ユーザーのログイン ID をもとに、コンテンツ データベースの UserInfo テーブル (※1 おまけ参照) の情報を書き換えるので、すべてのサイトコレクションに関連づいたユーザー情報を一括で変更できるのです。

では、実際に使ってみましょう。

1. CONTOSO ドメインに "tarakawa" というユーザーを作りました。

 

2. 適当なサイトに contoso\tarakawa のアクセス権を付けて、contoso\tarakawa でサイトにログインしましょう。問題なくログインできますね。

 

 

3. 個人用サイトを作っちゃいましょう。秘蔵のコレクションをこっそり個人用ライブラリにアップロードします。

 

4. あ、あ、いつもの衝動が!!う、生まれ変わりたい!!!

 

5. システム管理者にお願いして別の新しい AD のユーザーを作ってもらいました。映画俳優のジョニー・デップさんみたいにカッコよくなりたいので、これからは contoso\JohnnyD でいきます。これでハリウッド進出間違いなしです。

 

6. もう一度、contoso\JohnnyD でサイトにログインしましょう。残念ながら生まれ変わってません。 「お前なんか知らねー」 って言われてしまいました。。。頑張っておめかししたつもりでしたが、どうやら 「似ても似つかない」 とジャッジされてしまったようです。切ないですね。

 

7. いくら望んでも、遺伝子レベルで差がありすぎるものはどうしようもありません。仕方がないので黒魔術に頼るとしましょう。今までの非道な行いを悔い改めて、コマンド プロンプトを起動して以下のコマンドを実行します。

   cd %commonprogramfiles%\Microsoft Shared\Web server extensions\12\Bin

 

8. 次に、以下のコマンドを実行します。今回は、移行先のユーザー アカウントに Sid 履歴が含まれていないので migrateuser 操作に ignoresidhistory パラメータを付けます。(※2 おまけ参照)

   stsadm -o migrateuser -oldlogin contoso\tarakawa -newlogin contoso\JohnnyD–ignoresidhistory

 

9. これで転生の儀式は完了です。

 

10. 再び、contoso\JohnnyDでサイトにログインしましょう。アクセスできました。個人用サイトの秘蔵のコレクションも無事ですね。表示名が昔のままなのは後でどうにかするとして (※3 おまけ参照)、とりあえずは無事に転生できたようです。悪魔に魂を売った甲斐がありました。

 

11. 以後、上記コマンドを実行することで、 「GeorgeC」「BradP」「TomC」 など、状況に応じて適宜生まれ変わることが可能です。

いかがでしょうか。

上記コマンドを利用すれば、WSS 3.0 でもユーザーの表示名を変更することができます。

皆さんも生まれ変わりたくなったら、サーバーのローカル管理者権限とファームの管理者権限を取得して、気軽に "Migrateuser" Stsadm 操作を実行してみてくださいね♪

- おまけ

( ※1) UserInfo テーブルって何?

サイトのユーザー情報は、各コンテンツデータベースの UserInfo テーブルに格納されています。ユーザー情報はサイト コレクションごとに持っているのですが、実際には、サイトコレクションの ID 情報とともに、コンテンツ データベース内の 1 つのテーブルに格納されて管理されているんですね。興味があれば、検証環境でコンテンツデータベースの中を覗いてみてください。UserInfo テーブルにはユーザーの ID、表示名の他にも、色んな情報が確認できます。UserInfo テーブルの各カラムの用途については、以下の公開仕様書が参考になるかと思います。

2.2.7.10 UserInfo Table

https://msdn.microsoft.com/en-us/library/dd303914(PROT.13).aspx

注:SharePoint 関連データベースを興味で覗くのは自由ですが、直接変更することはマイクロソフトでサポートされていないのでご注意ください。マイクロソフトでは、SharePoint 製品とテクノロジで使用されるデータベースを直接変更したことで生じる問題をサポートしていません。

( ※2) ignoresidhistory パラメータはどんな時に付けるの?

"Migrateuser" Stsadm 操作の ignoresidhistory パラメータは、新しいユーザーの SID 履歴のメタ データが古いユーザーの名前と一致するかどうかチェックしたくない時に使います。

ignoresidhistory パラメータを付けない場合、移行元のユーザーの SID が移行先ユーザーの SID 履歴に含まれるかチェックされ、含まれない場合はエラーを返します。これにより、Active Directory 移行ツール (ADMT) を使い、ドメイン間でユーザーを移行した場合などに、SharePoint サイトのユーザー情報が誤ったユーザーに移行されることを防ぐことができます。(contoso\tarakawa を fabrikam\tarakawa に移行すべきところを、fabrikam\tatakawa に移行してしまう等。tatakawa さんにとってはいい迷惑。。)

逆に、フォレスト間でユーザーを移行して Sid 履歴を保持していない状況や、今回のように Sid 履歴を含まないユーザー ID に移行することが目的の場合には、ignoresidhistory パラメータを付けないと「新しいユーザーアカウントには、有効な SID 履歴データがありません。」というエラーで失敗してしまうので、このような場合は敢えて付けるのです。

このあたりの情報は、以下の資料に記載されているので、興味があればご参照ください。

5.2.4 Updating the Site Collection local user record (aka Account Migration)

https://msdn.microsoft.com/en-us/library/dd341297(PROT.13).aspx

( ※3) ユーザーの表示名はどうしたらいいの?

"Migrateuser" Stsadm 操作で SharePoint ユーザーを移行した場合、ユーザー プロファイルの情報やサイトのユーザー情報は以前のユーザーの情報を引き継ぎますので、必要に応じて変更します。MOSS 2007 の場合は、プロファイルのインポートをして 1 時間程度待てば、「プロファイルの同期」タイマジョブによりすべてのコンテンツ データベースのユーザー情報が自動的に更新されます。

SharePoint タイマ ジョブ リファレンス (Office SharePoint Server)

https://technet.microsoft.com/ja-jp/library/cc678870.aspx

--- 参考箇所の抜粋 ---

プロファイルの同期

コンテンツ データベースのユーザー情報を、ユーザー プロファイル データから同期します。 

毎時

------

WSS 3.0 の場合は、ちょいと面倒ですが、以下の手順により手動でユーザー情報を更新します。

<手順>

1) 表示名を変更したいユーザーでサイトにアクセスして、右上の「ようこそ○○さん」プルダウン メニューから [個人用設定] を選択します。

2) [ユーザー情報:<ユーザー名>] ページで [アイテムの編集] メニューをクリックします。

3) ユーザーの [名前] プロパティの値を手動で変更して [OK] をクリックします。

by たらかわ@ 死んだら地獄行き