Предоставьте DefaultAppPool разрешение на запись в папки в wwwroot в EBS AWS
Я пытался дать пользователю IIS APPPOOL\DefaultAppPool права на запись в две папки в папке wwwroot, используя.ebextensions container_commands.
Есть два сценария, которые мне нужно рассмотреть:
- Быть в состоянии предоставить пользователю DefaultAppPool права на запись при публикации в новой среде EBS, где папка wwwroot не содержит моего решения при запуске.ebextensions.
- Возможность повторной публикации в существующей среде EBS и сохранение разрешений на запись DefaultAppPool, где папка wwwroot содержит мое решение при запуске.ebextensions.
Я был в состоянии выполнить последнее, но не первое. Первый отказывает, потому что я указываю путь к папкам в wwwroot, чьи разрешения я хочу изменить, но решение еще не развернуто на wwwroot, что приводит к сообщению об ошибке: "Система не может найти указанный файл".
Я попробовал другой подход, где я даю DefaultAppPool права на запись для всей папки wwwroot, надеясь, что при извлечении проекта вновь добавленные папки наследуют разрешения от wwwroot. Когда я делаю это и записываю в файл выходные данные команды icacls, я могу убедиться, что разрешения на запись действительно добавлены для wwwroot. Несмотря на возможность проверки того, что разрешения на запись добавляются при запуске.ebextensions, они каким-то образом возвращаются в исходное состояние (только чтение) позже в процессе развертывания, вероятно, с помощью:
c:\Program Files\Amazon\ElasticBeanstalk\Tools\Deploy.exe
Это файл.config, который я использовал для проверки изменения разрешений:
container_commands:
00_dir:
command: dir c:\inetpub\wwwroot >> c:\cfn\perms.log 2>&1
waitAfterCompletion: 0
01_what_perms:
command: icacls.exe c:\\inetpub\\wwwroot >> c:\\cfn\\perms.log 2>&1
waitAfterCompletion: 0
02_changeperm:
command: icacls.exe c:\\inetpub\\wwwroot /grant "IIS AppPool\DefaultAppPool":(OI)(CI)W >> c:\\cfn\\perms.log 2>&1
waitAfterCompletion: 0
03_what_perms:
command: icacls.exe c:\\inetpub\\wwwroot >> c:\\cfn\\perms.log 2>&1
waitAfterCompletion: 0
04_dir:
command: dir c:\inetpub\wwwroot >> c:\cfn\perms.log 2>&1
waitAfterCompletion: 0
Таким образом я спрашиваю:
Есть ли способ предоставить пользователю DefaultAppPool права на запись в эти две папки, который работает как при публикации в новой среде EBS, так и при повторной публикации в существующей?
Есть ли способ выполнить команды после того, как приложение было развернуто на wwwroot, но не раньше, чем делают container_commands?
Когда я просматриваю логи из моих.ebextensions.config файлов, я вижу, что они запускаются дважды, это нормально?