[译]Windows 服务用户帐户

简介:

 在 Windows 操作系统中,每个服务都运行在一个用户帐户安全上下文中。其用户名和密码在服务安装时由 CreateService 函数指定,并可以通过 ChangeServiceConfig 函数进行更改,通过 QueryServiceConfig 函数查询某个服务的用户名。服务控制管理器(SCM)自动为服务加载用户配置文件。

启动服务时,SCM 会登录到该服务关联的账户之上,一旦登录成功,系统会生成一个访问令牌,并将其附加到新的服务进程上,用于在随后与安全对象(带有安全描述符的对象)的交互中标识该服务进程。例如,如果服务尝试打开某个管道的句柄,系统将在为该服务获取权限之前对比其访问令牌和管道的安全描述符。

 

SCM 不会保留服务所使用的用户帐户的密码。如果密码过期,登录会失败,服务启动失败。为服务指派帐户的系统管理员可以创建永不过期的密码,或者通过服务配置程序来周期性的更改过期的密码。

如果服务需要在与另一个服务共享其信息之前对其进行识别,那么第二个服务可以使用第一个服务的帐户,或者运行在另一个被第一个服务识别的帐户别名中。需要在网络环境中处理分布式事务的服务可以运行在域帐户中。

可以向服务指定下列特殊帐户,而不必指定某个用户帐户:LocalService、NetworkService、LocalSystem。

捕获

LocalService

该账户是给SCM使用的预定义本地帐户,其不会被安全子系统识别,因此无法通过调用 LookupAccountName 函数来获得其用户名。它具有本地计算机上的最小特权,在网络访问时代表匿名凭据。

该账户可以在调用 CreateService 和 ChangeServiceConfig 函数时指定。需要注意的是,该账户没有密码,因此在调用时提供的任何密码都会被忽略。如果安全子系统本地化其账户名,SCM将不支持本地化的名称。因此,可以通过 LookupAccountSid 函数来取得该账户的本地名称,但不管系统区域是什么,在调用 CreateService 或 ChangeServiceConfig 时必须使用 NT AUTHORITY\LocalService 这个名称,否则会发生不可预料的结果。

该用户的 SID 由 SECURITY_LOCAL_SERVICE_RID 值来创建。

该账户在 HKEY_USERS 注册表项下有自己的子键,因此,它有与自己关联的 HKEY_CURRENT_USER 注册表项。

该账户具有下列特权:

  • SE_ASSIGNPRIMARYTOKEN_NAME (已禁用)
  • SE_AUDIT_NAME (已禁用)
  • SE_CHANGE_NOTIFY_NAME (已启用)
  • SE_CREATE_GLOBAL_NAME (已启用)
  • SE_IMPERSONATE_NAME (已启用)
  • SE_INCREASE_QUOTA_NAME (已禁用)
  • SE_SHUTDOWN_NAME (已禁用)
  • SE_UNDOCK_NAME (已禁用)
  • 用户和已鉴定用户拥有的其他特权

 

NetworkService

该账户在本地计算机上拥有最小特权,在网络上代表该计算机的身份。默认情况下,远程令牌包含 Everyone 和 Authenticated Users 用户组的 SID。该用户的 SID 由 SECURITY_NETWORK_SERVICE_RID 值来创建。其他属性与 LocalService 相同。

LocalSystem

它具有本地计算机上的扩展特权,在网络访问时代表该计算机的身份。其令牌包含 NT AUTHORITY\SYSTEM 和 BUILTIN\Administrators 的 SID,这些账户能够访问系统中大多数对象,其名称在所有区域均为 .\LocalSystem,使用 LocalSystem 或 ComputerName\LocalSystem 均可。

本账户中运行的服务会继承SCM的安全上下文。该用户的 SID 由 SECURITY_LOCAL_SYSTEM_RID 值来创建。本账户不与已登录的任何账户关联。此账户有以下特点:

  • HKEY_CURRENT_USER 关联到默认用户,而不是当前登录的用户。要访问其它用户的配置文件,需要模仿该用户,然后访问 HKEY_CURRENT_USER。
  • 使用该账户的服务可以打开 HKEY_LOCAL_MACHINE\SECURITY。
  • 此服务以本计算机的身份访问远程服务器。
  • 如果服务打开了命令窗口并运行批处理文件,用户可以使用 Ctrl+C 终止该批处理,以此获得使用 LocalSystem 权限访问命令行窗口的能力。

另外,本账户具有以下特权:

  • SE_ASSIGNPRIMARYTOKEN_NAME (已禁用)
  • SE_AUDIT_NAME (已启用)
  • SE_BACKUP_NAME (已禁用)
  • SE_CHANGE_NOTIFY_NAME (已启用)
  • SE_CREATE_GLOBAL_NAME (已启用)
  • SE_CREATE_PAGEFILE_NAME (已启用)
  • SE_CREATE_PERMANENT_NAME (已启用)
  • SE_CREATE_TOKEN_NAME (已禁用)
  • SE_DEBUG_NAME (已启用)
  • SE_IMPERSONATE_NAME (已启用)
  • SE_INC_BASE_PRIORITY_NAME (已启用)
  • SE_INCREASE_QUOTA_NAME (已禁用)
  • SE_LOAD_DRIVER_NAME (已禁用)
  • SE_LOCK_MEMORY_NAME (已启用)
  • SE_MANAGE_VOLUME_NAME (已禁用)
  • SE_PROF_SINGLE_PROCESS_NAME (已启用)
  • SE_RESTORE_NAME (已禁用)
  • SE_SECURITY_NAME (已禁用)
  • SE_SHUTDOWN_NAME (已禁用)
  • SE_SYSTEM_ENVIRONMENT_NAME (已禁用)
  • SE_SYSTEMTIME_NAME (已禁用)
  • SE_TAKE_OWNERSHIP_NAME (已禁用)
  • SE_TCB_NAME (已启用)
  • SE_UNDOCK_NAME (已禁用)
本文转自wbpluto 51CTO博客,原文链接:http://blog.51cto.com/wbpluto/612129,如需转载请自行联系原作者
相关文章
|
10天前
|
API Docker Windows
2024 Ollama 一站式解决在Windows系统安装、使用、定制服务与实战案例
这篇文章是一份关于Ollama工具的一站式使用指南,涵盖了在Windows系统上安装、使用和定制服务,以及实战案例。
2024 Ollama 一站式解决在Windows系统安装、使用、定制服务与实战案例
|
17天前
|
安全 Windows
【Azure云服务 Cloud Service】Cloud Service的实例(VM)中的服务描述Software Protection 与 Windows Defender, 如何设置Windows Defender Antivirus服务
【Azure云服务 Cloud Service】Cloud Service的实例(VM)中的服务描述Software Protection 与 Windows Defender, 如何设置Windows Defender Antivirus服务
|
24天前
|
Java Windows
SpringBoot Windows 自启动 - 通过 Windows Service 服务实现
SpringBoot Windows 自启动 - 通过 Windows Service 服务实现
32 2
|
26天前
|
编解码 开发工具 Android开发
Windows平台RTMP推送|轻量级RTSP服务如何实现摄像头叠加到屏幕输出
大牛直播SDK采用先进的图层概念实现视频叠加,如将摄像头画面实时叠加到屏幕输出,以C#为例展示了具体的配置方法。用户可在推送RTMP或启动RTSP服务前选择“摄像头叠加到屏幕”的选项,并调整位置。SDK还支持摄像头的开启与关闭、水平垂直翻转及旋转等功能。此外,该SDK提供了丰富的特性,包括但不限于视频和音频采集处理、硬编码与软编码支持、多实例推送、水印添加、网络适应性调整等,几乎涵盖了RTMP推送的所有常规需求,并能与播放器协同工作达到毫秒级的低延迟,非常适合无纸化同屏、智慧教室等应用场景。
|
26天前
|
开发工具 数据安全/隐私保护 开发者
Windows平台RTMP推送|轻量级RTSP服务摄像头如何添加动态文字水印
本文介绍了在Windows平台上实现摄像头或屏幕流中动态文字水印的技术方法。通过大牛直播SDK示例,展示了如何从文本获取RGB数据,并将其叠加到视频流上。文中提供了代码片段来说明如何开启文字水印、生成包含实时信息的位图、以及如何更新和控制图层。最终实现了动态显示时间和位置信息的需求。对这一领域的开发者而言,本文提供了实用的参考与指导。
EMQ
|
2月前
|
物联网 Linux C语言
在 Windows 平台搭建 MQTT 服务
NanoMQ 有着强大的跨平台和可兼容能力,不仅可以用于以 Linux 为基础的各类平台,也为 Windows 平台提供了 MQTT 服务的新选择。
EMQ
87 4
在 Windows 平台搭建 MQTT 服务
|
26天前
|
编解码 Linux 开发工具
如何启动Windows平台轻量级RTSP服务生成RTSP拉流URL
为满足内网超低延迟需求,我们开发了轻量级RTSP服务模块,避免用户额外部署服务器。此模块集成于推送端SDK中,支持Windows、Linux、Android及iOS平台,可将本地音视频数据编码后通过RTSP协议提供。具备RTSP鉴权、单播/组播等功能,支持H.264/H.265编码,同时可创建多个服务实例,并查询连接数。实测总延迟约200-300毫秒,兼具稳定与高效。
|
8天前
|
C# Windows 监控
WPF应用跨界成长秘籍:深度揭秘如何与Windows服务完美交互,扩展功能无界限!
【8月更文挑战第31天】WPF(Windows Presentation Foundation)是 .NET 框架下的图形界面技术,具有丰富的界面设计和灵活的客户端功能。在某些场景下,WPF 应用需与 Windows 服务交互以实现后台任务处理、系统监控等功能。本文探讨了两者交互的方法,并通过示例代码展示了如何扩展 WPF 应用的功能。首先介绍了 Windows 服务的基础知识,然后阐述了创建 Windows 服务、设计通信接口及 WPF 客户端调用服务的具体步骤。通过合理的交互设计,WPF 应用可获得更强的后台处理能力和系统级操作权限,提升应用的整体性能。
22 0
|
9天前
|
编解码 开发工具 数据安全/隐私保护
如何快速实现Windows平台屏幕摄像头采集并推送RTMP|轻量级RTSP服务能力?
一个好的推送模块,除了实现高效率的编码传输外,还要有好的音视频采集机制和灵活的架构支持,便于后期功能扩展,比如实时快照、预览、实时录像等。除此之外,还要有好的交互机制(比如envent callback)、低延迟和长期运行稳定的性能。
|
10天前
|
网络安全 Windows
在Windows电脑上启动并配置SSH服务
在Windows电脑上启动并配置SSH服务
29 0
下一篇
DDNS