加入收藏 | 设为首页 | 会员中心 | 我要投稿 站长网 (https://www.024zz.com.cn/)- 区块链、CDN、AI行业应用、人脸识别、应用程序!
当前位置: 首页 > 搭建环境 > Windows > 正文

Windows站点搭建总踩坑?5步权限配置法一次到位

发布时间:2026-11-04 11:11:29 所属栏目:Windows 来源:DaWei
导读:  去年九月,客户机房的空调坏了三天,压缩机嗡嗡震得人牙酸,我蹲在IIS管理器前调AppPool身份时,隔壁组老张端着泡面过来,汤水晃到我键盘F键上,一滴没漏——就那滴汤,把Application Pool Identity的权限校验卡在了第十七次重

  去年九月,客户机房的空调坏了三天,压缩机嗡嗡震得人牙酸,我蹲在IIS管理器前调AppPool身份时,隔壁组老张端着泡面过来,汤水晃到我键盘F键上,一滴没漏——就那滴汤,把Application Pool Identity的权限校验卡在了第十七次重试。他接了个电话,说“行行行我这就关掉SVN服务”,转身就把我们刚配好的NTFS继承策略全删了。我原以为是配置顺序问题,结果发现是他按了Ctrl+Z八次,回滚到了昨天上午十点——而昨天上午十点,我们根本还没进过这台服务器。


文章配图,仅供参考

  五步法不是发明,是筛出来的。第一次配完,网站返回500.19,日志里写“Configuration error: Cannot read configuration file”,但config文件明明在,权限也给了,就是读不了。我翻了三遍web.config,最后发现是applicationHost.config里节点被注释掉了半行,没人动过,但它就在那儿歪着,像一根插错槽的内存条。第二次,用ProcMon抓IO,看到w3wp.exe在反复尝试打开C:\\Windows\\Temp\\iisexpress,路径没错,权限也给了,可它死活不肯用——直到我发现它在偷偷读%USERPROFILE%\\AppData\\Local\\Temp\\,而那个目录的Owner还是SYSTEM,不是ApplicationPoolIdentity。第三次,部署完,静态资源404,查了半天,原来是MIME类型映射被清空了,而清空的人——是客户自己点了一次“恢复默认设置”。我说不准他是哪天点的,但我知道那台机器右下角的时间戳在9月17号下午四点零七分跳过一次,跳了整整十九秒,之后所有日志时间都偏移了。


  第一步:AppPool Identity必须是ApplicationPoolIdentity(别瞎换NetworkService),但关键不是设它,是得把它加进IIS_IUSRS组——不是手动add,是去“高级安全设置”里点“添加”再搜“IIS AppPool\\DefaultAppPool”,搜出来那个带$符号的SID对象。有次我直接输名字进去,Windows认成普通用户,结果整个池启不来,Event Viewer报错代码0x8007052e,连带SQL Server代理任务也挂了,因为代理用的是同一套token缓存逻辑。桌上的外卖盒盖子被空调风吹开了,虾仁掉进主机箱通风口,我没捡,等它彻底干透,免得短路触发自动重启——上次自动重启后,IIS把自定义HTTP头全丢了,只剩一个Server: Microsoft-IIS/10.0,干干净净,毫无尊严。


  第二步:站点物理路径,NTFS权限里除了IIS_IUSRS,还得单独给ApplicationPoolIdentity(就是那个带$的SID)加Modify,不能只靠继承。我敢打包票,百分之九十的“无法写入upload目录”都是这儿断的。有个客户非要用PowerShell脚本批量授权,脚本里写的是Add-NTFSAccess -Account "IIS AppPool\\MySite",但实际注册表里这账户名是"IIS AppPool\\MySite$",少个$,脚本不报错,权限就是不生效。第三步更邪门:web.config里的,如果开了,就得让运行用户本身具备登录本地的权限——不是勾“允许本地登录”,是在“本地策略→用户权限分配→作为服务登录”里加进去。这个我测过十七次,只有一次没加就跑通了,后来查出那天AD域控制器离线了两分钟,服务器走的本地缓存token,纯属运气。


  第四步:C:\\Windows\\Temp 必须可写,但重点不是加权限,是确认它的SECURITY_DESCRIPTOR没被策略覆盖。我们曾遇到一台机器,GPO强制重置Temp目录ACL,每次凌晨两点自动刷新,导致早上八点部署的站点,中午就崩。修复方式不是改GPO,是临时停用Group Policy Client服务十五分钟——就十五分钟,刚好够我们重刷一遍NTFS ACL并chown回IIS AppPool用户。第五步?第五步其实是个障眼法:它叫“检查HTTP响应头X-Powered-By是否暴露.NET版本”,但这一步根本不该存在。我们早该删掉它,但它还在清单里,因为去年有个实习生照着做,意外发现他删掉这行头后,某家第三方CDN缓存策略突然变了——不是bug,是他们API鉴权逻辑真他妈依赖这个头。所以说优胜劣汰,不是技术优,是存活下来的配置,刚好踩在所有烂系统的缝隙里活着。


  中间有段插曲:9月18号早上,运维小李穿拖鞋来机房,踩到一滩水,差点滑倒,顺手关了配电柜总闸——不是我们的机柜,是我们隔壁视频渲染集群的。结果整栋楼UPS切换,我们那台DB服务器硬盘灯闪了三秒,等电回来,SQL Server Agent jobs全变成disabled状态,而我们正调试的事务日志备份作业就在其中。没人通知我们,没人记录,没人补日志,我们就当它没发生。现在看那台机器的sys.dm_os_performance_counters视图,disk_read_bytes/sec在那个时段跌成直线,像被刀切过一样,但谁在乎呢?


  最近一次失败是上周三,IIS 10+Windows Server 2022,同样五步,照样崩。崩溃点在HTTP/2协商阶段,错误码WINHTTP_CALLBACK_STATUS_FLAG_CERT_REVOKED——但证书压根没吊销,只是服务器时间比CA服务器快了四分十七秒。时间同步服务开着,却卡在NTP包过滤规则里。我把这事跟架构组老陈说了,他边削苹果边笑:“哦,又撞上时钟漂移?你上次是不是也在这儿栽过?”我没接话。窗外开始下雨,雨点砸在机房玻璃上声音发闷,像有人在敲空铁桶。我摸了摸裤兜,里面还有一张9月17号的巡检单复印件,边角烧焦了半厘米,不知道是谁拿打火机燎的——反正不是我,那天我连打火机都没带。


  现在我每次配新站,先扔掉五步清单,直接打开ProcMon,滤w3wp.exe + ACCESS DENIED,让它跑三十秒,看哪条路径第一个亮红。剩下的事,就交给那条红色路径告诉我该怎么填坑。其它步骤?随缘吧。

(编辑:站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!