我有一台安装了 IIS7.5 的 Windows 2008 R2 服务器。我需要通过 WebDAV 为用户提供对某些目录树的读写访问权限。相同的用户还可以通过其他方式(FTP、SFTP、CIFS 等)访问相同的目录。
我的目的:我不希望有人能够上传/修改已发布文件夹中的 web.config 文件,从而修改 IIS 的行为。如果创建了这样的文件,IIS 应该将其视为任何其他文件。
是否可以将站点的所有设置集中在 applicationHost.config 中或已发布树之外的任何其他文件中,并让 IIS 忽略任何其他 web.config 文件?
谢谢!
答案1
找到相关设置 - 它被称为allowSubDirConfigvirtualDirectoryDefaults
。它既可以在元素中指定(针对所有站点),也可以在文件virtualDirectory
中的元素中指定applicationHost.config
。
例子:
<configuration>
<system.applicationHost>
<sites>
<site name="Default Web Site" id="1" serverAutoStart="true">
<application path="/">
<virtualDirectory path="/" physicalPath="%SystemDrive%\inetpub\wwwroot" />
<virtualDirectory path="/Temp" physicalPath="C:\TempRoot" allowSubDirConfig="false" />
</application>
<applicationDefaults applicationPool="DefaultAppPool" />
<virtualDirectoryDefaults allowSubDirConfig="true" />
</sites>
</system.applicationHost>
</configuration>
web.config
/Temp 虚拟目录下的文件将不会被检查。
还有一些其他方法: http://www.sourceinaction.com/blog/web.config-dependencies-for-multiple-asp.net-web-applications
答案2
请看 Anil Ruia 的回答:http://forums.iis.net/t/1161527.aspx?Disable+creating+web+configs+in+each+folder
如果您转到 applicationhost.config 并锁定所有部分 (overrideModeDefault="Deny"),则 IIS 管理器会将所有 IIS 配置设置写入 applicationhost.config(asp.net 配置设置和根 web.config 文件相同)。请注意,这将完全阻止某人使用 web.config 文件覆盖 IIS 设置 - 他们可能会对此大喊大叫。
答案3
避免用户使用 WebDav 修改 web.config 文件的一个简单方法是使用 WebDav 创作规则。只需在所有其他规则之上创建一条规则,使所有用户对 web.config 文件无任何权限。
更多详细信息:如果您通过 GUI 启用并配置了 WebDav,那么您应该已经知道 [WebDav 创作规则] 是通过 IIS GUI 上的图标访问的。首先,您在站点级别进入该部分以启用 WebDav,然后再次进入 WebDav 文件夹级别的 [WebDav 创作规则] 部分以添加规则以授予用户/组对此文件夹中的 [所有文件] 的访问权限。在输入该规则之前,您添加一个仅适用于 [web.config] 文件的规则 [所有用户],并且您未选中所有权限。因此,该规则位于顶部,并且优先于授予访问权限的规则,因此没有人可以使用 WebDav 来修改 web.config 文件。如果需要,您还可以在创建后修改规则的顺序。
此页面描述了如何为 WebDav 配置站点。我使用了 GUI 方法。如果您按照此方法操作,就会发现该部分的位置很明显:https://www.server-world.info/en/note?os=Windows_Server_2019&p=iis&f=9