加入收藏 | 设为首页 | 会员中心 | 我要投稿 站长网 (https://www.1461.cn/)- 应用程序、AI行业应用、CDN、低代码、区块链!
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

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

发布时间:2026-10-16 14:15:21 所属栏目:Windows 来源:DaWei
导读:  跟老板拍桌子那天是去年五月十七号,下午三点零七分——我盯着他笔记本右下角那个跳动的系统时间,手指关节发白。不是为别的,就为IIS里一个匿名身份认证勾选框没点上,结果整个站跑出来401,PM在企业微信里发了个“?”然后

  跟老板拍桌子那天是去年五月十七号,下午三点零七分——我盯着他笔记本右下角那个跳动的系统时间,手指关节发白。不是为别的,就为IIS里一个匿名身份认证勾选框没点上,结果整个站跑出来401,PM在企业微信里发了个“?”然后撤回,三分钟内连发七条带感叹号的语音转文字,最后一条说“客户在会议室等了十八分钟”。我原以为是应用池回收策略问题,结果翻日志看到Security Event ID 537,直接笑出声。这玩意儿根本不是bug,是Windows自己写在AD策略里的祖传遗嘱。


  五步权限配置法?别信名字,它真名叫“优胜劣汰法”——不是指你技术优、对手劣,是IIS自己挑人:谁权限最松、谁路径最野、谁ACL漏得最像筛子,它就认谁。你设了ApplicationPoolIdentity?它偏要走IUSR;你锁死了NTFS继承?它偷偷给你加个SYSTEM显式拒绝;你把web.config全删了?它反手从注册表HKLM\\SOFTWARE\\Microsoft\\InetStp\\Configuration里扒出默认行为。我敢打包票:你刚在“高级安全设置”里点完“替换子容器和对象的所有者”,下一秒IIS管理器弹窗提示“配置文件已被外部修改”,可你压根没开过那台服务器的远程桌面。这鬼东西自己会呼吸。


  第一步:删掉所有“Users”组权限——不是禁用,是删。去年五月我删第三遍的时候,后端小张蹲在我工位边啃冷掉的饭团,油渍蹭在我键盘F键上。他问我“删Users是不是太狠”,我没抬头,只把鼠标移到“删除”按钮上悬停了四秒。不是犹豫,是等那个“确定删除”的红色倒计时弹出来。删完立刻重启应用池,不等它缓存。你猜怎么着?静态资源403了。但首页能进。这就对了。留着Users组?等着看它哪天半夜给wwwroot底下某个临时上传目录自动补个“读取&执行”,然后第二天运维发现PHP木马在log.php里跑着curl命令。


文章配图,仅供参考

  第二步:ApplicationPoolIdentity单独建一个本地组,叫IIS_AppPool_MySite(必须带MySite,不能用DefaultAppPool那种通用名)。第三步:把这组加到IIS_WPG(别问为什么,Windows Server 2019之后它还活着,且不报错)。第四步:给网站物理路径赋ACL,仅允许这个新组+SYSTEM+Administrators三者存在,其他一律剔除。第五步:在IIS里手动取消继承,再手工添加该组,并勾选“仅应用于此容器”——注意!必须取消继承后再添,不能先添再取消,后者会在子目录里埋雷。我原以为勾选“替换所有子对象权限项”就稳了,结果上线后某张用户头像图404,debug两小时才发现IIS悄悄绕过你设置,在upload目录下新建的子文件夹里,给IUSR偷偷加了“读取”权限。这个我说不准是哪个DLL干的,可能是aspnet_isapi.dll,也可能是w3wp.exe启动时自己咽下去的一口痰。


  Lighthouse跑分截图昨天发到架构群,没人回。不是没看见,是都关了消息免打扰——前天CDN账单出来,单月八千三,运维老陈在群里甩了张Excel截图,单元格背景色红得像血,备注栏写着“因源站反复重定向导致缓存失效”。这事跟我没关系,但我知道源头在哪:某次紧急发布后,前端小李顺手改了web.config里location path="/assets"那段,删掉了节点,而他以为删的是自定义HTTP头……现在每次请求/assets/都要穿过三层rewrite规则。算了,不说这个。桌面那个录屏软件还在跑,右下角显示已录制11分23秒,但我根本没开摄像头,只是忘了关。


  中间穿插个真实失败案例:上个月某医疗客户站,部署后首页正常,但登录页POST永远500。排查两整天,日志里全是“The specified CGI application misbehaved by not returning a complete set of HTTP headers”。最后发现是bin目录下某个dll依赖的Visual C++运行时版本不对,而那个dll的ACL里居然有Everyone完全控制权限——还是上任运维三年前留下的。他离职前最后一句交接话是“权限我全开了,你们自己收”,说完拎包去了深圳。这哪是收权?这是埋定时核弹。我们团队后来给权限清理流程加了一条硬规:“所有‘Everyone’权限必须附带当日审批单号及签字扫描件,否则CI自动拒绝构建”。执行了三天,被产品总监拦住问“为什么构建卡在权限检查环节”。我说“因为您上个月让上线的那个‘一键授权’后台,把SQL Server服务账户加进了本地管理员组”。他沉默七秒,说了句“哦……那先跳过吧”。


  对面工程师昨天换了根充电线,米白色编织款,接口处有点翘皮。他边插线边说“我试过PowerShell一键修复脚本,跑完反而更乱”。我点头。这类脚本本质是在模拟人类犯错路径——它先递归加Everyone,再批量删,再重新加特定组,中间只要一次中断,ACL就成了瑞士奶酪。而人手配,至少你知道哪一行是错的。比如第三步里那个IIS_WPG组,Win10上根本没这玩意儿,但脚本不管,硬往里面塞——它以为全世界都在跑Server 2016以上。所以,现在我的习惯是:所有权限变更必带截图水印,含当前时间、服务器主机名、操作者工号。不是防背锅,是防自己三个月后回看,认不出当年那个疯子到底点了哪几下。


  再说个无关的:今天中午倒水时看见保洁阿姨用同一块抹布擦了茶水间微波炉和服务器机柜散热口。她手速太快,我张了两次嘴没出声。反正机柜门缝里那层灰,比C盘剩余空间还厚实。这跟权限没关系,但某种意义上,它们共享同一种逻辑:表面看不见的接触面,才是最先失效的接口。


  下周我打算把这套五步法编进内部Checklist模板第4.2版,但加个注释:“本流程不适用于Docker Desktop for Windows环境下的IIS Express伪站点——那里连ACL概念都是翻译腔”。先这样。我刚点开任务管理器,看到w3wp进程内存占了两千一百四十六兆,而它只挂着一个纯HTML首页。这事我不管了,得去把录屏关了。

(编辑:站长网)

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

    推荐文章