iis Windows容器中的容器文件权限

bcs8qyzn  于 2022-11-12  发布在  Windows
关注(0)|答案(3)|浏览(136)

我有一个Windows Docker容器(microsoft/aspnet),它托管了一个简单的Web API。Web API从表单中接受文件,将它们保存在临时文件夹中,进行一些处理,然后返回结果。
当在本地部署时,这可以正常工作,但是当在我的Docker容器中完成时,我在我的临时文件夹(App_Data)上得到一个文件权限错误。
是否有办法授予IIS用户对该文件的访问权限,或者向任何用户开放该文件夹的读/写访问权限?
当前Docker文件如下:

FROM microsoft/aspnet

COPY ./Deploy/ /inetpub/wwwroot

RUN mkdir /inetpub/wwwroot/App_Data

我从Docker图像中获得运行API的错误消息片段:

"InnerException":{"Message":"An error has occurred.","ExceptionMessage":"Access to the path 'C:\\inetpub\\wwwroot\\App_Data\\BodyPart_481b6424-f9a5-4608-894d-406145a48445' is denied.","ExceptionType":"System.UnauthorizedAccessException"

看起来aspnet-docker github上有一个关于这个问题的漏洞。link(https://github.com/Microsoft/aspnet-docker/issues/93)
与此同时,在启动容器后运行cacls App_Data /G IIS_IUSRS:F似乎可以暂时修复该问题。

bweufnob

bweufnob1#

不清楚原因,但是cacls在构建容器时似乎不起作用。切换到使用icacls,并且能够授予文件夹的IIS_USRS权限。
添加到停靠文件的行:
RUN icacls 'C:\inetpub\wwwroot\App_Data' /grant 'IIS_IUSRS:(F)'

mtb9vblg

mtb9vblg2#

我不能发表评论,因为我没有足够的声誉,但如果@Darendal的答案不起作用(对我来说不起作用),那么试试这个语法

RUN icacls C:\inetpub\wwwroot\App_Data /grant "BUILTIN\IIS_IUSRS:(OI)(CI)F" /t
2izufjch

2izufjch3#

我的文档文件没有接受任何其他的答案。下面是一个警告。

FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8
SHELL ["powershell"] 
RUN & ICACLS "'C:\inetpub\wwwroot\App_Data'  /grant 'IIS APPPOOL\DefaultAppPool:(OI)(CI)F' /T"

相关问题