Не удается запустить PSExec с использованием учетной записи NETWORK SERVICE
Я использую TFS, чтобы запустить PSExec для запуска процесса InstallShield, который создает установщики. Наш агент сборки TFS работает под учетной записью NETWORK SERVICE.
Я запускаю PSExec с использованием параметров -u -p, и я могу выполнить команду и успешно собрать установщики из командной строки на удаленном компьютере.
Однако в TFS я всегда получаю код ошибки 2250, а установщики не собирают.
Чтобы изолировать проблему, я изменил команду psexec на следующую...
PsExec.exe -accepteula \\<machine> -u <username> -p <password> xcopy /y c:\temp\testing.bat c:\temp\1.bat
Если я запускаю вышеизложенное из командной строки, он копирует файл. Если я запускаю вышеупомянутое из TFS (обращаясь к вышеупомянутому в пакетном файле), это терпит неудачу с 2250.
Итак, чтобы смоделировать, что делает TFS, я...
- Запущена командная строка с повышенными привилегиями администратора
- Выпущен
psexec -i -u "nt authority\network service" cmd.exe
- Запустил пакетный файл, содержащий указанную выше команду xcopy
Таким образом, шаг 2 запускает командную строку, используя учетную запись NETWORK SERVICE. Когда я запускаю шаг 3 из этой командной строки, я получаю ту же ошибку 2250. Так что это хорошо, потому что теперь TFS находится вне поля зрения, и я ближе к реальной проблеме.
Просто ради ухмылки я добавил NETWORK SERVICE в группу администраторов удаленного ящика. Это не решило проблему.
Так вот, где я нахожусь в...
- Если я вхожу в поле TFS, используя имя входа в группе администраторов, открываю командную строку и запускаю командный файл xcopy с параметрами -u -p, все работает нормально.
- Если я запускаю командную строку с учетной записью NETWORK SERVICE и запускаю тот же пакетный файл, что и на шаге 1, я получаю отказ в доступе к 2250.
Так что, на мой взгляд, проблема явно связана с учетной записью NETWORK SERVICE. Вопрос: как я могу заставить psexec работать с этим аккаунтом?
ОБНОВИТЬ
Ниже приведены диалоговые окна, в которых отображается учетная запись NETWORK_SERVICE в группе "Администраторы" и что у нее есть полный доступ к пути (c:\temp).
1 ответ
Допустим, ваши две машины называются TFSSERVER и TARGETMACHINE.
NetworkService на сервере TFS будет рассматриваться как учетная запись компьютера, т.е. DOMAIN\TFSSERVER$
, на мишень. Любые учетные записи в группе NT AUTHORITY являются локальными учетными записями, поэтому похоже, что вы только что добавили сетевую службу TARGETMACHINE в качестве администратора, а не сетевую службу машины TFS.
Попробуйте добавить учетную запись компьютера TFS в список разрешений и посмотрите, работает ли он.
Если это не так, посмотрите на этот связанный вопрос и посмотрите, поможет ли вам что-нибудь там: PSEXEC, ошибки доступа запрещены