【问题标题】:Subinacl: Schedule - OpenService Error : 5 Access is deniedSubinacl:计划 - OpenService 错误:5 访问被拒绝
【发布时间】:2017-11-24 12:11:58
【问题描述】:

我正在尝试为“任务计划程序”的“非管理员”用户授予一些权限。

如果你执行这个命令:

PS > C:\Windows\System32\sc.exe queryex type= service state=all

可以发现“Task Scheduler”服务名称为“Scheduler”:

SERVICE_NAME: Schedule
DISPLAY_NAME: Task Scheduler

然后我尝试运行简单的命令来显示现有权限:

PS >.\subinacl.exe /Service Schedule /display=dacl

试图授予一些权利:

PS >.\subinacl.exe /Service Schedule /grant=NonAdmin=R

但是两个命令都抛出访问被拒绝:

Schedule - OpenService Error : 5 Access is denied.


Elapsed Time: 00 00:00:00
Done:        1, Modified        0, Failed        1, Syntax errors        0
Last Done  : Schedule
Last Failed: Schedule - OpenService Error : 5 Access is denied.

我的环境: 操作系统:Windows 8.1 企业版; 工作组:连接到域(也在未连接到域的 VM 上尝试过 - 相同的访问被拒绝);我是管理员;我以管理员身份运行 PowerShell。

我如何解决这个“拒绝访问”问题并为“任务计划程序”的非管理员用户授予一些权限?

2017 年 11 月 28 日更新:

RbMm的帮助下,我授予了使用权限,他现在可以创建新的计划任务了。 还有一个问题是他无法删除/移除创建的任务。 我将所有大部分赠款都授予用户:

"(A;;GAGRGWGXRCSDCCDCLCSWRPWPDTLOCRSDRCFAFRFWFX;;;<USER_SID>)"

但我在尝试删除/移除计划任务时仍然收到此错误:

The error returned is: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))

注意事项:

  • 这是域用户。
  • 我尝试为该用户授予 %windir%\Tasks 权限,但没有帮助。

我错过了什么,为什么用户不能删除任务?

【问题讨论】:

  • 这是subinacl.exe 中的错误 - 不是使用READ_CONTROL|WRITE_DAC 访问打开服务,而是尝试使用GENERIC_ALL|ACCESS_SYSTEM_SECURITY 打开它,结果访问被拒绝。可以使用 winapi 自己实现此任务
  • “winapi”-> sc 命令是什么意思?一个如何向 MS 报告错误,他们会修复它 :),但我上次看到它是在 2012 年更新的,所以不太希望它会被修复......
  • 我的意思是你自己做这个,作为程序员。所以打电话给OpenSCManagerOpenServiceQueryServiceObjectSecuritySetServiceObjectSecurityCloseServiceHandlesubinacl.exe 的问题是它尝试使用 GENERIC_ALL 访问权限打开服务。但schedule 未授予管理员完全访问权限 - 结果访问被拒绝。
  • 真的在 schedule 管理员没有下一次访问 - DELETE|SERVICE_STOP|SERVICE_CHANGE_CONFIG - 你可以在管理工具的 services 管理单元中查看说,你不能更改启动类型,或者与大多数其他服务不同,停止此服务。但是很容易通过使用 winapi 以正确的访问权限打开此服务 - READ_CONTROL(需要查询)+ WRITE_DAC(需要更改安全性) - 管理员同时拥有此访问权限

标签: windows scheduled-tasks grant subinacl


【解决方案1】:

您可以使用sc sdshow schedule 命令查看schedule 安全描述符。默认情况下,它返回类似D:(A;;CCLCSWLORC;;;AU)(A;;CCLCSWRPDTLOCRRCWDWO;;;BA)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;;CCLCSWLORC;;;BU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD) 的字符串,这意味着:

T FL AcessMsK Sid
A 00 0002008D S-1-5-11 'Authenticated Users'
A 00 000E01DD S-1-5-32-544 'Administrators'
A 00 000F01FF S-1-5-18 'SYSTEM'
A 00 0002008D S-1-5-32-545 'Users'

请注意,管理员没有对此服务的完全访问权限,只有E01DD(没有DELETE|SERVICE_STOP|SERVICE_CHANGE_CONFIG

我们可以使用例如sc sdset schedule D:(A;;CCLCSWLORC;;;AU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BU)进行更改

这意味着下次访问:

T FL AcessMsK Sid
A 00 0002008D S-1-5-11 'Authenticated Users'
A 00 000F01FF S-1-5-32-544 'Administrators'
A 00 000F01FF S-1-5-18 'SYSTEM'
A 00 000F01FF S-1-5-32-545 'Users'

因此用户、管理员和系统拥有完全访问权限 (F01FF),如果您想要其他访问权限组合 - 请查看 Security Descriptor String Format

【讨论】:

猜你喜欢
  • 2017-02-24
  • 2013-06-06
  • 2011-03-01
  • 2014-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-25
  • 2021-02-03
相关资源
最近更新 更多