![如何启用对 redirection.config 的访问](https://linux22.com/image/688469/%E5%A6%82%E4%BD%95%E5%90%AF%E7%94%A8%E5%AF%B9%20redirection.config%20%E7%9A%84%E8%AE%BF%E9%97%AE.png)
我使用 Windows Server 2012 R2 作为 FTP 服务器。我添加了一个 FTP 站点 MyFtpServer。它使用的应用程序池是 MyFtpServerAppPool。AppPool 使用 ApplicationPoolIdentity 作为标识。如果我从命令行使用 ftp 登录,我会得到以下结果:
530-User cannot log in.
Win32 error: Access is denied.
Error details: Filename: \\?\C:\Windows\system32\inetsrv\config\redirection.config
Error: Cannot read configuration file due to insufficient permissions
当我通过添加具有读取权限的网络服务标识向 \windows\system32\inetsrv\config 文件夹添加权限时.... FTP 登录将继续进行而不会出现错误。
但是我读到的关于使用网络服务的内容是,从安全角度来看,这会倒退两步。我发现的“最佳实践”解决方案是使用 IIS AppPool\MyFtpServerAppPool 标识添加权限。但是如果我这样做,FTP 登录将再次失败并显示相同的错误消息。
所以我的问题是,解决这个问题的最佳方法是什么?显然,我希望 FTP 功能能够正常工作,但我不想恢复到不再被视为最佳实践安全措施的措施。有什么想法吗?
已添加:我正在使用 IIS 管理器用户
答案1
IIS FTP 服务器默认在下运行Network Service
,我认为更改应用程序池标识没有帮助,因为 FTP 服务甚至不使用应用程序池或w3wp.exe
进程。
有些人建议使用特定的账户来运行 FTP 服务,然后将权限分配给该账户。
你在Component Services
mmc 中执行此操作,看到微软博客文章,我尝试过,但我甚至没有看到FTP...
下面的节点COM+ Applications
花了一段时间才发现我必须FTP Extensibility
在服务器管理器中安装 Windows 功能。
之后你应该能看到Microsoft FTP Publishing Service Extensibility Host
节点。打开属性并将身份更改为自定义帐户。
我刚刚编写了一个 PowerShell 脚本,用于启用 FTP、创建站点和用户以及设置 FTP 服务的身份。在配置文件和 ftp 根目录上为新帐户设置 ACL。