移動プロファイルは一部の人にとっては恐れられており、これを忌み嫌う人もいないではないが、また多くの人に愛されてもいる。これを天の恵みだと考えている管理者もいる。
ユーザーが使用するマシンを毎回変えるような環境であっても、ローミングプロファイルを使えば管理者は常に同じユーザーデスクトップ環境を提供できる。この章では移動プロファイルの構成と管理の手法に関する多くの情報を提供する。
移動プロファイルはある種、楽園のように聞こえる人もいるかもしれないが、その他の人々にとっては、これは現実の、そして目に見える問題でもある。特に、接続状態が安定しないモバイルコンピューティング機器を利用するユーザーは、純粋なローカルプロファイルを使うケースが多いであろう。この章では 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 に特化したものとなっている。各プラットフォームに対応したリソースキットの存在が望まれる。
クイックガイド
Procedure 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にある。
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 |
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\
このハイブキーには自動的に管理されるフォルダーのリストが含まれる。デフォルトのエントリーは次の表にある。
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 問題に対するマイクロソフトの回答は、すべての電子メールを MSExchange 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. |