移動プロファイルは一部の人にとっては恐れられており、 これを忌み嫌う人もいないではないが、また多くの人に愛されてもいる。 これを天の恵みだと考えている管理者もいる。
ユーザーが使用するマシンを毎回変えるような環境であっても、ローミング プロファイルを使えば管理者は常に同じユーザーデスクトップ環境を提供できる。 この章では移動プロファイルの構成と管理の手法に関する多くの情報を 提供する。
移動プロファイルはある種、楽園のように聞こえる人もいるかも しれないが、その他の人々にとっては、これは現実の、そして目に見える 問題でもある。特に、接続状態が安定しないモバイルコンピューティング 機器を利用するユーザーは、純粋なローカルプロファイルを使うケースが 多いであろう。この章では Samba の管理者がこのような状況に対処する ための手助けになるような情報を提供する。
移動プロファイルのサポートは、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 リクエストを送る。 これには多くのフィールドがあり、分割されたユーザープロファイルの位置を表す 情報も含まれている。
この章では MS Windows クライアントのプロファイルサポートのための Samba の設定について解説する。
たとえば、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 ページを参照してほしい。
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
を指定したように振舞う。
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 = を適用すると、すべてのクライアントがローカルプロファイルを使うようになる。
これらのパラメーターへの引数はブランクのままにしておかなければならない。
空の値を設定する場合でも =
記号は必要である。
マイクロソフト管理コンソール(MMC)の gpedit.msc
を使って、その Windows XP マシンがローカルプロファイルだけを使う
ようにする。もちろんこれはレジストリの設定を変更する。
オプションへのフルパスは以下の通り:
ローカル・コンピューター・ポリシー\ コンピューターの構成\ 管理用テンプレート\ システム\ ユーザープロファイル\ 無効: ローカルユーザープロファイルのみを許可する 無効: 移動プロファイルへの変更をサーバーに伝達しない
スタートメニューのマイコンピューター・アイコンで右クリックし、 ユーザープロファイルの設定で変更したいプロファイルを 選んで「種類の変更」をクリックし、 を に変更する。
の詳細設定タブを開く。特定バージョンの MS Windows において、どのレジストリキーを変更すれば 強制的にローカルプロファイルになるのかは、MS Windows レジストリガイドを 参照のこと。
ユーザーが最初に 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
にリネームし、さらにこれらのファイルを書き込み禁止にしておく。
Windows 9x/Me マシンでは、ユーザー・プロファイルタブを選ぶ。 要求する移動設定のレベルを選択して を押すが、 ここではコンピューターのリブートを行わない。
-> に入ってWindows 9x/Me マシンでは、Preferencesに行き、 NTドメインにログオンを選択する。 そしてプライマリログオン(通常のログオン方法?)が になっていることを確認して を押す。 ここでコンピューターをリブートする。
-> -> ->Windows 9x/Me では、プロファイルはプライマリ・ログオンからダウンロードされる。 プライマリ・ログオンが「ノベルネットワーク用クライアント」 になっている場合、プロファイルとログオンスクリプトは使用中のノベルサーバー からダウンロードされる。プライマリ・ログオンが「Windows ログオン」 になっている場合、プロファイルは移動プロファイルの考え方から少しはずれて ローカルマシンの からロードされる。
マイクロソフトネットワークのログインダイアログには
[ユーザー名, パスワード]
だけに代わって
[ユーザー名, パスワード, ドメイン]
が表示されている
ことにお気づきだろうか?ここで Samba サーバーのドメイン名、および
ユーザー名、パスワードを入力する。なお、Samba サーバーの代わりに
存在することがわかっているドメイン名を入力してもよい。その場合、
そのドメインによってユーザー認証が行われ、さらにそのドメインの
ログオンサーバーがサポートしていれば、プロファイルがそのサーバーから
ダウンロードされる。
そのユーザーの正当性が確認されると、Windows 9x/Me マシンは
このユーザーは過去に一度もログインされていません
を表示し、このユーザーの設定情報を保存しますか?
と聞いてくるので で答える。
Windows 9x/Me のデスクトップが起動したら、Samba サーバー上の
logon path にあるディレクトリーの中に
デスクトップ
, スタートメニュー
,
プログラム
, 近くのコンピューターNethood
フォルダー群が作られていることがわかるだろう。
これらのフォルダーはクライアント上でローカルでキャッシュされ、 (事前にリードオンリーに設定しておかない限り)ユーザーのログオフ時に更新される。 ユーザーがさらにフォルダーやショートカットを作ると、クライアントはこれらを すでにダウンロード済みのプロファイルの中身とマージして、それらの中から 最新のフォルダーやショートカットを選択する。
Samba サーバー上のフォルダー/ファイルをリードオンリーにしていた場合、 Windows 9x/Me はログオンやログアウト時にローカルとリモートの プロファイルをマージしようとしてエラーが発生する。基本的に Windows 9x/Me でエラーが出たら、Samba サーバー上のプロファイルディレクトリーで、 UNIX 側のファイルのパーミッションや所有者の権限をチェックしてみてほしい。
ユーザープロファイルの生成で失敗する場合、そのユーザーのローカルデスクトップの キャッシュを後述の要領でリセットしてやるとよい。このユーザーが次回ログオンした時、 「今回はじめて」ログオンした旨のメッセージが表示される。
[ユーザー名, パスワード, ドメイン] ダイアログでログオンする代わりに
を押す。
regedit.exe
を起動して以下のエントリを探す:
HKEY_LOCAL_MACHINE\Windows\CurrentVersion\ProfileList
ここに各ユーザーの ProfilePath があるので(このキーの内容は
c:\windows\profiles\ユーザー名
と同様である)、この中で
該当するユーザーの ProfilePath
キーを削除する。
レジストリエディターを終了する。
c:\windows
ディレクトリー配下から当該ユーザーの
パスワードチェインファイル .PWL を見つけ、これを削除する。
Windows 9x/Me クライアントをログオフする。
プロファイルパスの中身(前述の logon path
を参照)を確認し、ユーザーの user.DAT
または
user.MAN
を、必要であればバックアップを取ってから
削除する。
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 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
でなければならない。
まずローカルプロファイルを MS Windows ワークステーション上で 以下のようにドメインプロファイルに変換しなければならない:
ローカルのワークステーション管理者 としてログイン
マイコンピューターアイコンで 右クリックして を選択
ユーザープロファイルタブをクリック
変換したいプロファイルを選択(一回クリック)
ボタンをクリック
使用を許可するユーザー/グループ ボックスの ボタンをクリック
マシン名の一覧が出る場所をクリック。 ここをクリックすると選択ボックスが開くので、プロファイルを アクセス可能にするべきドメインをクリック。
ログオンボックスが表示された場合はそこでログオンする。
たとえば DOMAIN
\root に
パスワード:mypassword
で接続する。
プロファイルを誰でも使えるようにする場合は 「Everyone」 を選択
を押すと選択ボックスが閉じる
これで
を押すと、 指定した場所にプロファイルが作られる
これで Samba の profiles
ツールから編集可能な
プロファイルの作成ができた。
Windows NT/200x では、必須プロファイルを使うとメールデータとして MS Exchange のストレージを使うことしかできなくなり、またこれは デスクトッププロファイルからは除外される。これにより、 デスクトッププロファイルを使用不可にできない。
Windows XP (もしくは Windows XP サービスパック 1 のみ?)では セキュリティーチェックが追加された。これは Active Directory のグループポリシー経由で無効にできる。このポリシーは、以下の 手順で呼び出せる:
コンピューターの設定\ 管理用テンプレート\ システム\ ユーザープロファイル\ 移動プロファイルフォルダーのユーザー所有権を確認しない
これは 有効
にしておく
新しいバージョンの Samba には Active Directory と似たような 仕組みがあるだろうか?もしあるなら、前述の手順に従って このポリシーを設定できるだろう。
Samba ではグループポリシーが設定できないようでも、各マシンで ローカルに設定することは可能である。もしこの作業を行いたければ 以下のようにすればよい:
XP workstation に管理者権限でログインする
-> をクリック
mmc
とタイプする
をクリック
マイクロソフト管理コンソールが起動する
-> -> をクリック
グループポリシーをダブルクリック
-> をクリック
をクリック
「コンソールルート」 ウィンドウで ローカルコンピューターポリシー -> コンピューターの構成 -> 管理用テンプレート -> システム -> ユーザープロファイルを展開
移動プロファイルフォルダーのユーザー所有権を確認しない をダブルクリック
有効を選択
をクリック
コンソール全体を閉じる。設定を保存する必要はない (「保存」は変更したポリシーのことでではなく、コンソール設定の ことを指している)
リブート
終了時に、移動プロファイルのキャッシュされたローカルコピーを強制削除する
設定になっているにも関わらず、それらが消されないという状況がありうる。
このような現象に対処するために、特別なサービスが作られた。
Windows NT4/2000/XP Professional と Windows 2003 には
UPHClean
(User Profile Hive Cleanup) という
アプリケーションをサービスとしてインストールできる。
UPHClean のソフトウェアパッケージは the User Profile Hive Cleanup Service[7]というWebサイトからダウンロードできる。
Windows の異なったバージョン間でデスクトップを共有することは推奨されない。 デスクトッププロファイル領域は未だ進化の途上であり、新しいバージョンの Windows プロファイルで追加された機能は、それまでのバージョンの動作を 阻害する。新旧のプロファイルを混在させるべきではないより大きな理由は、 古いバージョンの Windows をログオフする際、古いフォーマットを持つ プロファイルの中身が新しいバージョンに属する情報を上書きしてしまい、 結果的にユーザーが新しいバージョンの Windows でログオンし直した際に必要な プロファイル情報が失われてしまうからである。
Windows 9x/Me とスタートメニューやデスクトップを共有させたい場合は、
プロファイルの共通領域を指定してやらなければならない。smb.conf
で
同じにしなければならないパラメーターは logon path
と logon homeである。
これらが正しく設定されていれば、同じプロファイルディレクトリの中に別々の
user.DAT
と NTuser.DAT
ファイルが見えるはずである。
ユーザープロファイルの位置に関しては、どこのパスを指定してもよい。つまり プロファイルを保存する場所は、その SMB サーバーが暗号化パスワードを サポートしている限り、Samba サーバーでもそれ以外のその SMBサーバー でもかまわない。
残念なことに、現在のリソースキットの情報は Windows NT4/200x に特化 したものとなっている。各プラットフォームに対応したリソースキットの 存在が望まれる。
クイックガイド
手順27.1 プロファイルの移行手順
NT4 のドメインコントローラーの マイコンピューターで右クリックして プロパティ の ユーザープロファイル タブを選ぶ
移行したいユーザープロファイルを選んでクリック
ここでご紹介するのはゆるやかな「移行」
方法である。プロファイルをコピーしてグループプロファイルを作成し、
このプロファイルへのアクセス権を Everyone
ユーザーに与える。Samba ドメインが NT4 の PDC と信頼関係を結んでいない
場合は、単にこれだけでよい。
ボタンをクリック
プロファイルのコピー先ボックスで、
c:\temp\foobar
のように新しいパスを追加する
使用を許可するユーザー/グループ ボックスの をクリック
グループ「Everyone」をクリックし、 をクリック。これで「ユーザーを選択」 ボックスが閉じられる
これで
をクリック全てのプロファイル移行について、以下の手順に従う。
NT4 ドメイン側の SID を取得するには
net rpc info
コマンドが使える。詳細は
The Net Command Chapter,
Other Miscellaneous Operations
を参照されたい。
Windows 200x のリソースキットには moveuser.exe
が含まれる。moveuser.exe
はあるプロファイルの
セキュリティをあるユーザーから別のユーザーに変更する。これにより
アカウントのドメインを変更したりユーザー名を変更したりできる。
このコマンドは Samba のprofiles
コマンドの
ようなものである。
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 を参照のこと。
どのような状況においてもプロファイルディレクトリー(もしくはそのファイル)
をリードオンリーにはできない。なぜならそのプロファイルが使用できなく
なってしまうからである。ただし 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 では、グループプロファイルが利用できる。 グループプロファイルは、まずテンプレート(例示)ユーザーを使って作られる。 その後、後述のプロファイル移行ツールを使ってそのユーザーグループから グループプロファイルに対する必要なアクセス権が設定される。
次のステップはもっと重要である。グループプロファイルを (ユーザーマネージャーを使って)各ユーザーに「ユーザー単位で」 割り当てるのではなく、そのグループ自体を更新されたプロファイルに 割り当てるのである。
グループプロファイルには注意すること。個人プロファイルをすでに持っている グループのメンバーがユーザーである場合、その結果は2つを統合(マージ) したものとなる。
Windows 9x/Me および NT4/200x/XP では、プロファイルが存在しないユーザー についてはデフォルトプロファイルを使用する。デフォルトプロファイルが Windows workstation 上にあるとわかっている場合、およびデフォルト プロファイルを作るパスを示すレジストリキーがわかっている場合、使用する デフォルトプロファイルをこのサイト用に最適化されたものに変更できる。 これは管理上重要な利点である。
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 マシンにログオンすると、そのユーザーに関する
既存のエントリを処置するのにローカルプロファイルのパス
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\ProfileList
がチェックされる。
レジストリのこの位置にユーザーのエントリがある場合、Windows 9x/Me は ユーザープロファイルのキャッシュされたバージョンをローカルでチェックする。 Windows 9x/Me では、さらにサーバー上にあるユーザーのホームディレクトリー (場所が変更されている場合は指定されたディレクトリー)にある(かもしれない) ユーザープロファイルもチェックする。プロファイルがどちらにもある場合は、 新しい方が使われる。プロファイルがサーバー上にあるがローカルマシン上には ない場合は、サーバー上のプロファイルをダウンロードして使用する。ユーザー プロファイルがローカルマシン上のみにある場合は、そのコピーが使われる。
ユーザープロファイルがこれらのどちらにもない場合は、Windows 9x/Me マシン のデフォルトユーザープロファイルが使われ、ログインしているユーザーの新しく 作られたディレクトリにこのプロファイルのコピーが作られる。ログオフの際、 ユーザーが行った変更がすべてこのユーザーのローカルプロファイルに書きこまれる。 このユーザーが移動プロファイルを使っている場合、変更内容はサーバー上ある このユーザーのプロファイルに書きこまれる。
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 マシンにログオンする際は、プロファイルの扱いに関して以下の 手順を踏む:
ログオンプロセスを通して得られるユーザーのアカウント情報には、その
ユーザーのデスクトッププロファイルの場所も入っている。プロファイルの
パスはマシンのローカルにある場合もあるし、ネットワーク共有の中かも
しれない。プロファイルがユーザーアカウントから得られたパスの位置に
ある場合、このプロファイルは
%SystemRoot%\Profiles\%USERNAME%
という位置にコピーされる。そしてこのプロファイルの内容は、
%SystemRoot%\Profiles
にある
All Users
プロファイルの設定を継承する。
ユーザーアカウントがプロファイルへのパスを持っているが、そこに
プロファイルが存在しない場合、Default User
プロファイルが参照され、それを元にして新しいプロファイルが
%SystemRoot%\Profiles\%USERNAME%
に作られる。
認証サーバー(ログオンサーバー)上の NETLOGON 共有内にポリシー
ファイル(NTConfig.POL
)がある場合、その内容は
NTUser.DAT
に適用され、最終的にはレジストリの
HKEY_CURRENT_USER
部分に適用される。
ユーザーがログアウトする際、そのプロファイルが移動プロファイルで
あれば、指定されたプロファイルの場所に書き出される。その後
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にある。
表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
デフォルトのエントリは デフォルトのプロファイル設定用のレジストリキー にある。
表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 |
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 にログイン中のユーザー名にコピーされる。
一方 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\
このハイブキーには自動的に管理されるフォルダーのリストが含まれる。 デフォルトのエントリは 次の表にある。
表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 では、グローバル設定を 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]
が必須で、ここは全ユーザーが
読めるようになっていなければならない。ここに既存のプリンターやドライブ
の割り当てをするためのログオンスクリプトを追加しておくのもよいだろう。
ワークステーションの時刻をログオンサーバーと自動的に同期させる
仕組みもある(これもやっておくことが好ましい)。
ローカルワークステーションのキャッシュ(=ディスク領域)から移動
プロファイルを自動検出させるには、
グループポリシーエディターを使って
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. |