Chapter 27. デスクトッププロファイルの管理
Prev | Part III. 詳細な設定方法 | Next

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

### John H. Terpstra

Samba Team

`<jht@samba.org>`

April 3 2003

## その特長と利点

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

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

移動プロファイルはある種、楽園のように聞こえる人もいるかもしれないが、その他の人々にとっては、これは現実の、そして目に見える問題でもある。特に、接続状態が安定しないモバイルコンピューティング機器を利用するユーザーは、純粋なローカルプロファイルを使うケースが多いであろう。この章では 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 home とlogon path 両方のパラメータをセットすると、Windows 9x と Windows NT クライアントの両方をサポートできるようになる。たとえば、

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

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

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

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

これには、３つのやり方がある：

`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 pathと logon homeである。

これらが正しく設定されていれば、同じプロファイルディレクトリの中に別々の`user.DAT` と `NTuser.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

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

## 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`という３つのディレクトリから構成される。

`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%`パス配下にのみ書きこまれる。

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

- ローカルマシンのレジストリキーを手作業で変更し、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 の）ドメインユーザーマネージャで上書きすることができる。

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

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

- 必須プロファイル（ユーザーは変更できない）

- グループプロファイル （実際は必須となる すなわち変更不可）

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

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

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

ローカルプロファイル

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

移動プロファイル

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

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

個人の移動プロファイル

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

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

グループプロファイル

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

必須プロファイル

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

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

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

PST 問題に対するマイクロソフトの回答は、すべての電子メールを MSExchange 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 の221833と154120という記事に解説がある。

Prev | Up | Next
Chapter 26. システムとアカウントポリシー | Home | Chapter 28. PAM ベースの分散型認証