为什么在以系统用户身份运行时使用system-name作为用户名?

时间:2014-08-08 18:12:14

标签: maven svn teamcity

这让我整天都在寻找答案。最重要的是,当我以系统用户身份运行svn时,无论传递什么凭据,它似乎都使用system-name对SVN服务器进行身份验证。以下是得出该结论的长篇解释。

从Windows 7 Professional运行时,如果我在任何普通用户下从控制台运行svn,则应用程序按预期工作:如果凭据已在%AppData%/Roaming/Subversion中缓存,则它将使用它们,如果除非我使用--username--password选项,否则它不会提示输入用户名和密码。如果我使用选项输入凭据,则提交可以正常工作。到目前为止一切都很好。

但是,当我尝试在同一台计算机上以系统用户(svn)身份运行nt authority\system时,它的行为会有所不同。首先,%AppData%/Roaming/Subversion指向C:\Windows\System32\config\systemprofile\AppData\Roaming\Subversion,并确保其中没有auth文件夹,因此没有缓存凭据。然后我运行svn没有任何参数,它不会提示用户名/密码,而是执行操作并从subversion接收错误:

svn: E175013: Commit failed (details follow):
svn: E175013: MKACTIVITY of '/svn/Development/!svn/act/f20db493-48f1-9c43-a957-541584be555e': 403 Forbidden (http://<ip-address>)

如果我运行它指示--username--password,则会收到相同的错误。但后来我从subversion检查错误日志并找到:

[Fri Aug 08 17:32:18 2014] [error] [client <client IP>] Access denied: '<clienthostname>$' MKACTIVITY Development:
[Fri Aug 08 17:32:18 2014] [error] [client <client IP>] Access denied: '<clienthostname>$' DELETE Development:

其中<clienthostname>是我尝试提交的计算机的主机名(注意subversion日志末尾的'$',这不是主机名的一部分,但它确实出现在日志中作为用户名的一部分)。

这就是问题:为什么svn在以系统用户身份运行时表现不同?为什么在对SVN服务器进行身份验证时使用主机名作为用户名?为什么其他用户正常工作?

注意:我认为我的问题与stackoverflow中的以下问题不同:


对于那些想知道我为什么要以系统用户身份运行svn的人来说,答案是我正在尝试从TeamCity进行提交,这意味着它是构建代理的执行代理{ {1}}命令。 Build Agent是一个Windows服务,以系统用户身份运行,svn命令以上述方式失败。

1 个答案:

答案 0 :(得分:0)

  1. 在svn命令中使用&#34; - no-auth-cache&#34; ,您将无法看到此问题。但是,您可能遇到其他问题。
  2. 如果您不使用no-auth-cache,它会尝试找出默认的用户名和密码

    1. 更好的方法是创建.subversion文件夹并将身份验证存储在该文件夹中。因此,对于系统帐户,您可以为登录指定不同的用户标识和密码。