我的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共享)的权限。