2

场景如下:

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

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

\\Central-Host\Shared-Folder

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

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

在该联网位置创建一个空文本文件的结果。

问题来自 SYSTEM 帐户。当我抓住 PSTOOLS 并使用命令时:

PSEXEC -i -s cmd.exe

我可以测试 TeamCity 将给出的命令。同样,它是作为 SYSTEM 运行的服务,我需要强调的是,由于我们在用户帐户类型下使用 TeamCity 代理时遇到的其他问题,它无法更改为普通用户。

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

4

1 回答 1

1

这不是权限问题的答案,而是一种避免它的方法。(想将此添加为评论,但 StackOverflow 不会让我 - 很奇怪。)

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

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

    ... // the other stuff that goes here

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

于 2015-08-28T02:56:11.533 回答