Windows Server 2012 R2では、IISは通常の条件下でWebサーバーとして実行されています。ただし、Webコンテンツはc:\inetpub\wwwroot\
からではなく、他のフォルダーからのものです。Webアプリケーションは引き続きdefaultAppPoolからの自分のユーザー。
私は実際に、Webコンテンツフォルダーに対するIIS_IUSRS
の読み取り/実行権限を与えることを忘れていました。ただし、フォルダはusers
へのアクセス権を与えました。サブフォルダーを書き込み可能にする必要がある場合にのみ、IIS_IUSRS
の読み取り/実行/書き込み権限を追加しました。
セキュリティを少し厳しくしたいので、Webコンテンツフォルダーのアクセス権を調べたところ、試行錯誤の結果、IIS_IUSRS
へのアクセスが失われ、users
グループへのアクセスであることがわかりましたそれはすべてがまだ機能する責任があります。 users
グループへのアクセスを削除すると、アプリケーションが機能しなくなるためです。
他のいくつかのアカウント/グループへのアクセスを許可しようとしましたが、users
とIIS_IUSRS
の両方へのアクセスを許可するとアプリケーションが個別に実行されることがわかりました。 IIS APPPOOL\
だけにアクセスを許可することはできません。しかし、私の特定のアプリケーションプールユーザー(EG IISAPPPOOL\nl-x-homepage
)にアクセス権を与えることはできます。そして、この最後のビットは、あるアプリケーションが他のアプリケーションのファイルにアクセスできるようにしたくないので、私が望むものです。
しかし、私は疑問に思っていました... IISのようなアカウントは正確に機能しますか?users
へのアクセスを許可することは、アプリケーションプールがWebコンテンツフォルダーにアクセスするためにも機能するのはなぜですか? lusrmgrで特定のアプリケーションプールユーザーを確認できませんが、特定のアプリケーションプールユーザーはusers
グループ、またはusers
グループにある他のグループに属していると思います。これを確認しますか?
そして、この問題に対する最後の質問として、特定のフォルダーを「パスワード保護」するために、Windowsで通常のユーザーを作成し、そのユーザーをusers
グループから削除し、IIS =マネージャーそのフォルダーに移動して、認証->基本認証->有効にし、認証ルールで、新しく作成したWindowsユーザーアカウントに許可ルールを設定しました。これは機能します。ただし、読み取り/書き込みアクセスを分析すると、驚いたアプリケーションはアプリケーションプールユーザーの下で実行されていますが、アプリケーションプールユーザーには読み取り権限のみが必要であり(書き込み権限は不要)、新しく作成されたWindowsユーザーには、フォルダーを作成するために読み取り権限と書き込み権限の両方が必要です。これがなぜこのように機能するのか、誰かが説明を手伝ってくれる?
IIS_IUSRSはIISワーカープロセスアカウントグループです。この組み込みグループは、必要なすべてのファイルおよびシステムリソースにアクセスできるため、アカウントをこのグループに追加すると、アプリケーションプールとしてシームレスに機能できます。身元。
ドメインを右クリックして編集権限を開くと、リストされたグループと権限が表示されます。 [セキュリティ]タブの下に、MACHINE_NAME\IIS_IUSRSと/ Usersが表示されます。 IISは自動的にディレクトリに対する読み取り専用権限を持ちます。
作成するすべてのアプリケーションプールについて、新しいアプリケーションプールのIdentityプロパティはデフォルトでApplicationPoolIdentityに設定されています。 IIS管理プロセス(WAS)は、新しいアプリケーションプールの名前で仮想アカウントを作成し、デフォルトでこのアカウントでアプリケーションプールのワーカープロセスを実行します。新しいアプリケーションプールが作成されるたびに、 IIS管理プロセスは、アプリケーションプール自体の名前を表すセキュリティ識別子(SID)を作成します。たとえば、「MyFirstPool」という名前のアプリケーションプールを作成する場合、セキュリティ識別子は次のようになります。 「MyFirstPool」という名前はWindowsセキュリティシステムで作成されます。この時点から、このIDを使用してリソースを保護できます。ただし、IDは実際のユーザーアカウントではなく、実際のユーザーアカウントではありません。 Windowsユーザー管理コンソールにユーザーとして表示されます。これは通常の動作です。特定のフォルダーへのアクセスを許可する場合は、アクセス許可を編集して、これをフォルダーに追加するだけです。 、デフォルトの認証設定(匿名ID)をチェックして、適切な選択が可能かどうかを確認する必要がありますまたは、アクセスエラーを回避するように設定します。
この投稿 残りの質問に対応します。継承。
アカウントは必要なグループからアクセス許可を継承する必要があるため、ここで追加するWindowsユーザーには明らかにアクセス許可が必要です。ここでの読み取り許可は不可欠です。ただし、これはローカルリソースにアクセスするためのものです。
あなたが遭遇している行動は私には非常に論理的に思えます。
IIS_IUSRSはグループであり、アカウントではありません。その唯一の目的は、メンバーをアプリプールIDとして割り当てることを目的としているため、それだけで追加するだけでは不十分です(ご存知のとおり)。
Usersグループには、Webサイトが機能するのに十分な権限を持つASPNETアカウントが含まれているため、デフォルトの権限にはそれを追加するだけで十分でした。 ASPNETアカウントはDefaultAppPoolとして使用されるアカウントだと思います。
ユーザーが作成したファイルまたはフォルダーには、作成者が所有者であり、すべての権限があるため、常に読み取り権限があります。別のユーザーがファイルまたはフォルダを作成した場合、書き込みを行う前にアクセス許可や使用可能なスペースなどを確認するために読み取りアクセスが必要になるため、読み取りなしで書き込みアクセス許可のみを付与することはWindowsでは機能しませんでした。