3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援→開発戻り浦島太郎状態の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。

(WindowsServer2003)フォルダリダイレクトと移動ユーザープロファイル

下記のような要件を満たす環境を作成したいと思ってます。

「ターミナルサービス利用時に、各ユーザのマイドキュメントやデスクトップの保存先を共有フォルダにしたい。

(複数台のターミナルサーバが存在し、どちらにログインしても同一のドキュメントを見れるようにするため。PC利用時はこの機能を用いない。)」

ターミナルサーバ利用時だけってのがちょいと特殊要件ですね。

Windows Server の機能を使ってこの要件を実現するには方法が2つあるようです。

一つがフォルダリダイレクト、もうひとつが移動プロファイル(ターミナルサーバ用)です。

1.フォルダリダイレクト

Windows Server 2003では各ユーザの下記のフォルダを共有フォルダにリダイレクトできるようです。

・Application Data

・デスクトップ

・マイドキュメント

・スタートメニュー

Windows Server 2008 だとリダイレクトできるフォルダが増えているようです。

[Think IT] 第3回:グループポリシーを使って楽々管理

基本的にユーザがリダイレクト対象フォルダに対して、何か操作を行うとリダイレクト先に即時に反映されます。

ちょうど普通に共有フォルダを使ってる感覚ですね。

設定はグループポリシーの ユーザーの構成 → Windowsの設定 → フォルダリダイレクト → 対象とするフォルダを右クリック → プロパティ で設定ダイアログを表示します。

基本的には、「基本 - 全員のフォルダを同じ場所にリダイレクトする」で、「ルートパスの下に各ユーザーのフォルダを作成する」になるかと思います。

この場合、フォルダ構成は下記のようになります。(\\sv1\userをルートパスとした場合)

\\sv1\user\ユーザ1\デスクトップ

\マイドキュメント

\\sv1\user\ユーザ2\デスクトップ

\マイドキュメント

これで、指定したコンピュータでユーザログイン時に指定したパスの下に各ユーザのフォルダが自動的に作成されます。

この時、リダイレクトの設定で「ユーザーにマイドキュメントに対して排他的な権限を与える」とすると、そのユーザしかアクセスできせん。

ここら辺の動作は、MS TechNet:GPMC のフォルダ リダイレクトの概要で書かれてます。(Windows Server 2008以降はこちらを参照)

まとめると下記のような感じです。

排他的権限のチェック On かつ リダイレクト先フォルダが無い:新しいフォルダ作成されるが、所有者である対象ユーザとローカルシステムのみフルコントロール

排他的権限のチェック On かつ リダイレクト先フォルダが有る:フォルダ所有権が検証。別ユーザ所有の場合はリダイレクトされない。(アクセス許可もそのまま)

排他的権限のチェック Off : 既定のアクセス許可はすべて有効のまま(つまり誰でもアクセス可能となる)

排他的権限をオンにすると、管理者すらアクセスできなくのはちょっと管理上不便です。

上記TechNetの資料から、フォルダ所有権を見て検証しているようなので、各ユーザのフォルダとその配下のリダイレクト先フォルダを、管理者と各ユーザのアクセス権を持つように作成し、所有権を各ユーザに与えるという運用にしました。

こうすると、リダイレクトもできますし、アクセス許可もリダイレクト先フォルダ作成時に指定した管理者でもアクセスできるアクセス権になります。

また、ルートとなるフォルダのNTFSアクセス許可とSMBアクセス許可も注意が必要なようで、これらも上記 TechNet のサイトに書かれてます。

NTFSアクセス許可が必須ということのなので、リダイレクト先を Linux ベースの NAS とかにはできませんね。

フォルダリダイレクトを設定するとデフォルトでオフラインでの使用許可になってしまいます。

今回はターミナルサーバと同一セグメントにファイルサーバを置くので、オフラインでの使用は想定してません。

また、オフライン設定有効だとリダイレクトされたフォルダをキャッシュすると利用可能なすべてのディスク領域が使用されるようなこともあり得るので、常にオンラインで利用するように設定します。

まずグループポリシーで ユーザの構成 → 管理用テンプレート → ネットワーク → オフラインファイル → リダイレクトされたフォルダを自動的にオフライン利用できるようにしない を有効にします。

そして、共有フォルダのプロパティのキャッシュの設定で、共有にあるファイルやプログラムはオフラインで利用可能にしない にチェックを入れるといいようです。

問題となったのは特定のコンピュータのみ適用できるのか(PCに対しては設定しないため)ということですが、グループポリシーにはセキュリティフィルタというのがあるようで、これで対象となるターミナルサーバを指定しました。

(セキュリティフィルタにより、グループポリシーを適用するユーザやコンピュータを指定できるようです。セキュリティフィルタについては、ここここを参照。)

これででターミナルサーバ利用時だけフォルダリダイレクトできるかと思ったんですが、ダメでした。

詳しくは別記事にしたいと思います。

フォルダリダイレクト参考:

@IT:Active Directoryを利用したユーザー管理 Win2000の場合ですが、%username%を使う方法はいいと思いました。

モバイルアクセス計画50 Vistaでフォルダリダイレクトする時の注意点 あげだま日記/ウェブリブログ キャッシュの無効の設定があります。

2.移動プロファイル(ターミナルサーバ用)

もうひとつが移動プロファイルを使う方法です。

プロファイルには、ローカルユーザープロファイル、移動ユーザープロファイル、固定ユーザープロファイルってのがあります。

ローカルユーザープロファイルは各ユーザの情報をローカルPCにもつものでデフォルトです。(C:\Documents and Settings や C:\Users(Vista,2008以降)に配置されます。)

移動ユーザープロファイルはユーザのプロファイルをネットワーク上に持つもので、どのPCにログインしても同じプロファイルが使用されるので、作業する端末が逐次異なる場合には便利ですね。

固定ユーザープロファイルは移動プロファイルの固定版ですね。つまり、固定ユーザプロファイルのユーザはログイン中に行った変更がログオフ時に破棄されるというものです。(キオスク的な使い方ができそうです)

さて、この移動プロファイルですが、ログイン時にユーザのプロファイルをサーバからローカルのキャッシュに取得し、ログイン中の変更はキャッシュに対して行います。

そして、ログオフ時に更新日付を見て変更のあったファイルをサーバ側に反映するという仕組みのようです。

いろいろ調査していると、ターミナルサーバ利用時だけ移動プロファイルを使うという設定ができることが分かりました。

"ActiveDirectoryユーザとコンピュータ" から、ユーザアカウントのプロパティを表示し、"ターミナルサービスのプロファイル" タブから "プロファイルパス" にターゲットとなる共有フォルダをパスを入れるといいようです。

これはグループポリシーでも一元的に設定可能で、その場合は、グループポリシーの コンピュータの構成 → 管理用テンプレート → ターミナルサービス → TS 移動プロファイルのパスを指定する から指定できます。

仮にユーザ1のターミナルサービスのプロファイルパスを "ActiveDirectoryユーザとコンピュータ" から \\sv1\user とすると、このようなフォルダが作成されます。

\\sv1\user\Application Data

\Cookies

\Favorites

\My Documents

\NetHood

\PrintHood

\Recent

\SendTo

\Templates

\WINDOWS

\スタート メニュー

\デスクトップ

\NTUSER.DAT

\ntuser.dat.LOG

\ntuser.ini

\ntuser.pol

\Sti_Trace.log

さて、このプロファイルにはユーザ毎のレジストリやアプリケーション設定情報も含まれるため注意が必要です。

それはバージョンの異なる Windows やソフトを使う場合ですね。

Windows Server 2003と2008ではユーザプロファイルの構成が大幅に変わってるので同時に使うのは難しいかもしれません。

また、ログオン時に取得、ログオフ時に更新ということから、マイドキュメント等が肥大化するとログインに時間がかかるという懸念もあります。

(ただ、特定のフォルダを移動プロファイルから除外する方法はあるようです。MSサポート:Windows Server 2003 で移動プロファイルからフォルダを除外する方法参考。)

保守性の点から言うとフォルダリダイレクトの方がいいかもしれませんが、両方組み合わせるようなこともできるようです。

今回の要件はフォルダリダイレクトを使うことにしました。(ターミナルサーバもWindows Serverのバージョンが異なるので...)

また、調査してる時に ホームフォルダ という言葉をちらほら見ました。

Windowsのヘルプとサポートによると次のように定義されてました。

ホーム フォルダ

管理者が、個々のユーザーまたはグループに割り当てることのできるフォルダ。通常はサーバー上にあります。管理者は、ホーム フォルダを利用することにより、ユーザー ファイルを特定のファイル サーバー上に集中管理でき、バックアップを容易に作成できるようになります。プログラムによっては、[開く] ダイアログ ボックスおよび [名前を付けて保存] ダイアログ ボックスの既定のフォルダとしてホーム フォルダを使うものもあります。"ホーム ディレクトリ" と呼ばれることもあります。

また、すぐできるWindowsサーバー強化術(第2回)GPOやコマンドで一括設定する - Windows読者限定:ITproでもホームフォルダの用途が書かれてました。

要は移動プロファイルを使った時に、マイドキュメントやデスクトップにファイルを保存するとログイン・ログオフに時間かかるため、ネットワークドライブとしてマウントされるホームフォルダに保存するとファイルサーバに即時書き込むため便利ですよってものらしいです。また、コマンドプロンプトのカレントディレクトリがホームフォルダとしてマウントしたネットワークドライブになります。

ただ、これはユーザが意識的にマイドキュメントやデスクトップを使わず、ネットワークドライブとしてマウントされたホームフォルダに保存するようにしないといけません。

あまり、ホームフォルダは実用価値が無いように感じます。ホームフォルダ使うんだったらフォルダリダイレクト使った方がいいと思いますね。(ここでもMSの見解がそうであると書かれています。)

ターミナルサーバプロファイル参考:

移動ユーザープロファイルの説明 | Windowsに関するちょっとしたこと 各種プロファイルの説明です。

ユーザープロファイルの管理とその課題 ≫ ocb - Citrix Community 移動ユーザプロファイルの課題等も説明されており、非常に参考になります。

Ask the Network & AD Support Team : プロファイル情報を格納したファイルサーバーの移行方法 移動プロファイルとリダイレクト、そしてオフラインキャッシュなどわかりやすく濃い内容です。

TechNet:ターミナル サービスのプロファイル

TechNet:ユーザーのターミナルサービスプロファイルのパスを変更する

TechNet:ユーザー プロファイルのヒント集 移動プロファイルの注意点が書かれてます。