经典ASP-文件移动IIS的权限被拒绝



我的Windows权限有点问题,我有一个脚本(我没有写),它将文件上传到本地临时区域,然后被移动并重命名为UNC共享。

我试过:

创建一个具有域权限的域用户,在"连接为"one_answers"目录安全性-身份验证"中使用该权限,并且在目标源上作为读/写用户。我已经和那个用户一起登录到测试服务器,并验证了这个用户可以写入源位置,它可以。

但我收到错误信息:

Microsoft VBScript运行时错误"800a0046"

许可被拒绝

/Admin/News/insert.asp,第56行

试图执行移动的代码是(尽管这可能与安全问题无关):

    if fileUploaded then
    dim fs,f,savedFileLocation
    set fs=Server.CreateObject("Scripting.FileSystemObject")
    savedFileLocation = server.MapPath("/Files") & "Briefings" & right("00" & day(now()),2) & right("00" & month(now()),2) & year(now()) & " - " & fileName
    if not fs.FileExists(savedFileLocation) then
        Set f=fs.GetFile(pathToFile)
        f.Move(savedFileLocation)
    end if
    set f=nothing
    set fs=nothing
end if

如果有任何建议,我们将不胜感激,我发现IIS的安全权限是一场噩梦!

IIS6支持应用程序池,您可以使应用程序池作为命名用户帐户而不是IUSR运行。如果你手边有一个AD域,那么这可以是一个域帐户,共享很简单。如果你没有使用AD域,那么你仍然可以解决这个问题——只需在两个框上创建一个具有相同用户名和密码的帐户,NTLM就会自动工作。

我已经有一段时间没有接触IIS6了,但我似乎记得IIS6是作为NT AUTHORITY\NETWORK SERVICE开箱即用运行的。如果是这种情况,并且你手头有一个域,你也可以给神奇的domain\MACHINENAME$帐户权限,它也应该可以工作。

尝试在您的站点中打开此UNC文件夹/共享的IIS属性(我猜它设置为虚拟文件夹),并查看您的用户是否具有写入权限。基本上,我宁愿给应用程序池用户写权限,而不是创建新的,但这是你的选择。因为您的网站应用程序池必须在此用户名下运行。

在任何情况下,因为文件传输发生在应用程序池用户下,如果您有集群或负载平衡系统,则需要在每个web服务器上验证该用户对两个文件夹(本地和UNC共享)的权限。

最新更新