3

设想

我目前正在查看我的应用程序安装程序的安全问题。尽管完整的上下文可能与我的问题无关,但我正在尝试做的是:https ://skanthak.homepage.t-online.de/!execute.html

问题

我确实有一个具有提升权限的 CMD,并且被冒充为 SYSTEM,我使用 Sysinternals 套件中的 PsExec 进行了此操作(请参阅this)。

当前文件夹是我的用户文件夹中的一个新的空文件夹。

当我执行

mklink /h version.dll C:\Windows\System32\version.dll

我得到“拒绝访问”

如此处的答案所述,我已向我的用户、系统和管理员授予“创建符号链接”权限。

我已经使用提升的资源管理器尽可能从 windows 文件夹及其所有子文件夹中删除了写保护(特别是 version.dll 没有写保护)

我在 HyperV 中托管的虚拟机中执行所有这些操作。虚拟操作系统是 Windows 7 Professional SP1。

问题

为什么命令失败并显示 ACCESS DENIED?

4

1 回答 1

3

您遇到的问题是 dll 本身的安全问题。

默认情况下,某些受保护的操作系统文件仅允许受信任的安装程序对其进行完全控制,并将受信任的安装程序设置为文件的默认所有者。

为了创建硬链接,您必须从受信任的安装程序获得文件的所有权(否则,您无法更改文件的权限)。

设置文件所有者后,您可以更改文件的权限以让您的用户完全控制。 -- 之后,您始终可以将自己设置回减少的权限集,因为除非您想删除硬链接,否则您将不再需要它们

我刚刚自己测试了这种方法以验证它仍然有效,尽管过去我已经想出如何减少对完全控制的需求,但这只是手动获取可能的特殊权限的问题,所以你可以做到这一点如果你喜欢(我相信最小是全套“文件属性”和“特殊文件属性”添加/更改/删除)

无论如何,很高兴解决您的问题。:)

最初我有同样的问题:

C:\Admin>mklink /h C:\Admin\testlink\version.dll C:\Windows\System32\version.dll
Access is denied.

在获得文件所有权并授予我的用户完全权限后,可以成功建立链接:

C:\Admin>mklink /h C:\Admin\testlink\version.dll C:\Windows\System32\version.dll
Hardlink created for C:\Admin\testlink\version.dll <<===>> C:\Windows\System32\version.dll
于 2016-11-11T22:20:34.230 回答