Как команда net use работает с разными пользователями и разными процессами

1

Недавно я написал скрипт на python для выполнения некоторых рутинных операций с файлами и их обслуживания для папки на общем сетевом диске (для доступа к которой требуется аутентификация).

Когда я запустил скрипт на моей локальной машине, он работал и смог получить доступ к сетевому диску без проблем. Затем я поместил сценарий на удаленный компьютер, и Дженкинс запустил его. Jenkins давал мне ошибку «Отказано в доступе», потому что Jenkins был установлен как служба, запущенная локальной системной учетной записью, которая не имела доступа к общему диску.

Итак, после поиска решений я увидел, что могу использовать команду net use для получения доступа к сети с другими учетными данными. Я попытался написать сценарий powershell, который использовал net use с передачей моей информации для входа в систему для вызова сценария python.

Это не сработало.

Наконец, я попытался использовать команду net use в скрипте python, используя os.sys ('net use user / pass'), и это сработало!

Итак, мой вопрос: почему это работает, когда команда net use была помещена в скрипт python, а не в скрипт powershell, используемый для вызова Python?

Большая часть того, что я читал о «сетевом использовании» онлайн, описывает это как «подключение» к сетевому диску? Но мой компьютер уже знал, что диск существует, и где он был, просто не имел к нему доступа, пока я не передал имя пользователя и пароль с помощью команды. Какова область сетевой аутентификации из этой команды? Разве дочерние процессы не сохраняют ту же самую аутентификацию?

forrestaustin
источник
Может ли служба Jenkins быть настроена на использование учетной записи пользователя, которая затем будет иметь доступ к общему диску? Моей первой мыслью о проблеме, как описано, был раздел реестра EnableLinkedConnections. Например, по умолчанию, если вы сопоставляете диск в командной строке, вы не сможете увидеть его в командной строке с повышенными правами, если не задан раздел реестра EnableLinkedConnections. Интересно, может ли это быть частью того, что вы видите, не зная всех деталей?
HelpingHand
Спасибо за совет о ключе реестра. Я посмотрю на это. Просто чтобы прояснить, у меня это работает сейчас, вызывая команду net use в скрипте python. Я просто пытаюсь понять, почему другой способ не сработал. Что касается другого предложения, то, возможно, я мог бы запустить службу Jenkins как мою собственную учетную запись пользователя вместо системы, но мне это показалось плохой идеей, потому что другие люди, работающие под управлением Jenkins, могли делать что-то под своими учетными данными.
forrestaustin
Не могли бы вы создать отдельную служебную учетную запись для использования вместо своей учетной записи?
HelpingHand