Разрешение на каталог совместно используется службой Windows и консольным приложением

Я не уверен, что это подходящее место для такого вопроса (может быть, его следует разместить на SuperUser?), Но я попробую.

У меня есть одно консольное приложение C # и одна служба Windows. Оба делают то же самое, но консольное приложение было создано раньше и сохранено для обратной совместимости. На каждом из них работает служба WCF, методы которой работают с файлами в C: \ ProgramData \ MyApp. Консольное приложение запускается от имени пользователя с ограничениями (не администратора), служба Windows работает как NT AUTHORITY \ NETWORK SERVICE. Когда приложение создает какие-то каталоги / файлы, сервис не может их удалить, и наоборот.

Я бы хотел, чтобы это было закреплено. Мой вопрос: следует ли предоставлять полные разрешения на C: \ ProgramData \ MyApp СЕТЕВОЙ СЛУЖБЕ и текущему пользователю? Или мне следует создать специального пользователя для запуска службы / приложения?


person myszor    schedule 03.08.2012    source источник


Ответы (1)


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

Эта команда выполнит работу:

icacls c:\ProgramData\MyApp /t /grant "NETWORK SERVICE":(OI)(CI)(IO)D

Повторите то же самое для другой учетной записи службы пользователя.

person seva titov    schedule 03.08.2012
comment
Является ли это более безопасным подходом, чем создание пользователя Windows MyAppUser, предоставить ему полные права на каталог c: \ ProgramData \ MyApp и запустить службу / приложение с учетной записью этого пользователя (вместо СЕТЕВОЙ СЛУЖБЫ)? - person myszor; 04.08.2012
comment
Самая безопасная конфигурация для службы - всегда создавать специальную учетную запись пользователя и предоставлять этой учетной записи только необходимые разрешения для работы, но не более этого. Однако вам нужно быть осторожным и не предоставлять больше разрешений, которые им нужны. Например. если вы сделаете свою служебную учетную запись членом группы администраторов, что противоречит назначению специальной учетной записи. Во многих случаях достаточно встроенных учетных записей, таких как LocalService или NetworkService. - person seva titov; 05.08.2012