- PR -

GetProcessesByNameの実行時の権限について

投稿者投稿内容
macoto
常連さん
会議室デビュー日: 2006/02/15
投稿数: 25
お住まい・勤務地: 東京都/東京都
投稿日時: 2007-03-26 11:54
IIS6の話であると思いますが、web.configでのユーザ偽装ですとアプリケーションプールの実行ユーザの権限をひきづって(?)しまうようです。
このため、NETWORK SERVICE では cmd.exeの実行権限がデフォルトでは無い(セキュリティの為ですね)のでバッチを実行できないのだと思います。

アプリケーションプールを作ったり分けたりして、実行ユーザも分けられるのであれば問題ないと思います。
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2007-03-26 12:32
引用:

takumanさんの書き込み (2007-03-26 11:06) より:
1.web.configに実行ユーザ設定を行うとexeのshell実行がうまくいかない
2.machine.configに実行ユーザ設定を行ってもexeのshell実行は
NETWORK SERVICEになってしまう。



これは、Web.config で偽装する場合、文字通り偽装になるからです。
Process の primary token は NETWORK Service のままで、
Process の起動はその primary token を引き継ぐため仕様どおりの
動作だったかと。

別の資格情報を用いて process を起動するためには、
CreateProcessWithLogonW (.NET では Process class でできたかと)
とかを使って明示的に指定してやる必要があるでしょう。

引用:
 
3.サービスの起動設定で行うとサービスが起動できない
 (どこかのディレクトリ権限の問題?)



Windows Service にも ACL が存在します。
起動に関する制御を行っているものは、このうちの DACL と
呼ばれるものです。

SC.exe とかで調査してみてください。

_________________
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2007-03-26 12:43
設定としてはprocessModelのuserNameの方でしょう。
でIIS6だとこれは無視されてアプリケーションプールの設定が使用されます。
まあ、そういうことです。
takuman
常連さん
会議室デビュー日: 2006/03/03
投稿数: 33
お住まい・勤務地: 神戸
投稿日時: 2007-03-28 10:24
みなさん、ありがとうございました。

とりあえずアプリケーションプールの設定で進めることにいたしました。

今後ともよろしくお願いします。

スキルアップ/キャリアアップ(JOB@IT)