首页/系统/Windows 运维速查/服务 SID 与安全描述符(sc showsid/sdshow)

服务 SID 与安全描述符(sc showsid/sdshow)

查看服务 SID 与安全描述符,配合 sdset 做最小权限加固:只给服务账户必需权限,先备份再改。

Windows 运维速查系统更新于 2026-10-13

服务 SID 与安全描述符是什么

每个 Windows 服务除了名称,还有一个服务 SID,用于在访问控制中标识它。服务的“安全描述符”决定谁能查询、启动、停止、修改这个服务,可以用 sc sdshow 读出 SDDL 文本,用 sc sdset 写回。这是服务层面最小权限加固的核心手段:把启停权限只给需要的账号,而不是默认放开给 Administrators 与 Everyone。

基本信息

适用平台Windows 全版本(sc 命令,需管理员)
查看 SIDsc showsid <服务名>(本地服务名;也有 UNRESTRICTED 变体)
查看描述符sc sdshow <服务名>
写入描述符(整体覆盖)sc sdset <服务名> <SDDL 字符串>
SID 形式服务 SID 形如 S-1-5-80-……(按服务名哈希生成)

典型使用场景

  • 最小权限加固:把启停权限从宽泛组收窄到具体运维账号
  • 审计要求:证明服务权限配置符合基线而不是默认值
  • 排查“谁改了服务配置”:结合安全描述符与事件日志分析
  • 批量服务部署:新服务落地时同步设置权限,避免事后遗漏
  • 异常服务排查:确认服务 SID 与预期一致,识别伪装服务

常用示例

常用示例
:: 查看服务 SID
sc showsid MySvc
:: 查看当前安全描述符(SDDL 文本)
sc sdshow MySvc
:: 改动前务必先备份现状
sc sdshow MySvc > D:\MySvc_sddl_backup.txt
:: 写入新的安全描述符(整体覆盖语义)
sc sdset MySvc D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)
:: 改完立即验证服务可启动
sc start MySvc
sc query MySvc

SDDL 常见片段

片段含义用途
D:DACL 起始其后为允许/拒绝条目
(A;;…;;;SY)允许 SYSTEM 的权限集服务正常运行必需
(A;;…;;;BA)允许内置管理员组运维与管理
(A;;RPWP;;;组SID)允许启停服务的权限位把启停权限授予特定账号
(D;;…)拒绝条目谨慎使用,整体覆盖语义下影响面大
sc sdset 是整体替换而不是追加:新 SDDL 里漏掉的条目会直接消失,写错会导致服务无法启动甚至无法查询。正确顺序永远是先 sc sdshow 备份、再改、再立刻 sc start 验证。
SDDL 里同一类权限在不同对象上的含义不同(服务、文件、注册表各有映射表)。改造前先确认权限位对应的具体能力,不要照抄网上示例里的字符串。
服务 SID 由服务名派生,重命名服务会改变服务 SID;如果环境里用服务 SID 做过授权,改名前要先评估连带影响。

易错点

  • sdset 写错导致服务无法启动:整体覆盖语义没有“回退一半”的说法,先备份是唯一保险
  • 照抄示例 SDDL:不同对象类型的权限位含义不同,抄错等于给了错误权限
  • 改完不验证启动:问题可能延迟到下次重启才暴露,影响面更大
  • 随意重命名服务:服务 SID 随名称变化,基于 SID 的授权全部失效
  • 以为拒绝条目是精细控制:整体覆盖下漏掉的允许条目同样会造成服务不可用

数据来源与参考

  • Microsoft Learn:sc showsid
  • Microsoft Learn:sc sdshow / sdset

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌