Chapter 27. デスクトッププロファイルの管理

John H. Terpstra

Samba Team

April 3 2003

Table of Contents

その特長と利点
移動プロファイル
プロファイル処理のための Samba の設定
Windows クライアントのプロファイル設定に関する情報
User Profile Hive Cleanup Service
Windows 9x/Me と NT4/200x/XP ワークステーション間でプロファイルを共有する
Windows NT4/200x サーバーから Samba にプロファイルを移行する
必須プロファイル
グループプロファイルの作成と管理
Windows ユーザーのデフォルトプロファイル
MS Windows 9x/Me
MS Windows NT4 Workstation
MS Windows 200x/XP
よくあるエラー
少人数のユーザーやグループのための移動プロファイルの設定
移動プロファイルを使えない
デフォルトプロファイルを変更する
移動プロファイルと NT4 スタイルのドメインポリシーのデバッグ

その特長と利点

移動プロファイルは一部の人にとっては恐れられており、 これを忌み嫌う人もいないではないが、また多くの人に愛されてもいる。 これを天の恵みだと考えている管理者もいる。

ユーザーが使用するマシンを毎回変えるような環境であっても、ローミング プロファイルを使えば管理者は常に同じユーザーデスクトップ環境を提供できる。 この章では移動プロファイルの構成と管理の手法に関する多くの情報を 提供する。

移動プロファイルはある種、楽園のように聞こえる人もいるかも しれないが、その他の人々にとっては、これは現実の、そして目に見える 問題でもある。特に、接続状態が安定しないモバイルコンピューティング 機器を利用するユーザーは、純粋なローカルプロファイルを使うケースが 多いであろう。この章では Samba の管理者がこのような状況に対処する ための手助けになるような情報を提供する。

移動プロファイル

Warning

移動プロファイルのサポートは、Windows 9x/Me と Windows NT4/200x でそれぞれ異なる。

移動プロファイルの構成方法について論じるのに先立って、 Windows 9x/Me と Windows NT4/200x クライアントが、それぞれどのように これらの機能を実装しているのかを知ることもまた有用であろう。

Windows 9x/Me クライアントは NetUserGetInfo リクエストをサーバーに送り、 ユーザープロファイルの場所を取得する。しかしながら、その応答の中には 分割されたプロファイルの位置を保持するためのフィールドを格納する領域はなく、 単にそのユーザーの home 共有が渡されるだけである。つまり、Windows 9x/Me のプロファイルでは、プロファイルをユーザーのホームディレクトリーに格納する ことしかできない。

Windows NT4/200x クライアントは NetSAMLogon RPC リクエストを送る。 これには多くのフィールドがあり、分割されたユーザープロファイルの位置を表す 情報も含まれている。

プロファイル処理のための Samba の設定

この章では MS Windows クライアントのプロファイルサポートのための Samba の設定について解説する。

NT4/200x のユーザープロファイル

たとえば、Windows NT4/200x をサポートする場合、以下の設定を smb.conf ファイルの [global] セクションに書けばよい。

logon path = \\profileserver\profileshare\profilepath\%U\moreprofilepath

これは一般に以下のような実装を表している:

logon path = \\%L\Profiles\%U

ここで%Lは Samba サーバーの名前に置き換えられ、 %Uはユーザー名に置き換えられる。

このオプションのデフォルトは \\%N\%U\profile すなわち \\sambaserver\username\profile である。 \\%N\%U サービスは [homes] サービスにより 自動的に生成される。Samba サーバー経由でプロファイルを使う場合は、 logon path で指定された共有をブラウズ可能にしておかなければならない。 %L%N の違いや %U%u の違いについては smb.conf の man ページを参照してほしい。

Note

MS Windows NT/200x クライアントは、時々ログオン完了後もサーバーへの コネクションを切断しないことがある。プロファイルの共有パスには メタサービス名である homes を使用しない 方がよいだろう。

Windows 9x/Me ユーザープロファイル

Windows 9x/Me クライアントをサポートするには、 logon homeパラメーターを使用すること。 Sambaが修正され、logon homeパラメーターを信頼 するnet use /homeも動作するようになった。

logon home パラメーターを指定すると Windows 9x/Me のプロファイルの格納位置はユーザーのホームディレクトリーに制限される。 しかし待って欲しい。実はこれは裏技的なやり方である。smb.conf ファイルの [global] セクションに

logon home = \\%L\%U\.profiles

を記載すると、Windows 9x/Me クライアントはちゃんと自分のプロファイルを ホームディレクトリー配下の .profiles という隠し ディレクトリーに正しく保存するようになる。

これだけではなく、net use /home は Windows 9x/Me における機能のためにもなる。これはホームディレクトリーにあるすべての ディレクトリーを削除し、サーバーと共有部分のみを使用する。すなわち、 あたかも logon home\\%L\%U を指定したように振舞う。

Windows Windows 9x/Me と NT4/200x のユーザープロファイルの混在

logon homelogon path 両方のパラメーターをセットすると、Windows 9x と Windows NT クライアントの 両方をサポートできるようになる。たとえば、

logon home = \\%L\%U\.profiles
logon path = \\%L\profiles\%U

Windows 9x/Me と NT4 およびそれより新しいプロファイルは、同じ位置に 格納するべきではない。なぜなら、Windows NT4 とそれ以降のクライアントは プロファイルが混在した環境で問題を起こすからである。

移動プロファイルサポートを無効にする

しばしば行われる質問として、強制的にローカルプロファイルにするには? どうやったら移動プロファイルを無効にできるか? といったものがある。

これには、3つのやり方がある:

smb.conf において

logon home = および logon path = を適用すると、すべてのクライアントがローカルプロファイルを使うようになる。

これらのパラメーターへの引数はブランクのままにしておかなければならない。 空の値を設定する場合でも = 記号は必要である。

MS Windows レジストリ:

マイクロソフト管理コンソール(MMC)の gpedit.msc を使って、その Windows XP マシンがローカルプロファイルだけを使う ようにする。もちろんこれはレジストリの設定を変更する。 オプションへのフルパスは以下の通り:

ローカル・コンピューター・ポリシー\
	コンピューターの構成\
		管理用テンプレート\
			システム\
				ユーザープロファイル\

無効: ローカルユーザープロファイルのみを許可する
無効: 移動プロファイルへの変更をサーバーに伝達しない

プロファイルタイプの変更:

スタートメニューのマイコンピューター・アイコンで右クリックし、 プロパティの詳細設定タブを開く。 ユーザープロファイルの設定で変更したいプロファイルを 選んで「種類の変更」をクリックし、移動プロファイルローカルプロファイルに変更する。

特定バージョンの MS Windows において、どのレジストリキーを変更すれば 強制的にローカルプロファイルになるのかは、MS Windows レジストリガイドを 参照のこと。

Note

ローカルプロファイルを移動プロファイルに、もしくはその逆方向に変換する方法は、 稼働中の MS Windows のバージョンに大きく依存する。バージョン固有の情報に ついては MS Windows リソースキットを参照してほしい。

Windows クライアントのプロファイル設定に関する情報

Windows 9x/Me のプロファイル設定

ユーザーが最初に Windows 9x にログインすると、user.DAT ファイルが生成される。 その中には スタートメニュー, デスクトップ, プログラム, 近くのコンピューター というフォルダーが入る。 二度目以降のログイン時は、これらのディレクトリーとその中身が マージされて c:\windows\profiles\ユーザー名 に格納される。 これらにはそれぞれ最新の情報が入る。 ここで、プロファイルフォルダー内のショートカットを常に大文字で見せるために [global] オプションを、それぞれ preserve case = yes, short preserve case = yes, and case sensitive = no のように設定する必要がある。

user.DAT ファイルにはそれぞれのユーザーの設定項目が 入っている。これらの設定を強制したい場合は、それぞれの user.DAT ファイルを user.MAN にリネームし、さらにこれらのファイルを書き込み禁止にしておく。

  1. Windows 9x/Me マシンでは、コントロールパネル -> パスワード に入って ユーザー・プロファイルタブを選ぶ。 要求する移動設定のレベルを選択してOK を押すが、 ここではコンピューターのリブートを行わない。

  2. Windows 9x/Me マシンでは、コントロールパネル -> ネットワーク -> マイクロソフトネットワークのクライアント -> Preferencesに行き、 NTドメインにログオンを選択する。 そしてプライマリログオン(通常のログオン方法?)が マイクロソフトネットワークのクライアント になっていることを確認してOK を押す。 ここでコンピューターをリブートする。

Windows 9x/Me では、プロファイルはプライマリ・ログオンからダウンロードされる。 プライマリ・ログオンがノベルネットワーク用クライアント になっている場合、プロファイルとログオンスクリプトは使用中のノベルサーバー からダウンロードされる。プライマリ・ログオンがWindows ログオン になっている場合、プロファイルは移動プロファイルの考え方から少しはずれて ローカルマシンの からロードされる。

マイクロソフトネットワークのログインダイアログには [ユーザー名, パスワード]だけに代わって [ユーザー名, パスワード, ドメイン]が表示されている ことにお気づきだろうか?ここで Samba サーバーのドメイン名、および ユーザー名、パスワードを入力する。なお、Samba サーバーの代わりに 存在することがわかっているドメイン名を入力してもよい。その場合、 そのドメインによってユーザー認証が行われ、さらにそのドメインの ログオンサーバーがサポートしていれば、プロファイルがそのサーバーから ダウンロードされる。

そのユーザーの正当性が確認されると、Windows 9x/Me マシンは このユーザーは過去に一度もログインされていません を表示し、このユーザーの設定情報を保存しますか? と聞いてくるのでYesで答える。

Windows 9x/Me のデスクトップが起動したら、Samba サーバー上の logon path にあるディレクトリーの中に デスクトップ, スタートメニュー, プログラム, 近くのコンピューターNethood フォルダー群が作られていることがわかるだろう。

これらのフォルダーはクライアント上でローカルでキャッシュされ、 (事前にリードオンリーに設定しておかない限り)ユーザーのログオフ時に更新される。 ユーザーがさらにフォルダーやショートカットを作ると、クライアントはこれらを すでにダウンロード済みのプロファイルの中身とマージして、それらの中から 最新のフォルダーやショートカットを選択する。

Samba サーバー上のフォルダー/ファイルをリードオンリーにしていた場合、 Windows 9x/Me はログオンやログアウト時にローカルとリモートの プロファイルをマージしようとしてエラーが発生する。基本的に Windows 9x/Me でエラーが出たら、Samba サーバー上のプロファイルディレクトリーで、 UNIX 側のファイルのパーミッションや所有者の権限をチェックしてみてほしい。

ユーザープロファイルの生成で失敗する場合、そのユーザーのローカルデスクトップの キャッシュを後述の要領でリセットしてやるとよい。このユーザーが次回ログオンした時、 今回はじめてログオンした旨のメッセージが表示される。

  1. [ユーザー名, パスワード, ドメイン] ダイアログでログオンする代わりに エスケープを押す。

  2. regedit.exe を起動して以下のエントリを探す:

    HKEY_LOCAL_MACHINE\Windows\CurrentVersion\ProfileList

    ここに各ユーザーの ProfilePath があるので(このキーの内容は c:\windows\profiles\ユーザー名と同様である)、この中で 該当するユーザーの ProfilePath キーを削除する。

  3. レジストリエディターを終了する。

  4. c:\windows ディレクトリー配下から当該ユーザーの パスワードチェインファイル .PWL を見つけ、これを削除する。

  5. Windows 9x/Me クライアントをログオフする。

  6. プロファイルパスの中身(前述の logon path を参照)を確認し、ユーザーの user.DAT または user.MAN を、必要であればバックアップを取ってから 削除する。

Warning

ProfilePath(おそらく c:\windows\profiles\username)の一覧にあるディレクトリーの 中身を削除する前に、各ユーザーのデスクトップやスタートメニューに重要なファイルが ないかどうかを確認しておく。ProfilePath ディレクトリーの 中身を(必要であればバックアップを取ってから)削除する。

これで、各ユーザーのプロファイルディレクトリーにある(それぞれが リードオンリーでかつ隠しファイル、システムファイルである)ローカルの user.DAT, desktop, nethood, start menu, programs といったフォルダーが削除される。

八方手を尽くしてもだめなら、Samba のログレベルを 3 から 10 まで増やしてみて、 さらに ethereal や netmon.exe といったコマンドでパケット をキャプチャしてエラーメッセージ等を捕捉してみる。

Windows NT4/200x サーバーへのアクセス権を持っている場合は、まず Windows NT4/200x サーバー上で移動プロファイルや netlogon の設定を行う。 その後 Windows NT4/200x サーバーが吐きだすパケットを解析して、 Samba のトレース結果と照合し、何が違うのかを調べてみる。

Windows NT4 workstation

ユーザーが最初に Windows NT workstation にログインした時、NTuser.DAT というプロファイルが生成される。プロファイルの場所は logon path パラメーターで指定できる。

現在は、NT プロファイルを利用可能にするための logon drive というパラメーターもある。 これは H: もしくは他のドライブ名に向けておき、 また logon home パラメーターと組み合わせて使用する。

NT4 プロファイルのエントリはファイルではなくディレクトリーである。 プロファイルに関する NT のヘルプによれば、.PDS という拡張子を持つ ディレクトリーが同時に作られるらしい。ログイン時、当該ユーザーは完全な プロファイルパス(および、.PDS 拡張子を持つディレクトリーが作られる のでそれも)を作るための書き込み権が必要である。

Windows NT4 では、プロファイルディレクトリーに Windows 9x/Me で作られる デスクトップ, ネットワークコンピューター, スタートメニュー, プログラム 以外に アプリケーションデータ フォルダーが作られる。 プロファイル自体は NTuser.DAT ファイルに格納される。 .PDS ディレクトリには何も書き込まれないようで、現時点でここの目的は謎である。

システム コントロール パネル を使って ローカルプロファイルを Samba サーバーにコピーすることができる (プロファイルに関する NT のヘルプを参照のこと:さらに、これで システム コントロール パネルの中で 正確な位置を確認することもできる)。NT のヘルプによれば、残りの NTuser.DAT から NTuser.MAN は、 プロファイルを強制するためのものであるらしい。

プロファイル名の大文字小文字は重要である。このファイル名は NTuser.DAT、強制用ファイルであれば NTuser.MAN でなければならない。

Windows 2000/XP Professional

まずローカルプロファイルを MS Windows ワークステーション上で 以下のようにドメインプロファイルに変換しなければならない:

  1. ローカルのワークステーション管理者 としてログイン

  2. マイコンピューターアイコンで 右クリックしてプロパティを選択

  3. ユーザープロファイルタブをクリック

  4. 変換したいプロファイルを選択(一回クリック)

  5. コピー先ボタンをクリック

  6. 使用を許可するユーザー/グループ ボックスの変更ボタンをクリック

  7. マシン名の一覧が出る場所をクリック。 ここをクリックすると選択ボックスが開くので、プロファイルを アクセス可能にするべきドメインをクリック。

    Note

    ログオンボックスが表示された場合はそこでログオンする。 たとえば DOMAIN\root に パスワード:mypassword で接続する。

  8. プロファイルを誰でも使えるようにする場合は Everyone を選択

  9. OKを押すと選択ボックスが閉じる

  10. これで OK を押すと、 指定した場所にプロファイルが作られる

これで Samba の profiles ツールから編集可能な プロファイルの作成ができた。

Note

Windows NT/200x では、必須プロファイルを使うとメールデータとして MS Exchange のストレージを使うことしかできなくなり、またこれは デスクトッププロファイルからは除外される。これにより、 デスクトッププロファイルを使用不可にできない。

Windows XP サービスパック 1

Windows XP (もしくは Windows XP サービスパック 1 のみ?)では セキュリティーチェックが追加された。これは Active Directory のグループポリシー経由で無効にできる。このポリシーは、以下の 手順で呼び出せる:

コンピューターの設定\
  管理用テンプレート\
    システム\
      ユーザープロファイル\
        移動プロファイルフォルダーのユーザー所有権を確認しない

これは 有効 にしておく

新しいバージョンの Samba には Active Directory と似たような 仕組みがあるだろうか?もしあるなら、前述の手順に従って このポリシーを設定できるだろう。

Samba ではグループポリシーが設定できないようでも、各マシンで ローカルに設定することは可能である。もしこの作業を行いたければ 以下のようにすればよい:

  1. XP workstation に管理者権限でログインする

  2. スタート -> 名前を指定して実行をクリック

  3. mmcとタイプする

  4. OKをクリック

  5. マイクロソフト管理コンソールが起動する

  6. ファイル -> スナップインの追加と削除 -> 追加をクリック

  7. グループポリシーをダブルクリック

  8. 完了 -> 閉じるをクリック

  9. OKをクリック

  10. コンソールルート ウィンドウで ローカルコンピューターポリシー -> コンピューターの構成 -> 管理用テンプレート -> システム -> ユーザープロファイルを展開

  11. 移動プロファイルフォルダーのユーザー所有権を確認しない をダブルクリック

  12. 有効を選択

  13. OKをクリック

  14. コンソール全体を閉じる。設定を保存する必要はない (「保存」は変更したポリシーのことでではなく、コンソール設定の ことを指している)

  15. リブート

User Profile Hive Cleanup Service

終了時に、移動プロファイルのキャッシュされたローカルコピーを強制削除する 設定になっているにも関わらず、それらが消されないという状況がありうる。 このような現象に対処するために、特別なサービスが作られた。 Windows NT4/2000/XP Professional と Windows 2003 には UPHClean (User Profile Hive Cleanup) という アプリケーションをサービスとしてインストールできる。

UPHClean のソフトウェアパッケージは the User Profile Hive Cleanup Service[7]というWebサイトからダウンロードできる。

Windows 9x/Me と NT4/200x/XP ワークステーション間でプロファイルを共有する

Windows の異なったバージョン間でデスクトップを共有することは推奨されない。 デスクトッププロファイル領域は未だ進化の途上であり、新しいバージョンの Windows プロファイルで追加された機能は、それまでのバージョンの動作を 阻害する。新旧のプロファイルを混在させるべきではないより大きな理由は、 古いバージョンの Windows をログオフする際、古いフォーマットを持つ プロファイルの中身が新しいバージョンに属する情報を上書きしてしまい、 結果的にユーザーが新しいバージョンの Windows でログオンし直した際に必要な プロファイル情報が失われてしまうからである。

Windows 9x/Me とスタートメニューやデスクトップを共有させたい場合は、 プロファイルの共通領域を指定してやらなければならない。smb.conf で 同じにしなければならないパラメーターは logon pathlogon homeである。

これらが正しく設定されていれば、同じプロファイルディレクトリの中に別々の user.DATNTuser.DAT ファイルが見えるはずである。

Windows NT4/200x サーバーから Samba にプロファイルを移行する

ユーザープロファイルの位置に関しては、どこのパスを指定してもよい。つまり プロファイルを保存する場所は、その SMB サーバーが暗号化パスワードを サポートしている限り、Samba サーバーでもそれ以外のその SMBサーバー でもかまわない。

Windows NT4 のプロファイル管理ツール

残念なことに、現在のリソースキットの情報は Windows NT4/200x に特化 したものとなっている。各プラットフォームに対応したリソースキットの 存在が望まれる。

クイックガイド

Procedure 27.1. プロファイルの移行手順

  1. NT4 のドメインコントローラーの マイコンピューターで右クリックして プロパティユーザープロファイル タブを選ぶ

  2. 移行したいユーザープロファイルを選んでクリック

    Note

    ここでご紹介するのはゆるやかな移行 方法である。プロファイルをコピーしてグループプロファイルを作成し、 このプロファイルへのアクセス権を Everyone ユーザーに与える。Samba ドメインが NT4 の PDC と信頼関係を結んでいない 場合は、単にこれだけでよい。

  3. コピー先ボタンをクリック

  4. プロファイルのコピー先ボックスで、 c:\temp\foobarのように新しいパスを追加する

  5. 使用を許可するユーザー/グループ ボックスの変更をクリック

  6. グループEveryoneをクリックし、 OKをクリック。これでユーザーを選択 ボックスが閉じられる

  7. これでOKをクリック

全てのプロファイル移行について、以下の手順に従う。

補足事項

NT4 ドメイン側の SID を取得するには net rpc infoコマンドが使える。詳細は The Net Command Chapter, Other Miscellaneous Operations を参照されたい。

moveuser.exe

Windows 200x のリソースキットには moveuser.exe が含まれる。moveuser.exe はあるプロファイルの セキュリティをあるユーザーから別のユーザーに変更する。これにより アカウントのドメインを変更したりユーザー名を変更したりできる。

このコマンドは Samba のprofilesコマンドの ようなものである。

SID の取得

Windows NT Server 4.0 のリソースキットに含まれる GetSID.exeを使って SID を取得できる。

Windows NT 4.0 ではローカルプロファイルの情報はレジストリキー HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList配下に格納される。

ProfileList キー配下には、現在このコンピューターにログオンしている ユーザーが、SID をサブキー名として格納されている。 (ローカルにキャッシュされているプロファイルから移動したいユーザーの プロファイル情報を見つけるには、GetSID.exe ユーティリティーでこのユーザーの SID を見つければよい)。 適切なユーザーのサブキーの中に ProfileImagePath という名前の文字列値があるはずである。

必須プロファイル

必須プロファイルとは、ユーザーが上書きできないプロファイルのことである。 ユーザーセッションが有効の間、デスクトップ環境の変更が可能である。 しかしながら、ユーザーがログアウトするとすべての変更内容は失われてしまう。 ユーザーにデスクトップ環境を変更させたくない場合は、この設定をポリシー 設定を通して行うことができる。 System and Account Policies を参照のこと。

Note

どのような状況においてもプロファイルディレクトリー(もしくはそのファイル) をリードオンリーにはできない。なぜならそのプロファイルが使用できなく なってしまうからである。ただし UNIX ファイルシステム配下であれば プロファイルをリードオンリーにできなくもない。この場合、 fake-permissions VFS モジュールを使用する必要がある。 これは Windows NT/200x/XP クライアントに対して、そのユーザーのプロファイルに 書き込み権があるようにふるまう。 fake_perms VFS module を参照のこと。

Windows NT4/200x/XP では、必須プロファイルを作るのに Windows NT4/200x サーバーから Samba へのプロファイルの移行にあるような手順が使える。 グループプロファイルを必須プロファイルに変換するには、単に コピー先にプロファイルにNTUser.DATファイルを 入れ、それをNTUser.MANにリネームすればよい。

Windows 9x/Me の場合はUser.DATファイルを User.MANにリネームすることで必須プロファイルを 作成できる。

グループプロファイルの作成と管理

多くの組織は部署に分かれている。ひとつの部署内のユーザーは同じデスクトップ アプリケーションや同じデスクトップレイアウトを要求することが多いので、 部署単位で管理できるといろいろと都合のよいことが多い。 Windows NT4/200x/XP では、グループプロファイルが利用できる。 グループプロファイルは、まずテンプレート(例示)ユーザーを使って作られる。 その後、後述のプロファイル移行ツールを使ってそのユーザーグループから グループプロファイルに対する必要なアクセス権が設定される。

次のステップはもっと重要である。グループプロファイルを (ユーザーマネージャーを使って)各ユーザーにユーザー単位で 割り当てるのではなく、そのグループ自体を更新されたプロファイルに 割り当てるのである。

Note

グループプロファイルには注意すること。個人プロファイルをすでに持っている グループのメンバーがユーザーである場合、その結果は2つを統合(マージ) したものとなる。

Windows ユーザーのデフォルトプロファイル

Windows 9x/Me および NT4/200x/XP では、プロファイルが存在しないユーザー についてはデフォルトプロファイルを使用する。デフォルトプロファイルが Windows workstation 上にあるとわかっている場合、およびデフォルト プロファイルを作るパスを示すレジストリキーがわかっている場合、使用する デフォルトプロファイルをこのサイト用に最適化されたものに変更できる。 これは管理上重要な利点である。

MS Windows 9x/Me

Windows 9x/Me でユーザーごとのデフォルトプロファイルを有効にするには、 Windows 98 システムポリシーエディター を使うか、またはレジストリを直接変更する。

Windows 9x/Me でユーザーごとのデフォルトプロファイルを有効にするには システムポリシーエディターを起動し、 ファイル -> レジストリを開く を選択する。次にローカルコンピューターアイコンを クリックし、Windows 98 システムをクリックして 「有効」ボックスのユーザープロファイルを選択する。 レジストリの変更を保存するのを忘れないこと。

レジストリを直接変更するには レジストリーエディター (regedit.exe) を起動し、 HKEY_LOCAL_MACHINE\Network\Logonハイブを選択する。 ここでUser Profilesキーのところに DWORD を追加する。 ユーザープロファイルを有効にするには 1 を、無効にするには 0 をセットする。

Windows 9x/Me におけるユーザープロファイルの取り扱い

ユーザーが Windows 9x/Me マシンにログオンすると、そのユーザーに関する 既存のエントリを処置するのにローカルプロファイルのパス HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\ProfileList がチェックされる。

レジストリのこの位置にユーザーのエントリがある場合、Windows 9x/Me は ユーザープロファイルのキャッシュされたバージョンをローカルでチェックする。 Windows 9x/Me では、さらにサーバー上にあるユーザーのホームディレクトリー (場所が変更されている場合は指定されたディレクトリー)にある(かもしれない) ユーザープロファイルもチェックする。プロファイルがどちらにもある場合は、 新しい方が使われる。プロファイルがサーバー上にあるがローカルマシン上には ない場合は、サーバー上のプロファイルをダウンロードして使用する。ユーザー プロファイルがローカルマシン上のみにある場合は、そのコピーが使われる。

ユーザープロファイルがこれらのどちらにもない場合は、Windows 9x/Me マシン のデフォルトユーザープロファイルが使われ、ログインしているユーザーの新しく 作られたディレクトリにこのプロファイルのコピーが作られる。ログオフの際、 ユーザーが行った変更がすべてこのユーザーのローカルプロファイルに書きこまれる。 このユーザーが移動プロファイルを使っている場合、変更内容はサーバー上ある このユーザーのプロファイルに書きこまれる。

MS Windows NT4 Workstation

Windows NT4 の場合、デフォルトユーザープロファイルは %SystemRoot%\Profiles から読みこまれる。 インストール時のデフォルト設定では、ここは C:\Windows NT\Profilesとなる。 クリーンインストール後におけるこのディレクトリの中身は Administrator, All Users, Default Userという3つのディレクトリから構成される。

All Users ディレクトリにはシステムユーザーすべてで 共通で使われるメニュー設定が入る。Default User ディレクトリには、各ユーザーが自分で選択したり作成したりした プロファイル設定に依存する、カスタマイズ可能なメニューエントリが入る。

新しいユーザーが最初に Windows NT4 のマシンにログオンする際、以下を元に 新しいプロファイルが作られる。

  • All Users の設定

  • Default User(デフォルトの NTUser.DAT ファイルを含む)の設定

あるユーザーがマイクロソフトのセキュリティードメインのメンバーである Windows NT4 マシンにログオンする際は、プロファイルの扱いに関して以下の 手順を踏む:

  1. ログオンプロセスを通して得られるユーザーのアカウント情報には、その ユーザーのデスクトッププロファイルの場所も入っている。プロファイルの パスはマシンのローカルにある場合もあるし、ネットワーク共有の中かも しれない。プロファイルがユーザーアカウントから得られたパスの位置に ある場合、このプロファイルは %SystemRoot%\Profiles\%USERNAME% という位置にコピーされる。そしてこのプロファイルの内容は、 %SystemRoot%\Profilesにある All Usersプロファイルの設定を継承する。

  2. ユーザーアカウントがプロファイルへのパスを持っているが、そこに プロファイルが存在しない場合、Default User プロファイルが参照され、それを元にして新しいプロファイルが %SystemRoot%\Profiles\%USERNAME% に作られる。

  3. 認証サーバー(ログオンサーバー)上の NETLOGON 共有内にポリシー ファイル(NTConfig.POL)がある場合、その内容は NTUser.DATに適用され、最終的にはレジストリの HKEY_CURRENT_USER部分に適用される。

  4. ユーザーがログアウトする際、そのプロファイルが移動プロファイルで あれば、指定されたプロファイルの場所に書き出される。その後 HKEY_CURRENT_USERの内容から NTuser.DATファイルが再度作成される。つまり、 次回のログイン時には NETLOGON 共有内に NTConfig.POLが存在するべきではなく、そのひとつ 前のNTConfig.POL がプロファイル内にあれば、 それが有効になる。この効果はタトゥーイング(入れ墨)と呼ばれる。

Windows NT4 のプロファイルのタイプはローカル移動のどちらかである。ローカルプロファイルは %SystemRoot%\Profiles\%USERNAME%に置かれる。 以下のレジストリキーを作っておかない限り、移動プロファイルも同様に 残ったままとなる。

HKEY_LOCAL_MACHINE\SYSTEM\Software\Microsoft\Windows NT\CurrentVersion\
winlogon\"DeleteRoamingCache"=dword:0000000

このケースでは、 (%SystemRoot%\Profiles\%USERNAME%にある) ローカルのコピーは、ログアウト時に削除される。

Windows NT4 では後述のレジストリキーを変更することで、 マイドキュメントといった共有リソースのデフォルト 位置をネットワーク共有上にリダイレクトすることができる。これらの変更は システムポリシーエディターを使って行える。これを GUI 上で行いたい 場合は、ポリシーエディターで自分自身のテンプレート拡張を作る必要がある かもしれない。別の方法としては、まずデフォルトのユーザープロファイル を作成し、そのユーザーでログインしてからregedt32 でキー設定の編集を行う。

あるフォルダーをデフォルトのユーザープロファイルとしたい場合のレジストリ ハイブキーは、Windows NT4 の場合以下で制御できる:

HKEY_CURRENT_USER
	\Software
		\Microsoft
			\Windows
				\CurrentVersion
					\Explorer
						\User Shell Folders

前述のハイブキーには自動的に管理されるフォルダーがある。デフォルトの エントリはthe next tableにある。

Table 27.1. User Shell Folder レジストリキーのデフォルト値

名前デフォルト値
AppData%USERPROFILE%\Application Data
Desktop%USERPROFILE%\Desktop
Favorites%USERPROFILE%\Favorites
NetHood%USERPROFILE%\NetHood
PrintHood%USERPROFILE%\PrintHood
Programs%USERPROFILE%\Start Menu\Programs
Recent%USERPROFILE%\Recent
SendTo%USERPROFILE%\SendTo
Start Menu %USERPROFILE%\Start Menu
Startup%USERPROFILE%\Start Menu\Programs\Startup

デフォルトプロファイルの場所の設定を含むレジストリキー:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\
User Shell Folders

デフォルトのエントリは デフォルトのプロファイル設定用のレジストリキー にある。

Table 27.2. デフォルトのプロファイル設定用のレジストリキー

Common Desktop%SystemRoot%\Profiles\All Users\Desktop
Common Programs%SystemRoot%\Profiles\All Users\Programs
Common Start Menu%SystemRoot%\Profiles\All Users\Start Menu
Common Startup%SystemRoot%\Profiles\All Users\Start Menu\Programs\Startup

MS Windows 200x/XP

Note

Windows XP Home Edition ではユーザーごとのデフォルトプロファイルは 使われず、ドメインセキュリティにも参加できず、NT/ADS スタイルの ドメインにもログインできないので、プロファイル情報は自分自身で持って おくしかない。デフォルトプロファイルを設定できるといろいろと便利なので、 ドメインログオン処理に参加できるような上位レベルの Windows クライアント では、管理者がグローバルのデフォルトプロファイルを事前に作っておき、 グループポリシーオブジェクト(GPO)を経由してそれらを強制的に適用する という仕組みを備えている。

新しいユーザーが最初に Windows 200x/XP マシンにログインすると、 デフォルトプロファイルは C:\Documents and Settings\Default User から読みこまれる。システム管理者が必要に応じてこの中身を変更していても、 Windows 200x/XP は喜んでその指示に従う。これは最善の処置とは とても言えるものではない。なぜなら、このデフォルトプロファイルを すべての Windows 200x/XP クライアントマシンにコピーして回らなければ ならないからである。

Windows 200x/XP がドメインレベルのセキュリティに参加する際、 デフォルトのユーザープロファイルが見つからなければ、クライアントは デフォルトプロファイルを探すために認証サーバーの NETLOGON 共有を 見に行く。ここで Windows の元々の動きとしては、まず %LOGONSERVER%\NETLOGON\Default User を見に行き、もしこのディレクトリがあればこの配下のファイルが クライアント側のC:\Documents and Settings\ 直下にある現在 Windows にログイン中のユーザー名にコピーされる。

Note

一方 Samba 側の動きとしては、このパスは smb.conf[NETLOGON] 共有に読み替えられる。 このディレクトリはこの共有の直下にDefault User という名前で作っておかなければならない。

この場所にデフォルトプロファイルが存在しない場合、Windows 200x/XP はローカルのデフォルトプロファイルを使用する。

ログアウトの際、ユーザーのデスクトッププロファイルはそのユーザーに 関連するレジストリ設定で指定された場所に格納される。(Samba では 自動的に行われるが)ログイン処理の際に特定のポリシーが作られ もしくは渡されない場合、ユーザーのプロファイルはローカルマシンの C:\Documents and Settings\%USERNAME% パス配下にのみ書きこまれる。

デフォルトの振る舞いを変更したい場合は、以下の3つの方法を使えばよい:

  • ローカルマシンのレジストリキーを手作業で変更し、NETLOGON 共有の 直下に新しいデフォルトプロファイルを置く。保守でいっせいに行う 必要があるので、この方法はお勧めしない。

  • この振る舞いを指定した NT4 スタイルの NTConfig.POL ファイルを 作成し、それを新しいデフォルトプロファイルと共に NETLOGON 共有の直下に置く。

  • これを Active Directory を通して行うように強制する GPO を 作成し、新しいデフォルトプロファイルを NETLOGON に置く。

Windows 200x/XP において、デフォルトユーザープロファイルの一部 となるフォルダーに関する振る舞いに影響を与えるレジストリのハイブ キーは以下のエントリーである:

HKEY_CURRENT_USER\Software\Microsoft\Windows\ CurrentVersion\Explorer\User Shell Folders\

このハイブキーには自動的に管理されるフォルダーのリストが含まれる。 デフォルトのエントリーは 次の表にある。

Table 27.3. デフォルトユーザープロファイルへのパスのデフォルト値 を持つレジストリエントリー

名前デフォルト値
AppData%USERPROFILE%\Application Data
Cache%USERPROFILE%\Local Settings\Temporary Internet Files
Cookies%USERPROFILE%\Cookies
Desktop%USERPROFILE%\Desktop
Favorites%USERPROFILE%\Favorites
History%USERPROFILE%\Local Settings\History
Local AppData%USERPROFILE%\Local Settings\Application Data
Local Settings%USERPROFILE%\Local Settings
My Pictures%USERPROFILE%\My Documents\My Pictures
NetHood%USERPROFILE%\NetHood
Personal%USERPROFILE%\My Documents
PrintHood%USERPROFILE%\PrintHood
Programs%USERPROFILE%\Start Menu\Programs
Recent%USERPROFILE%\Recent
SendTo%USERPROFILE%\SendTo
Start Menu%USERPROFILE%\Start Menu
Startup%USERPROFILE%\Start Menu\Programs\Startup
Templates%USERPROFILE%\Templates

値がセットされていない、Defaultと呼ばれるエントリーもある。 デフォルトのえんとりーの型はREG_SZである。 これ以外の全ての型はREG_EXPAND_SZである。

全てのフォルダーがネットワークサーバー上の特定の場所に格納されて いる場合、移動プロファイルを処理するスピードには大きな違いが出る。 つまり、ログインやログアウトのたびに Outlook の PST ファイルを ネットワークの向こうに書き出す必要はないということだ。

これをネットワーク上の場所にするには、以下の例に従えばよい:

%LOGONSERVER%\%USERNAME%\Default Folders

これにより、フォルダーはユーザーのホームディレクトリーにある Default Foldersという名前のディレクトリー 配下に格納される。また以下の書式で指定してもよい:

\\SambaServer\FolderShare\%USERNAME%

この場合、デフォルトフォルダーは SambaServerという名前のサーバー上にある FolderShareという名前の共有の下の、 Linux/UNIX ファイルシステムによって Windows ユーザーの名前を つけられたディレクトリーに格納される。

いったんデフォルトプロファイルの共有を作ったら、その中に移行する ユーザーのプロファイルを(デフォルト値であれカスタマイズしたもの であれ)を置かなければならないことに注意して 欲しい。

Windows 200x/XP のプロファイルはローカル または移動のいずれかである。移動プロファイルは 以下のレジストリキーが作られていない限りローカルにキャッシュされる:

HKEY_LOCAL_MACHINE\SYSTEM\Software\Microsoft\
Windows NT\CurrentVersion\winlogon\"DeleteRoamingCache"=
dword:00000001

この設定をすると、ログアウト時にローカルのキャッシュは削除される ようになる。

よくあるエラー

Samba のメーリングリストで質問があった典型的なエラーや問題、 質問内容を以下に示す。

少人数のユーザーやグループのための移動プロファイルの設定

Samba-2.2.x では、移動プロファイルをサポートするか否かという 選択肢しかない。これはグローバル設定である。デフォルトでは 移動プロファイルを持つことになっており、デフォルトのパスは ユーザーのホームディレクトリー配下にある。

グローバルで無効にすると、誰も移動プロファイルを持てなくなる。 移動プロファイル自身は有効にするが、これを特定のマシンにしか 適用させたくない場合は、移動プロファイルサポートをしたくない 個々のマシンにおいて、これを無効にする設定をレジストリに書き 込んでやらなければならない。

Samba-3 では、グローバル設定を smb.conf に書いておき、 各ユーザーごとの設定を(Windows NT4/200x の)ドメインユーザー マネージャで上書きすることができる。

どのケースにおいても、各ユーザーごとにひとつのプロファイルしか 持てない。このプロファイルは以下のいずれかになる:

  • そのユーザー固有のプロファイル

  • 必須プロファイル(ユーザーは変更できない)

  • グループプロファイル (実際は必須となる すなわち変更不可)

移動プロファイルを使えない

あるユーザーからの要求: 移動プロファイルを実装して欲しくない。 各ユーザーにローカルプロファイルだけを与えたい。 私はこのエラーでひどく損害を受けた。 この2日間、あらゆることを試してみた。 Google を検索したりもしてみたが、役に立つ情報はなかった。 助けてください。

選択肢としては、以下のようになるだろう:

ローカルプロファイル

ログアウト時に「ローカルの」プロファイルを 自動で消すようなレジストリキーがないことがわかっている。

移動プロファイル

ユーザーがネットワークにログオンすると、中央に格納された プロファイルがワークステーションにコピーされてローカルの プロファイルが作られる。このローカルプロファイルは、 レジストリキーが変更されてログアウト時の自動削除が有効に ならない限りは永続的になる(ワークステーションのディスク 上に残る)。

移動プロファイルの選択をする場合:

個人の移動プロファイル

一般的には中央の(もしくは便宜上ローカルにある) サーバー上のプロファイル用共有に格納されている。

ワークステーションはプロファイルのローカルコピーを キャッシュ(格納)する。このキャッシュされたコピーは、 次回のログイン時にプロファイルがダウンロードできなかった 場合に使用される。

グループプロファイル

これらは中央のプロファイルサーバーから読み込まれる。

必須プロファイル

必須プロファイルはユーザー用としてだけではなく、 そのユーザーが属するすべてのグループのためにも作られる。 必須プロファイルを通常のユーザーが変更することはできない。 これを変更したり再構成したりできるのは、システム管理者に限られる。

Windows NT4/200x/XP のプロファイルは、そのサイズが最低 130KB から 巨大なサイズまで変動する。プロファイルの中の多くを占めるのは、往々 にして Outlook の PST ファイルであり、これはギガバイトレベルまで 膨らむこともある。(好ましい状態で運用されている環境における) 平均的な移動プロファイルのサイズは、計画段階では 2MB 程度であると 考えればよいだろう。きちんと管理されていない環境では、プロファイルが 2GB まで膨れ上がったのを見たことがある。こうなるとログオンに1時間 くらいもかかってユーザーからの不満が出るかもしれないが、おおかた くだらないごみファイルをため込んでいるのであろう。

この議論のポイントは、移動プロファイルを使って変更できる設定とできない 設定をうまくコントロールしてやれば、問題の少ないサイト運用ができる ということである。

PST 問題に対するマイクロソフトの回答は、すべての電子メールを MS Exchange Server バックエンドに格納するべき、というものである。 これを使えば PST ファイルが必要なくなる。

ローカルプロファイルの意味するところは:

  • それぞれのマシンが多くのユーザーによって使用されるなら、ローカル プロファイルを格納するために多くのディスク領域が必要になる。

  • ユーザーがログインするそれぞれのワークステーションにはそれぞれの プロファイルが格納されている。これらはマシン間で全く別物に なっているかもしれない。

一方、移動プロファイルの意味するところは:

  • ネットワーク管理者は、全ユーザーのデスクトップ 環境をコントロールできる。

  • 移動プロファイルを使うと、ネットワーク管理の オーバーヘッドを劇的に削減できる。

  • 長時間のスパンで考えれば、ユーザーが問題に直面する 危険性が減るだろう。

デフォルトプロファイルを変更する

クライアントがドメインコントローラーにログオンする際、クライアントは ダウンロードするべきプロファイルを検索する。我々はデフォルト プロファイルをどこに置くべきだろうか?

まず Samba サーバーはドメインコントローラーとして構成する必要がある。 そのためには smb.conf に以下の設定を行う:

security = user
os level = 32 (or more)
domain logons = Yes

次に [netlogon] が必須で、ここは全ユーザーが 読めるようになっていなければならない。ここに既存のプリンターやドライブ の割り当てをするためのログオンスクリプトを追加しておくのもよいだろう。 ワークステーションの時刻をログオンサーバーと自動的に同期させる 仕組みもある(これもやっておくことが好ましい)。

Note

ローカルワークステーションのキャッシュ(=ディスク領域)から移動 プロファイルを自動検出させるには、 グループポリシーエディターを使って NTConfig.POLと呼ばれるファイルを作成し、 この中で適切な設定を行っておく。このファイルは netlogon共有の直下に置いておかなければ ならない。

Windows クライアントはドメインのメンバーである必要がある。 ワークグループのマシンではネットワークログオンが使えないので ドメインプロファイルによる運用はできない。

移動プロファイル用に smb.conf に追加する項目:

logon path = \\%N\profiles\%U
# Default logon drive is Z:
logon drive = H:
# This requires a PROFILES share that is world writable.

移動プロファイルと NT4 スタイルのドメインポリシーのデバッグ

移動プロファイルとドメインポリシーは USERENV.DLL により実装されている。この DLL をデバッグしてログインプロセスを解析 するためのやり方は、Microsoft Knowledge Base の 221833154120 という記事に解説がある。