2010-06-23 3 views
5

Должен ли я давать «модифицировать» разрешения «всем» или «пользователям» или «аутсайсерам», если в UAC я хочу сделать папки данных и файлы доступными для чтения для пользователей, не являющихся администраторами программы?Inno Setup и разрешения для не-админов: все, пользователи или автоответчики?

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

Детали реализации для InnoSetup следовать:

Использование InnoSetup, я установить EXE в стандартной программе Files подпапка и вложенной данных в нем, как это:

C: \ Program Files \ My Prog \ Prog.exe
C: \ Program Files \ My Prog \ Data \ mydata.dat

Теперь, чтобы сделать так, чтобы mydata.dat могут быть изменены Prog.exe даже если Prog.exe будет запущен пользователи, не являющиеся администраторами, я предоставляю «модифицировать» разрешения для подпапки «Данные» с этой строкой:

[Dirs] 
Name: "{app}\Data"; Permissions: everyone-modify; 
;This is the question: should I use users or authusers instead of everyone? 

[Files] 
Source: "MyProg.exe"; DestDir: "{app}"; Flags: replacesameversion; 
Source: "MyData.dat"; DestDir: "{app}\Data"; Flags: replacesameversion; 

Этот вопрос похож на 2686918, но я не нашел достаточно информации о типах разрешений, отсюда этот новый. Я уточню этот вопрос, прояснив этот вопрос.

InnoSetup, в частности, определяет следующие группы:

  • админов Встроенный в группе Администраторы
  • authusers Заверенные Пользователи группы системы
  • все Все группы
  • PowerUsers Встроенная Опытные пользователи группы
  • Локальный пользователь системы
  • пользователей Встроенная группа пользователей

Какой из них является ближайшим к "любому пользователю, который сидит на машине, администратору, не-администратору или что-то еще, но никто, кто обращается к машине из сетей"?

ответ

3

Вы идете не так! Не храните данные приложения под %PROGRAMFILES%! Используйте каталог, который предназначен для этого: CSIDL_APPDATA

Проконсультируйтесь с Microsoft, если вы хотите получить более подробную информацию о security identifiers.

+0

Спасибо. Я делал это раньше, и в некоторых случаях моя прога не имела доступа к некоторым из этих папок. Следовательно, идея использования подпапки только для данных в ProgramFiles и предоставления разрешений на изменение. (разрешение на изменение вложенной папки данных, а не на папку с установленным exe), и, похоже, она работает до сих пор ... И даже если я использую ProgramData, мне все равно нужно установить Разрешения для конкретной подпапки, которую я использую, поэтому Я все еще пытаюсь понять, следует ли использовать всех, пользователей или аутсайдеров, или что еще ... – MarcoB

+0

См. Мое правление о «идентификаторах безопасности». – splash

+0

Спасибо, возможно, вы можете дать нам еще один указатель ... Можете ли вы любезно увидеть мое правление в списке SID от InnoSetup и порекомендовать, кто из них закрывается для «всех, кто сидит за компьютером, а никто больше» ... спасибо ! – MarcoB