проблема безопасности IIS7.5 / IIS APPPOOL \ пользователь не авторизован, но имеет полный контроль? - PullRequest
3 голосов
/ 06 октября 2011

Кажется, у меня странная проблема с безопасностью:

У меня есть веб-сайт со следующими папками:

  • Inetpub \ Wwwroot
  • Inetpub \ Wwwroot \ readyfordownload

Пользователь IIS APPPOOL \ Classic имеет полный доступ к этой папке 'readyfordownload'.

Теперь у меня есть консольное приложение, которое создает zip-файл в папке readyfordownload. Это сделано из библиотеки классов #. Как ни странно, IIS APPOOL не может получить доступ к этому файлу, хотя он имеет полный контроль над папкой. Кроме того, classlib сначала создает файл xlsx, который позже добавляется в zip. Пользователь APPPOOL имеет доступ к файлу xlsx.

Если я запускаю ту же функцию в библиотеке классов C # из кода, размещенного на веб-сайте, создается тот же zip-файл, и пользователь IIS APPPOOL МОЖЕТ получить доступ к файлу ....

Есть идеи?

zip создается так (не фактический код, но тот же) http://dotnetzip.codeplex.com/

  using (ZipFile zip = new ZipFile())
 {
     // add this map file into the "images" directory in the zip archive
             zip.AddFile("test.xlsx");
     zip.Save("MyZipFile.zip");

}

ОС - веб-сервер Windows 2008 R2 Библиотека ZIP является Dotnetzip (Ionic)

Обновление: меня больше всего интересует, почему ZIP-файл не получает прав, а файл xlsx - ....

Ответы [ 4 ]

5 голосов
/ 14 октября 2011

Вы пытались установить FileAccessSecurity явно?Возможно, файлы не наследуют ACL из каталога.

2 голосов
/ 20 октября 2011

пользователь apppool может получить доступ к файлу xlsx, потому что ваша консоль создает его непосредственно в папке readyfordownload.

С другой стороны, zip-файл сначала создается во временной папке, а затем копируется в вашу папку. Это означает, что права доступа к файлу неправильно установлены для файла.

  1. Убедитесь, что пользователи IIS_IUSR и DefaultAppPool имеют доступ к вашему wwwroot.

  2. Как предложил Скоттм, измените код консоли, чтобы дать разрешения пользователям IUSR и DefaultAppPool на zip-файл. Ваш код должен выглядеть следующим образом:

        using (ZipFile zip = new ZipFile())
        {
            // add this map file into the "images" directory in the zip archive
            zip.AddFile("test.xlsx");
            zip.Save("MyZipFile.zip");
    
            var accessControl = File.GetAccessControl("MyZipFile.zip");
    
            var fileSystemAccessRule = new FileSystemAccessRule(
                                        @"BUILTIN\IIS_IUSRS",
                                        FileSystemRights.Read | FileSystemRights.ReadAndExecute,
                                        AccessControlType.Allow);
    
            var fileSystemAccessRule2 = new FileSystemAccessRule(
                                        @"IIS AppPool\DefaultAppPool",
                                        FileSystemRights.Read | FileSystemRights.ReadAndExecute,
                                        AccessControlType.Allow);
    
            accessControl.AddAccessRule(fileSystemAccessRule);
            accessControl.AddAccessRule(fileSystemAccessRule2);
    
            File.SetAccessControl(path, accessControl);
        }
    
0 голосов
/ 19 октября 2011

Сконфигурируйте безопасность папки, используя «страницу свойств расширенной настройки безопасности».(Выберите свойства -> безопасность).Также обратите внимание, что пул приложений может выдавать себя за пользователя, поэтому приложение может не обслуживать запрос с идентификатором пула приложений.По умолчанию олицетворение может не работать.Вы должны установить это явно в веб-конфигурации.Например, <identity impersonate="true" /> или <identity impersonate="true" userName="domain\user" password="password" />

Шриванта Шри Аравинда

0 голосов
/ 14 октября 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...