米狗

  • kubernets
  • docker
  • AWS
  • linux
  • nginx
Kratos
  1. 首页
  2. 微软
  3. 正文

非管理员用户启动windows服务

2021年12月3日 977点热度 2人点赞 0条评论

如何允许非管理员用户启动/停止 Windows 服务?

默认情况下,普通(非管理员)用户无法管理 Windows 服务。这意味着用户无法停止、启动、重新启动或更改 Windows 服务的设置/权限。在某些情况下,用户需要具有重启或管理某些服务的权限。在本文中,我们将介绍几种管理 Windows 服务权限的方法。特别是,我们将向您展示如何通过授予适当的权限来允许非管理员用户启动、停止和重新启动特定的 Windows 服务。

假设,您需要授予域帐户contoso\tuser重新启动Print Spooler服务(服务名称 - spooler)的权限。当非管理员尝试重新启动服务时,会出现错误:

发生系统错误 5。访问被拒绝。

网络停止/启动服务 - 系统错误 5 访问被拒绝

Windows 中没有简单方便的内置工具来管理服务权限。我们将考虑一些方法来授予用户管理服务的权限:

 

内容:
  • 使用 SC.exe(服务控制器)工具设置 Windows 服务权限
  • 使用 SubInACL 允许用户启动/停止/重启服务
  • 如何使用 Process Explorer 更改 Windows 服务权限?
  • 使用 PowerShell 设置 Windows 服务权限
  • 使用安全模板管理服务权限
  • 如何授予用户使用 GPO 管理服务的权限?

 

使用 SC.exe(服务控制器)工具设置 Windows 服务权限

管理系统服务权限的标准内置 Windows 方法假设使用sc.exe(服务控制器)工具。使用此实用程序的主要问题是服务权限格式(SDDL格式 — 安全描述定义语言)的复杂语法。

您可以像这样以 SDDL 字符串的形式获取 Windows 服务的当前权限:

sc.exe sdshow Spooler

sc.exe sdshow Spooler - 显示服务权限

D:(A;;CCLCSWLOCRRC;;;AU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)
(A;;CCLCSWRPWPDTLOCRRC;;;SY)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)

所有这些符号是什么意思?

S: — 系统访问控制列表 (SACL)
D: — 自主 ACL (DACL)

括号后的第一个字母表示:允许(A)或拒绝(D)。

下一组符号是可分配的权限。

CC — SERVICE_QUERY_CONFIG(请求服务设置)
LC — SERVICE_QUERY_STATUS(服务状态轮询)
SW — SERVICE_ENUMERATE_DEPENDENTS
LO — SERVICE_INTERROGATE
CR — SERVICE_USER_DEFINED_CONTROL
RC — READ_CONTROL
RP — SERVICE_START
WP — SERVICE_STOP
DT — SERVICE_PAUSE_CONTINUE

最后 2 个字符是被授予权限的对象(用户、组或 SID)。有一个预定义组列表。

AU 认证用户
AO 账户运营商
RU 别名以允许以前的 Windows 2000
AN 匿名登录
AU 认证用户
BA 内置管理员
BG 内置客人
BO 备份运营商
BU 内置用户
CA 证书服务器管理员
CG创作组
CO 创建者所有者
DA 域管理员
DC 域计算机
DD 域控制器
DG域来宾
DU域用户
EA 企业管理员
ED 企业域控制器
WD 大家
PA 组策略管理员
IU 交互式登录用户
LA 本地管理员
LG本地客人
LS 本地服务帐号
SY 本地系统
NU网络登录用户
NO 网络配置操作符
NS网络服务帐号
PO 打印机操作员
PS个人自我
PU 电力用户
RS RAS 服务器组
RD 终端服务器用户
RE复制器
RC 限制代码
SA 架构管理员
SO 服务器操作员
SU 服务登录用户

您可以通过 SID 显式指定用户或组,而不是预定义的组。要获取当前用户的 SID,可以使用以下命令:

whoami /user

或者,您可以使用Get-ADUser cmdlet查找任何域用户的 SID :

Get-ADUser -Identity 'sadams' | select SID

您可以使用Get-ADGroup cmdlet获取AD 安全组的 SID :

Get-ADGroup -Filter {Name -eq "ny-ithelpdesk"} | Select SID

 

要为特定服务分配 SDDL 权限字符串,您可以使用sc sdset命令。例如,可以使用以下命令向用户授予权限:

sc sdset Spooler "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;RPWPCR;;;S-1-5-21-2133228432-2794320136-1823075350-1000)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"

使用 SubInACL 允许用户启动/停止/重启服务

使用来自 Sysinternals(Mark Russinovich)的命令行工具SubInACL来管理服务权限更容易。这个工具的语法更简单、更方便。以下是使用 SubInACL 授予服务重启权限的方法:

  1. 从此网页(https://www.microsoft.com/en-us/download/details.aspx?id=23510)下载subinacl.msi并将其安装在目标系统上;SubInACL 工具
  2. 在提升的命令提示符中,转到包含该工具的目录: cd “C:\Program Files (x86)\Windows Resource Kits\Tools\"
  3. 运行命令: subinacl.exe /service Spooler /grant=contoso\tuser=PTO
    subinacl - 授予用户启动/停止服务的权限

    注意。在这种情况下,我们授予用户暂停(暂停/继续)、启动和停止(重新启动)服务的权限。可用服务权限的完整列表: 

    F : 完全控制
    R : 通用读取
    W : 通用写入
    X : 通用执行
    L : 读取控制
    Q : 查询服务配置
    S : 查询服务状态
    E : 枚举依赖服务
    C : 服务更改配置
    T : 启动服务
    O : 停止服务
    P : 暂停/继续服务
    I : 查询服务
    U : 服务用户定义的控制命令

     

    如果您需要向在远程计算机上运行的服务授予权限,请使用 subinacl 命令的以下语法:
    subinacl /SERVICE \\lon-prnt1\spooler /grant=contoso\tuser=F

  4. 现在您只需使用用户帐户登录计算机并尝试使用以下命令重新启动服务:
    net stop spooler
    net start spooler
    或
    sc stop spooler && sc start spooler
    sc 重新启动 Windows 服务单线

如果一切正常,服务应该会重新启动。

要撤销分配的服务权限,请使用/revokesubinacl.exe 工具的选项。例如: 

subinacl.exe /service Spooler /revoke=contoso\tuser

 

如何使用 Process Explorer 更改 Windows 服务权限?

您可以使用另一种 Sysinternals 实用程序 - Process Explorer更改 Windows 服务权限。以管理员身份运行进程浏览器,找到你需要的服务的进程。在我们的示例中,这是spoolsv.exe(假脱机程序可执行文件 – C:\Windows\System32\spoolsv.exe)。打开进程属性并单击服务选项卡。

进程资源管理器服务权限

单击权限按钮并在打开的窗口中添加用户或组。之后选择您要分配的权限(完全控制/写入/读取)。

允许使用 procexp 管理 Windows 服务

使用 PowerShell 设置 Windows 服务权限

在 TechNet 库中,有一个单独的非官方 PowerShell 模块用于管理不同 Windows 对象的权限 - PowerShellAccessControl 模块(您可以在此处下载)。该模块还允许您管理服务权限。安装此模块并将其导入您的 PS 会话:

Import-Module PowerShellAccessControl

您可以像这样从 PowerShell获得特定 Windows 服务的有效权限:

Get-Service spooler | Get-EffectiveAccess -Principal corp\tuser

要允许非管理员用户启动和停止假脱机服务,请运行以下命令:

Get-Service spooler | Add-AccessControlEntry -ServiceAccessRights Start,Stop -Principal corp\tuser

使用安全模板管理服务权限

管理服务权限的可视化(但需要更多操作)图形方式是使用安全模板。打开mmc.exe控制台并添加安全模板管理单元。

安全模板管理单元

创建一个新的安全模板(New Template)。

新模板

指定新模板的名称并转到“系统服务”部分。在服务列表中选择服务Print Spooler并打开其属性。

选择启动模式(自动)并单击编辑安全性。

服务编辑安全

使用“添加”按钮,添加要授予权限的用户帐户或组。在我们的例子中,启动、停止和暂停权限就足够了。

服务安全设置

保存此模板。

注意。安全模板的内容作为 INF 文件保存在 C:\Users\%username%\Documents\Security\Templates 文件夹中。

如果你打开这个文件,你可以看到关于权限的信息是以前面提到的 SDDL 格式保存的。这样得到的字符串可以作为sc.exe命令的参数。

[Unicode]
Unicode=yes
[Version]
signature="$CHICAGO$"
Revision=1
[Service General Setting]
"Spooler",2,"D:AR(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;RPWPDTRC;;;S-1-5-21-3243688314-1354026805-3292651841-1127)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"

service_user_rights.inf
现在,您只需使用安全配置和分析管理单元创建一个新数据库(开放数据库)并从文件Spooler User Rights.inf导入您的安全模板。

导入安全模板

通过从上下文菜单中选择立即配置计算机选项来应用此模板。

立即配置计算机

现在您检查用户是否可以允许在非管理员帐户下管理 Print Spooler 服务。

如何授予用户使用 GPO 管理服务的权限?

如果您必须授予用户启动/停止服务多台服务器或域计算机的权限,使用组策略 (GPO) 功能会更容易:

  1. 创建一个新的 GPO 或编辑现有的 GPO,将其链接到具有计算机对象的必要 Active Directory 容器 (OU)。转到策略部分计算机配置 -> Windows 设置 -> 安全设置 -> 系统服务;系统服务 GPO
  2. 找到 Spooler 服务并像上述方法一样向用户授予权限。保存更改;
    笔记。早些时候我们展示了使用相同的 GPO 可以对所有用户隐藏任何 Windows 服务。
  3. 等待 GPO 应用到客户端计算机上,并确保已分配新的服务权限。
Windows 服务安全权限存储在哪里? 

您更改了默认权限的所有服务的安全设置都存储在它们自己的注册表项HKLM\System\CurrentControlSet\Services\<servicename>\Security中的 REG_BINARY 类型的Security参数中。

这意味着在其他计算机上设置服务权限的方法之一是导出/导入此注册表参数(包括通过 GPO)。注册表中的windows服务权限

 

因此,我们研究了几种管理 Windows 服务权限的方法,这些方法允许您向非管理员用户授予系统服务的任何权限。如果用户需要远程访问服务,而不授予其本地登录或RDP 访问权限,则必须允许用户通过服务控制管理器远程连接和枚举服务。

转载:http://woshub.com/set-permissions-on-windows-service/#h2_1

标签: 暂无
最后更新:2021年12月3日

duhongjun

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

归档

  • 2024 年 10 月
  • 2024 年 4 月
  • 2024 年 3 月
  • 2024 年 2 月
  • 2024 年 1 月
  • 2023 年 11 月
  • 2023 年 4 月
  • 2023 年 2 月
  • 2023 年 1 月
  • 2022 年 11 月
  • 2022 年 10 月
  • 2022 年 9 月
  • 2022 年 8 月
  • 2021 年 12 月
  • 2021 年 11 月
  • 2021 年 8 月
  • 2021 年 7 月
  • 2021 年 6 月
  • 2021 年 2 月
  • 2020 年 1 月
  • 2019 年 12 月
  • 2019 年 11 月
  • 2019 年 10 月
  • 2019 年 9 月
  • 2019 年 8 月

分类目录

  • AWS
  • docker
  • elasticsearch
  • Jenkins
  • kubernets
  • linux
  • mysql
  • nginx
  • Oracle
  • php
  • redis
  • zabbix
  • 个人
  • 中间件
  • 公有云
  • 大数据
  • 安全工具
  • 微软
  • 操作系统
  • 数据库
  • 未分类
  • 监控
  • 科技
  • 网络技术
  • 资讯
  • 阿里云

COPYRIGHT © 2024 米狗. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

沪ICP备2021019346号-1