如何通过 EC2 主机 运行 Windows Server 2012 将服务 运行 作为 SYSTEM 共享目录网络访问权限?

How do I give a service running as SYSTEM shared directory network access over EC2 hosts running Windows Server 2012?

场景如下:

我将 TeamCity 设置为使用 AWS EC2 主机 运行ning Windows Server 2012 R2 作为构建代理。在此配置中,TeamCity 代理服务 运行 正在作为 SYSTEM。我正在尝试将 FastBuild 实现为我们的新编译过程。为了使用 FastBuild 的分布式编译功能,构建代理主机需要访问共享网络文件夹。不幸的是,我似乎无法将这种访问权限从一台机器授予另一台机器。

为了进一步说明,我将使用命名示例。网络文件夹 C:\Shared-Folder 位于名为 Central-Host 的主机上。构建代理存在于 Builder-Host 上。一切都是 运行ning Windows EC2 主机上的 Server 2012 R2,它们通过 AWS 安全组相互完全允许网络。我需要的是从 Central-Host 共享一个目录,以便 Builder-Host 可以通过这样的目录结构完全访问它:

\Central-Host\Shared-Folder

通过使用默认管理员帐户 RDPing 连接到两台主机,我可以非常轻松地设置网络共享并浏览(在 Builder-Host 上时)到 \\Central-Host\Shared-Folder 位置。我也可以打开命令行和 运行:

type NUL > \Central-Host\Shared-Folder\Empty.txt

结果是在该网络位置创建了一个空文本文件。

问题出在SYSTEM账号上当我抓取PSTOOLS并使用命令时:

PSEXEC -i -s cmd.exe

我可以测试 TeamCity 将给出的命令。同样,它是一个 运行 作为 SYSTEM 的服务,我需要强调的是, 不能更改为普通用户 ,因为我们在用户帐户类型。

经过多次搜索,我发现了如何设置 Active Directory 服务,以便我可以从域中添加用户和计算机,但是在这样做之后,我仍然面临访问被拒绝的错误。我可能遗漏了一些重要的东西,我希望这里有人能提供帮助。我相信当我可以成功 运行 上面显示的 "type NUL" 命令时,我会考虑这个问题 "solved"。

这不是权限问题的答案,而是一种避免权限问题的方法。 (想将其添加为评论,但 Whosebug 不允许我 - 很奇怪。)

共享网络驱动器仅用于远程工作者发现。如果您有固定的工作人员列表,而不是使用工作人员发现,您可以在配置文件中明确指定它们,如下所示:

Settings
{
    .Workers =
    {
        'hostname1'     // specify hostname
        'hostname2'
        '192.168.0.10' // or ip
    }

    ... // the other stuff that goes here

此功能未记录,因为迄今为止所有用户都希望自动发现工作人员。但是使用起来很好,如果它确实有用,只需更新文档即可将其提升为受支持的功能。