我正在使用在IIS 7.0上运行的ASP classic(使用JScript)编写存储库,并且在移动文件时我遇到了一些许可问题。我必须遵循通用函数,它总是给我一个权限被拒绝的错误。
function moveFile(source, target){
fs = new ActiveXObject("Scripting.FileSystemObject");
newloc = target + "\\" + source.name;
debug("Copying file: " + source.path + " to " + newloc);
fs.copyFile(source.path, Server.MapPath( "repository/" ), true);
}
当我调用源source.path
为D:\Inetpub_EXT\wwwroot\builder\repo\dump\alicia.docx
且目标为D:\Inetpub_EXT\wwwroot\builder\repo\repository
的函数时,我得到以下输出:
Treating dumpfile: alicia
Copying file: D:\Inetpub_EXT\builder\repo\dump\alicia.docx to
D:\Inetpub_EXT\wwwroot\builder\repo\repository
Microsoft JScript runtime error '800a0046'
Permission denied
我已经验证了文件夹和文件都存在,并且我完全控制了构建器中的IIS_WPG,IUSR,Authenticated User,System和Administrators。
感谢您的帮助。
答案 0 :(得分:1)
仔细检查您的权限。小心假设。
例如,您可能假设如果IIS用户对builder
目录具有权限,则它具有对所有子目录的权限。这不是一个好的假设。
如果在builder
目录上设置ACL以授予IIS权限,则在创建子目录后,这些子目录将不会自动继承您稍后应用于builder
的权限。
您可以从命令行使用icacls.exe来查看权限:
%windir\system32\icacls.exe d:\inetpub\wwwroot\builder\foo\bar