IIS 应用池身份与 NTFS 权限:能用的最小权限
用 ApplicationPoolIdentity 只授予站点需要的 NTFS 权限,调整应用池设置而不破坏应用或扩大权限。
测试环境Standard / Datacenter · 版本号 26100.33650 · x64
E1- 版本号
- 26100.33650
- 版本
- Standard / Datacenter
- 架构
- x64
- 支持
- 文档(E1)
- 证据
- E1官方文档
- 核验日期
- 2026-10-29
- 测试机
- IIS Manager UI 参考:VM 361 Windows 11 26H2;应用池 labpool;Server 2025 cmdlet 为 E1
- 页面类型
- 任务

IIS 应用池默认以虚拟账户运行:IIS AppPool\<池名>(ApplicationPoolIdentity)。不用建密码;池启动时 Windows 创建 SID。
只给这个身份必要权限:
- 站点根目录读/执行;
- 需要写文件时,只给一个 upload/cache 目录 modify;
- 不要给
C:\、C:\Windows或别的站点目录。
不要用加 Everyone 或把池改成域管来“修” 401.3。
| 身份 | 用途 | 风险 |
|---|---|---|
| ApplicationPoolIdentity | 默认;每池虚拟账户 | 低;显式授 NTFS |
| NetworkService | 遗留/域机器账户 | 网络身份更宽 |
| LocalSystem | Web 应用永远不要 | 本机完全控制 |
| 自定义本地用户 | 应用需要固定配置/ACL | 密码/轮换负担 |
| gMSA | 域内应用、托管密码 | 需要 AD 设计 |
单机服务器,ApplicationPoolIdentity 是正确默认。
建池并授 NTFS
Section titled “建池并授 NTFS”Import-Module WebAdministrationNew-WebAppPool -Name 'labpool'Set-ItemProperty IIS:\AppPools\labpool -Name managedRuntimeVersion -Value ''授读/执行:
icacls C:\inetpub\lab /grant "IIS AppPool\labpool:(OI)(CI)RX"只在需要处授写:
New-Item -ItemType Directory -Force C:\inetpub\lab\uploads | Out-Nullicacls C:\inetpub\lab\uploads /grant "IIS AppPool\labpool:(OI)(CI)M"(OI)(CI) 作用于文件和文件夹;RX 读/执行;M 修改。除非应用真的要改 ACL/所有权,不要给 F(完全)。
Get-IISAppPool | Select-Object Name, State, ProcessModelicacls C:\inetpub\labInvoke-WebRequest http://localhost:8080/ -UseBasicParsing | Select-Object StatusCode401.3 是身份读不到文件。查有效 ACL,不是只看共享选项卡。500.19 是配置/权限错误,常是父 web.config 或缺模块。
值得调的应用池设置
Section titled “值得调的应用池设置”| 设置 | 默认 | 何时改 |
|---|---|---|
| .NET CLR 版本 | v4.0 | 静态/Node/Python 设 No Managed Code |
| 托管管道 | Integrated | 只有遗留应用用 Classic |
| 启动模式 | OnDemand | 延迟敏感用 AlwaysRunning |
| 空闲超时 | 20 分钟 | 只有必须常驻才关 |
| 定期回收 | 1740 分钟 | 低峰回收;观察内存 |
| 32 位应用 | False | 只有 32 位 DLL 才 True |
| 加载用户配置文件 | False | 需要配置文件的加密等应用才 True |
不要为了“修”内存泄漏全局关回收。找泄漏,或安排低峰回收。
- 一个子目录失败,就给整个站点加
Everyone读。 - 为了上传,给站点根目录写权限;上传应指向单独目录。
- 为了访问 UNC 共享,把池跑成域管。
- 厂商安装器说要用
LocalSystem就用。 - 忘了虚拟目录用父应用池,不是自己的。
截图来自 Windows 11 26H2;labpool 是给 C:\inetpub\lab(8080)建的。Server 2025 用同一套 WebAdministration 对象模型,但角色安装仍是 E1。