PDA

Просмотр полной версии : авторизация на сетевом ресурсе без входа в систему


Iskam
30.11.2009, 16:17
Приветствую всех. Есть такая задача:
Сервер win2k3 st время от времени автоматически уходящий в перезагрузку из за аптейтов (это нормально, так и должно быть). На этом сервере работает самописный екзешник, который по расписанию архивирует базу с другого сервера \\main_server в той же подсети. Пути в программке используются unc. то есть \\main_server\base_adress. Однако авторизироваться программка не умеет. Отсюда две проблемы:
1. после перезагрузки до входа пользователя программа не стартовала (решено превращением её в службу при помощи instsrv и srvany)
2. после перезагрузки до входа пользователя нет авторизации на сетевом ресурсе и сервис работать отказывается. (пробовал делать старт сервиса из cmd файла, где перед екзешником процесса писал net use \\main_server\base_adress /user:user password >C:\log.txt
в log.txt видим "Команда выполнена успешно", однако архивации не происходит, логов от программки, которая крутится службой нету, что, конечно, затрудняет диагностику, но, что есть, то есть...
Сервис запущен не от имени system, а от имени локального администратора, user, который авторизируется на main_server - локальный пользователь того сервера с полными правами на папку base_adress.
Сеть - рабочая группа.

Что можно посоветовать в такой ситуации, кроме control userpasswords2 и, соответственно, автологона?

Alan2006
30.11.2009, 17:24
Во-первых, на чём писана программка?
Во-вторых, архивацию как делает? Системным вызовом архиватора или сама архивирует?
В-третьих, в настройках службы на вкладке "вход в систему" не даёт прописать имя пользователя и пароль?

axlwor
30.11.2009, 20:02
Запускать задачу от нужного имени - это позволит авторизоваться. В планировщике это есть. Хотя глупо с другого сервера тянуть его базы. Вроде проще серверу самому сделать backup и передать его кому следует

PLAstic
30.11.2009, 21:17
axlwor, там базы не тянутся, там архивы кладутся на другой сервер.

Iskam, нужно создать на сервере логин с таким же именем и паролем, как на том сервере. Службу запускать от него.

Iskam
01.12.2009, 09:52
В общем, оказалось всё проще чем я думал, всем большое спасибо, кто тоже самое советовал.
Нужно запускать сервис от юзера с тем же именем и паролем, что и на мишени.
Сегодня буду пробовать запустить его от system и как нибудь авторизоваться, пока сам не знаю как )).

Во-первых, на чём писана программка?
Во-вторых, архивацию как делает? Системным вызовом архиватора или сама архивирует?
а это зачем нужно знать? В том смысле, что проблема ведь не в архивации как таковой, а в механизме авторизации пользователя без активного сеанса.

Alan2006
01.12.2009, 11:04
а это зачем нужно знать? В том смысле, что проблема ведь не в архивации как таковой, а в механизме авторизации пользователя без активного сеанса.

Если решение найдено то уже незачем.
Но всё-таки отвечу:
1. Если системным вызовом то имело смысл попробовать "runas /noprofile" в системном вызове. В противном случае пришлось бы изголяться с функциями языка и/или винапи.
2. На чём писано нужно было знать для того чтобы как раз дать совет как программно авторизоваться. Думаю, очевидно, что если программа на шарпе (или другом языке на основе .net) то действия будут отличаться от язвыков, основанных на winapi.... про борланды и иже присные молчу..

А вообще, имеет смысл такие вещи писать просто скриптом....

refresh
06.12.2009, 11:25
Приветствую всех. Есть такая задача:
Сервер win2k3 st время от времени автоматически уходящий в перезагрузку из за аптейтов (это нормально, так и должно быть). На этом сервере работает самописный екзешник, который по расписанию архивирует базу с другого сервера \\main_server в той же подсети. Пути в программке используются unc. то есть \\main_server\base_adress. Однако авторизироваться программка не умеет. Отсюда две проблемы:
1. после перезагрузки до входа пользователя программа не стартовала (решено превращением её в службу при помощи instsrv и srvany)
2. после перезагрузки до входа пользователя нет авторизации на сетевом ресурсе и сервис работать отказывается. (пробовал делать старт сервиса из cmd файла, где перед екзешником процесса писал net use \\main_server\base_adress /user:user password >C:\log.txt
в log.txt видим "Команда выполнена успешно", однако архивации не происходит, логов от программки, которая крутится службой нету, что, конечно, затрудняет диагностику, но, что есть, то есть...
Сервис запущен не от имени system, а от имени локального администратора, user, который авторизируется на main_server - локальный пользователь того сервера с полными правами на папку base_adress.
Сеть - рабочая группа.

Что можно посоветовать в такой ситуации, кроме control userpasswords2 и, соответственно, автологона?

Мде.. вы не пробовали воспользоваться специализированным программным обеспечением, специально заточенным для этого? Например, Acronis?

Iskam
06.12.2009, 17:55
Мде.. вы не пробовали воспользоваться специализированным программным обеспечением, специально заточенным для этого? Например, Acronis?

Ну, уже, конечно, проехали, однако если действительно интересно почему нельзя использовать сторонние программы для бэкапа баз данных, почитайте о структуре, например, баз ADS, и представьте как в режиме работы 24\7 архивировать соответствующие друг другу *.adt, *.adm, и *.adi
Это не совсем тривиальная задача, поэтому необходимо использовать внутренние механизмы архивации. Да, собственно, и 1С базу врядли получится в то время когда выполняется её постоянная модификация корректно свернуть в архив

Manner
12.01.2010, 07:43
Свертывание в архив нужно делать по ночам!