在 Windows 中的目录中授予应用程序符号链接权限

在 Windows 中的目录中授予应用程序符号链接权限

我不太了解 Windows 权限,但是有没有办法让脚本或应用程序有权创建仅在应用程序“拥有”的目录树内链接的符号链接?(链接位于树中。目标也是如此。)

笔记:我不想授予脚本管理员权限。

答案1

抱歉,没有内置任何内容。您可以为运行该进程的用户(您自己或其他帐户)授予 SeSymbolicLink 权限,这样就可以创建符号链接,而无需授予其他管理员级别的访问权限。符号链接仍然只能在该帐户可以创建文件的任何位置创建,并且仍然适用常规访问检查(如果符号链接指向您可以读取但不能写入的文件,您将能够通过符号链接读取它,但仍然无法写入它)。希望这足够安全;符号链接在 Windows 上需要特殊权限的唯一原因是它们直到 Vista 才可用,因此许多旧版程序无法正确处理它们,尤其是对于目录循环或其他此类糟糕想法。

要允许特定用户创建符号链接(通过授予用户 SeSymbolicLinkPrivilege),请执行以下操作:

  1. 运行本地安全策略编辑器 ( secpol.msc)。它需要管理员访问权限。
  2. 查看“本地策略”->“用户权限分配”。找到“创建符号链接”条目。
  3. 双击该条目将其打开,然后按[Add User or Group...]
  4. 在出现的框中,输入您的 Windows 用户名并按[Check Names]。它应该会变为一个带下划线的完全限定名称。如果没有,您应该尝试其他形式的用户名。您也可以单击[Advanced]以搜索选项列表。
  5. 一旦框中的用户名被划线,点击[OK]“选择用户和组”窗口,然后点击[OK]“创建符号链接属性”窗口。
  6. 如果相关用户已登录,请注销并重新登录。该用户现在应该能够创建符号链接,而无需管理员权限。

另一种选择是使用 NTFS 硬链接。与符号链接不同,任何用户都可以创建硬链接(默认情况下)。但是,与符号链接不同(也与 POSIX 硬链接不同),除非您对目标文件具有特定权限(写入属性?一般类别为“写入”),否则您无法创建硬链接。因此,如果您只需要链接文件(而不是目录),并且您对相关文件具有写入权限,那么您可能可以很好地使用硬链接(它们的操作类似于 POSIX 硬链接,遵循文件节点而不是文件名,并且如果您删除“原始文件”但不删除链接,则数据不会被删除,直到您也删除链接)。

如果您也需要目录链接,您可以 - 如@WesSayeed 所建议的 - 使用 NTFS 连接点。它们很难通过编程创建(尽管通过脚本很容易),但对于您通常使用目录符号链接的大多数用途来说,它们都可以正常工作。

答案2

普通用户不需要任何特殊权限来创建连接(与目录符号链接非常相​​似)。

您可以亲自查看这一点,方法是打开命令提示符(非提升权限),然后输入mklink /j <link> <target>(将链接和目标名称替换为您想要的任何目录)。即使您没有管理员权限,您也会看到此命令成功执行。您仍然无法使用但是,如果您没有访问目标的权限,则无法访问该链接。

mklink只需在脚本中使用该命令它就可以正常工作。

相关内容