FC2ブログ
IISのプロセス起動に使用するアカウントの変更とか
IISをインストールすると次のユーザーがローカルアカウントとして作られる

・IUSR_[ComputerName]
・IWAM_[ComputerName]

IUSR_[ComputerName]は、匿名クライアントからのHTTPリクエストで、ファイルへのアクセスを行う際に使用するアカウント。このユーザー特権でファイル操作や、SqlServerへのアクセス(Windows認証を使った場合)が行われる。

IWAM_[ComputerName]は、HTTPリクエストを処理する本体のプログラムを実行する際のアカウント。IISを外部プロセスで動作させる時に使われる。必ずIIS_WPGグループに所属する必要がある。IISのWEBサーバーは、既定の動作でCOM+のアウトプロセスとして実行されるので、その際に使用される。

IIS6.0の場合、AppPoolを使って動作させることになることが殆どだけど、IIS5.0の互換モードで動かすこともある。その際に、既定のIWAM_[ComputerName]のアカウントでは困る場合がある。
例えば、BASP21を使って外部プログラムを起動させると、IWAM_[ComputerName]で動作することになる。外部プログラムが共有フォルダにアクセスする際には、IWAM_[ComputerName]で行うことになるで、リモート側のPCにIWAM_[ComputerName]のユーザーを作る必要がある(リモートPCでGuestが有効になってれば関係ないが)。
BASP21を使わないで独自に実装すればいいじゃないというのは無しで('A`)

そこで次のコマンドを使えばIWAM_[ComputerName]を変更できるようになる。

**********************************************************************************

# ここで指定するアカウントは必ず IIS_WPG グループに所属させること!
# でなければ、起動に失敗する

# メタ情報を変更する
cscript c:\inetpub\adminscripts\adsutil.vbs SET W3SVC/WAMUserName "account_name"
cscript c:\inetpub\adminscripts\adsutil.vbs SET W3SVC/WAMUserPass "account_pass"

# 変更されたアカウント情報をCOM+情報へコピーする
cscript c:\inetpub\adminscripts\synciwam.vbs -v

# COM+の登録情報を見たい場合は、管理ツール->コンポーネントサービスで
# マイコンピュータ->COM+アプリケーション->IIS Out-Of-Process のプロパティを開く

# IISの再起動
iisreset

**********************************************************************************

で、ASPを使った処理をするページにアクセスすると、dllhost が指定したアカウントで実行されるようになる。デフォルトではここが、IWAM_[ComputerName]な訳だ。
※静的ページへのアクセスでは、dllhost.exeは起動されない。既定のプロセスが処理してくれるため

起動アカウントをドメインユーザーにしたい場合は、
cscript c:\inetpub\adminscripts\adsutil.vbs SET W3SVC/WAMUserName "domain_name\account_name"
で、OK

スポンサーサイト
NTFSアクセス制限
NTFSでフォルダやファイルにアクセス許可の指定が出来るでしょ?
んで、何かの手違いでAdministrator とかでもアクセスできないように設定してしまったとしよう。
やべぇ、もう何も操作ができねwwww

         ____
       /::::::::::  u\
      /:::::::::⌒ 三. ⌒\     
    /:::::::::: ( ○)三(○)\  
    |::::::::::::::::⌒(__人__)⌒  | ________
     \::::::::::   ` ⌒´   ,/ .| |          ...|
    ノ::::::::::u         \ | |           .|
  /:::::::::::::::::      u     | |            |
 |::::::::::::: l  u             | |          |
 ヽ:::::::::::: -一ー_~、⌒)^),-、   | |_________.|
  ヽ::::::::___,ノγ⌒ヽ)ニニ- ̄   | |  |

と思ってもちゃんと復帰方法がある。以下が手順

1. Administrator でログオンします。
2. アクセスしたいフォルダを右クリックし、[プロパティ] をクリックします。
3. [セキュリティ] タブをクリックし、[詳細設定] ボタンをクリックします。
4. [所有者] タブをクリックし、一覧から新しい所有者 (自分か Administrators グループ) を選択し、ファイルやサブフォルダの所有権を取得する場合「サブコンテナとオブジェクトの所有権を置き換える」にチェックして「OK」します。
5. 「内容を読み取るのに必要なアクセス許可がありません。...」メッセージが表示されるので「はい」をクリックします。
6. 「OK」をクリックします。
[IIS] 2000で動いたのに2003だと動かない問題について
メモ程度に

BASP21を使用してIIS上から他のプログラムを動かしたとしよう。2000のデフォルトのセキュリティ設定ではいくつか甘い部分があるため、ある程度のアプリケーションが起動できる。
しかし、2003からは厳しくなりデフォルトでは動かない事がしばしば。そしてIIS6.0から新しい仕組みが入ったためIISの動作プロセスのユーザーが変更されている(デフォルトでは Network Serveice になっている)。
これが曲者でこやつにはUserと同等の権限しかない。そのおかげで厳しくなったセキュリティでは動作しない事が多々ある。ただ、このアカウントでもLogonUser関数やCreateProcessAsUser関数が使えるため、特定のアプリケーションが動かないよ!っていう場合には、BASP21を使わないで独自にプロセスを起動させるためのコンポーネントを用意したほうがいい。

※1LogonUser関数を使う場合、グループポリシーのユーザー権利の割り当てで、「プロセスレベルトークンの置き換え」の権利を持っていないとだめ。デフォルトで、Network Service には割り当てられている。

※2BASPのExecuteメソッドは、IISのプロセスのユーザートークンで新しいプロセスを起動するので制限が掛かる。

自分の場合は、IIS6.0からDirectShowを使用する外部アプリを起動させようとしたら、DirectShowの初期化のタイミングで失敗した。LocalSystemで動かせば動かなくはないが、心配なのでコンポーネントを作ることで対応した。この外部アプリを起動するユーザーを必要最小限の特権にしとけば安全だよね?


     /.: ̄ ̄ ̄ ̄ ̄ \
    /: : :             \
  /: : : :            \
/: : : : : :               \     
: : : : : : : :.._        _      \    
: : : : : : : ´⌒\,, ;、、、/⌒`        l
: : : : ::;;( ● )::::ノヽ::::::( ● );;:::    |   
: : : : : : ´"''",       "''"´       l  
: : : : : : . . (    j    )/       /  
\: : : : : : :.`ー-‐'´`ー-‐'′    /         
/ヽ: : : : : : : : : : : : : : : : : : : : イ\     
: : : : : : : : : :.``ー- -‐'"´        \      
: : : : . : : . : : .                   \
Windows Server 2003 R2 64bit のIIS の32Bitの変更のいろいろ
実験環境
Windows Server 2003 R2 Standerd x64 Edition SP2
セキュリティパッチなどは最新の状態にしてある

ASP(.NETじゃないYO)でBASP21とかOWCの32Bitのコンポーネントを使う場合、64bitのIISだと動かない。まぁ当然('-`)y~~~

んで、どうしても動かしたい場合は、次のコマンドを発行し、IISを再起動させる

cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1

※IIS実行中に変更する場合は、メタベースの直接編集を有効にするをチェックすること

でここが問題。そのままアクセスすると、サービスが提供されていないというエラーが発生する('A`)?
謎と思いつつ、32Bit版ASP.NETを使わないけど下記のコマンドで入れてみる。

%SYSTEMROOT%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i

インストールはするが使用しないので、許可はしない事!んで、ここでも一応IISの再起動する。

そしたらあら不思議なことに、この時点でWebにアクセスできるようになったYO('A`)??

んじゃ、試しにIIS5.0プロセス分離モードで32Bitやってみるかと思って切り替えてみるがなぜか動作しない…
つか、WWWのサービス自体が動作しないって致命的じゃね?('-`)

原因が解らなかったので、32Bit版のASP.NETを次のコマンドでアンインストールしてみる。

%SYSTEMROOT%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -u

んで、一応IISの再起動をする。

これでもやっぱり動かない。IIS5.0プロセス分離モードの32Bitは対応してないという落ちですか…

         ____
       /::::::::::  u\
      /:::::::::⌒ 三. ⌒\     
    /:::::::::: ( ○)三(○)\  
    |::::::::::::::::⌒(__人__)⌒  | ________
     \::::::::::   ` ⌒´   ,/ .| |          ...|
    ノ::::::::::u         \ | |           .|
  /:::::::::::::::::      u     | |            |
 |::::::::::::: l  u             | |           |
 ヽ:::::::::::: -一ー_~、⌒)^),-、   | |_________.|
  ヽ::::::::___,ノγ⌒ヽ)ニニ- ̄   | |  |
TOP
プロフィール

hssamurai

Author:hssamurai
FC2ブログへようこそ!

最新記事
最新コメント

最新トラックバック

月別アーカイブ
カテゴリ