私たちは最近コアWebサーバーとしてIIS 7にアップグレードしました、そして私はパーミッションの観点から概観が必要です。以前は、ファイルシステムに書き込む必要があるときは、AppPoolユーザー(Network Service)にディレクトリまたはファイルへのアクセス権を付与していました。
IIS 7では、AppPoolユーザーはデフォルトでApplicationPoolIdentity
に設定されています。タスクマネージャを確認すると、 'WebSite.com'という名前のユーザーアカウントがIISプロセスを実行していることがわかります( 'Website.com'はIISのWebサイトの名前です)。
ただし、このユーザーアカウントを使用してアクセス許可を付与しようとした場合、このユーザーアカウントは存在しません。それでは、どのユーザーにどのように権限を付与するかを決定するにはどうすればよいでしょうか。
編集================================================== =============================
スクリーンショットの問題については以下を参照してください。当社のウェブサイト(www.silverchip.co.uk)は、ユーザー名SilverChip.co.ukで運営されています。しかし、私が軽蔑を加えるとき、このユーザーは存在しません!
============================== AppPoolの画像を参照してください。
ApplicationPoolIdentityは、実際にはIIS 7で使用するためのベストプラクティスです。これは動的に作成された、特権のないアカウントです。特定のアプリケーションプールにファイルシステムセキュリティを追加するには、 IIS.netの "Application Pool Identities" を参照してください。クイックバージョン:
アプリケーションプールの名前が "DefaultAppPool"の場合(別の名前が付けられている場合は、以下のテキストを置き換えてください)
名前を解決するときは、ドメイン名ではなくサーバーのローカル名を忘れずに使用してください。
IIS AppPool\DefaultAppPool
(これはちょっとの間私をつまずいたのでちょっとした注意):
Windows Server 2008(r2)では、[プロパティ] - > [セキュリティ]でアプリケーションプールIDをフォルダに割り当てることはできません。ただし、次のコマンドを使用してadminコマンドのプロンプトで実行できます。
icacls "c:\yourdirectory" /t /grant "IIS AppPool\DefaultAppPool":(R)
IIS AppPool\YourAppPoolName user へのアクセスを許可するだけでは不十分な場合があります IISデフォルトの設定で。
私の場合、AppPoolユーザーを追加した後にエラー HTTP Error 401.3 - Unauthorized が引き続き発生し、 _ iusr _ ユーザーに権限を追加した後にのみ修正されました。
デフォルトでは、匿名アクセスは _ iusr _ を使用して行われるため、これが必要です。別の特定のユーザー、アプリケーションプールを設定するか、またはIUSRを引き続き使用することができますが、適切な権限を設定することを忘れないでください。
この答えのクレジット: HTTPエラー401.3 - 無許可
Jon Adamsのトップアンサー
これはPowerShellの人々のためにこれを実装する方法です。
$IncommingPath = "F:\WebContent"
$Acl = Get-Acl $IncommingPath
$Ar = New-Object system.security.accesscontrol.filesystemaccessrule("IIS AppPool\DefaultAppPool","FullControl","ContainerInherit, ObjectInherit", "None", "Allow")
$Acl.SetAccessRule($Ar)
Set-Acl $IncommingPath $Acl
パートA:アプリケーションプールの設定
アプリケーションプールの名前が 'MyPool'であるとします。IISマネージャからアプリケーションプールの[詳細設定]に移動します。
'Identity'までスクロールします。値を編集しようとすると、ダイアログボックスが表示されます。 「組み込みアカウント」を選択し、その下にある「ApplicationPoolIdentity」を選択します。
'Identity'の数行下に、 'Load User Profile'があります。この値は 'True'に設定する必要があります。
パートB:あなたのウェブサイトの設定
パートC:フォルダの設定
問題のフォルダはC:\ Whateverです。
これでウェブサイトを閲覧することができるはずです。
混乱を招くだけですが、これらのログインでは(Windowsエクスプローラの)実効アクセス許可ダイアログは機能しません。パススルー認証を使用しているサイト「Umbo4」があり、サイトのルートフォルダにあるユーザーの有効なアクセス許可を確認しました。 [名前の確認]テストでは "IIS AppPool\Umbo4"という名前が解決されましたが、[実効アクセス許可]では、ユーザーはフォルダに対してまったくアクセス許可を持っていなかった(すべてのチェックボックスがオフ).
その後、エクスプローラの[セキュリティ]タブを使用して、このユーザーをフォルダから明示的に除外しました。その結果、サイトは予想どおりHTTP 500.19エラーで失敗しました。ただし、実効許可は以前とまったく同じように見えました。
私は、パスワードを使ってIUSERという新しいユーザーを作成し、それにネットワークサービスとユーザーグループを追加することによって、私のasp.net問題をすべて解決しました。それからすべての仮想サイトとアプリケーションを作成し、そのパスワードで認証をIUSERに設定します。IUSERとBAMを含むように高レベルのファイルアクセスを設定します。
デイブ