windows 2008 R2 TS 打印机安全 - 无法取得所有权

windows 2008 R2 TS 打印机安全 - 无法取得所有权

我有一台安装了终端服务器角色的 Windows 2008 R2 服务器。我发现服务器上本地打印机操作员组的普通用户遇到了问题。

如果用户使用“以管理员身份运行”打开 cmd 窗口,他们可以运行 printmanager.msc,而无需再次输入密码。在 printmanager 中,他们可以毫无问题地更改重定向(轻松打印)打印机的所有权。

如果他们从同一个 cmd 窗口使用 subinacl 尝试将队列的所有权更改为自己,则会被拒绝访问:

>subinacl.exe /printer "_#MyPrinter (2 redirected)" /setowner="MyDom\MyUsr"
Elapsed Time: 00 00:00:00
Done:        1, Modified        0, Failed        1, Syntax errors        0
Last Done  : _#MyPrinter (2 redirected)
Last Failed: _#MyPrinter (2 redirected) - OpenPrinter Error : 5 Access denied

因此,同样的上下文,同样的操作,但一个有效,一个无效。对于这种奇怪的行为,您有什么想法吗?

我在 x64 服务器上使用 subinacl x86,因为我找不到更新的版本。我尝试使用 icacls 和其他程序,但无法让它们对打印机执行任何操作。

编辑:在 Gregs 对 setacl 的评论之后添加

如果我以 Testusr 身份登录 TS 服务器并打开管理工具 > 打印机管理(以管理员身份),然后输入 mydomain\testusr 和 testusr 的密码,那么我可以更改打印机队列的所有权并将 testusr 设置为所有者。

但是,如果我以管理员身份打开 cmd,并再次输入 mydomain\testusr 和用户密码,当我尝试更改重定向打印机的所有权时,我会得到以下信息:

C:\>setacl -on "Bullzip PDF Printer (12 redireccionado)" -ot prn -actn setowner -ownr n:mydom\testusr

WARNING: Privilege 'Back up files and directories' could not be enabled. SetACL's powers are restricted.
WARNING: Privilege 'Restore files and directories' could not be enabled. SetACL's powers are restricted.
INFORMATION: Processing ACL of: <Bullzip PDF Printer (12 redireccionado)>
ERROR: Enabling the privilege SeTakeOwnershipPrivilege failed with: No todos los privilegios o grupos a los que se hace referencia son asignados al llamador.
 [meaning not all referenced privs or groups are assigned to the caller]

SetACL finished with error(s):
SetACL error message: A privilege could not be enabled

也许我理解错了,但是如果内置的 Windows 工具仅通过“打印操作员”组的成员身份就可以做到这一点,那么 setacl 也应该可以做到,不是吗?

然而 setacl 似乎依赖于其他权限,而实际上不需要这样做。

答案1

Windows 通常不允许用户将任何对象的所有权更改为管理员以外的任何人(或他们自己,如果他们对该对象具有所有权权限),除非他们是管理员或他们拥有某些特殊的 Windows 用户权限(您不应授予)。

我推测已有七年历史的 x86 版本的 subinacl.exe 无法与提升进程中的安全令牌一起正常工作。

一些建议:

尝试使用更新版本的 subinacl,5.2.3790.1180,可从以下网址获取:

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=e8ba3e56-d8fe-4a91-93cf-ed6985e3927b

尝试使用免费的 SetAcl.exe 实用程序。这是权限管理工具的瑞士军刀,包含 x64 版本。这是一个活跃的项目,包含 Microsoft 实用程序所缺乏的许多功能。

http://helgeklein.com/setacl/

文档:

http://helgeklein.com/setacl/documentation/command-line-version-setacl-exe/
http://helgeklein.com/setacl/examples/managing-printer-service-and-share-permissions-with-setacl-exe/

使用示例:

setacl -on "Printer Name" -ot prn -actn setowner -ownr n:domainNetbiosName\userName

答案2

也许您可以使用 setprinter 工具 (setprinter -examples 3) 设置安全性。SetPrinter 适用于 2003,但也适用于 2008 R2。

相关内容