Учетная запись сетевой службы не принимает локальные пути

Я создаю программу, которая работает как служба и создает резервные копии базы данных (с помощью pg_dump.exe) в определенные моменты в течение дня. Эта программа должна иметь возможность записывать файлы резервных копий на локальные диски И подключенные сетевые диски.

Сначала мне не удавалось писать на сетевые диски, но я решил проблему, выполнив вход в службу с учетной записью администратора. Однако мой босс хочет, чтобы программа запускалась без необходимости вводить имя пользователя и пароль для учетной записи.

Я попытался обойти это, используя учетную запись сетевой службы (которая не требует пароля и всегда имеет одно и то же имя). Теперь моя программа будет писать на сетевые диски, но не на локальные! Я пробовал использовать обычный синтаксис пути C:\<directory name>\, а также синтаксис \\<computer name>\C$\<directory name>\, а также \\<ip address>\C$\<directory name>\, ни один из которых не работает.

Есть ли способ получить учетную запись сетевой службы для доступа к локальным дискам?


person user2437443    schedule 08.05.2014    source источник


Ответы (2)


Просто дайте учетной записи разрешение на доступ к этим файлам / каталогам, все должно работать. Для доступа к локальным файлам вам необходимо настроить ACL для файлов и каталогов. Для доступа через общий сетевой ресурс вам необходимо внести изменения в списки управления доступом к файлам, а также права доступа к сетевому ресурсу.

Списки управления доступом к файлам можно изменить в пользовательском интерфейсе проводника или из командной строки, используя стандартный icacls.exe. Например. эта командная строка предоставит каталог и все файлы под правами чтения, записи и удаления для сетевой службы.

icacls c:\MyDirectory /T /grant "NT AUTHORITY\Network Service":(R,W,D)

Разрешения общего доступа к файлам легче изменить из пользовательского интерфейса с помощью инструмента fsmgmt.msc.

Вам нужно будет выяснить, какой минимальный набор разрешений необходимо применить. Если вы вообще не беспокоитесь о безопасности, вы можете предоставить полные разрешения, но это почти всегда излишество, и оно открывает вам больше, если по какой-либо причине служба скомпрометирована.

person seva titov    schedule 09.05.2014
comment
Спасибо за ответ! Похоже, это решение сработает, но я уже пошел другим путем. Вместо использования пользователя сетевой службы я создаю своего собственного пользователя и добавляю его в группу пользователей «Администраторы», поэтому мне не нужно запрашивать у пользователя какие-либо данные о пароле / имени пользователя. - person user2437443; 10.05.2014

Я решил эту проблему, создав нового пользователя во время установки, которого я добавляю в группу администраторов. Это позволяет службе записывать данные на локальные и сетевые диски, даже не требуя информации о пароле / имени пользователя во время установки.

person user2437443    schedule 09.05.2014