IIS7如何设置用户访问网络驱动器目录的权限

How to set users permissions with IIS7 to access network drive directory

第一次提到,这个问题是对我之前的问题 的扩展。 我的目标还是一样的。我在网络驱动器(驱动器 1)上有 IIS7 服务器(我 运行 宁一些 PHP),当我尝试访问另一个网络驱动器(驱动器 2)时,需要使用 [= 访问 PDF 文件33=]pdftotext.exe.

在驱动器 1 上,当我需要访问的所有文件都已存储时,我在驱动器 2 上的目录 (tarDir) 上也有一个 virtual/link 目录 (virDir)。

当我 运行 pdftotext.exe 一个人工作时,一切都很顺利,在驱动器 1 上创建了带有 pdf 内容的输出文件,每个人都快乐地生活到死。但是当我尝试执行 PHP 脚本时,存储在 virDir 的驱动器 1 中,其中 运行s pdftotext.exe 通过 exec 命令,它 returns 1 并且没有创建文件。

在我的最后一个问题中,我发现这可能是权限问题,但我对如何设置它们有点困惑。 IIS7 有一些内部用户,如 IUSR 和 IIS_IUSRS,当我在 php 中调用 get_current_user(); 时,它设置为 testUser。

那么我需要为两个目录(virDir 和 tarDir)设置哪些权限以便服务器可以访问它们?

我试过 testUser 已设置修改、读取执行、列出文件夹内容、读取、写入 tarDir(驱动器 2)权限,并且 IUSR、testUser 和 II_IUSRS 具有读取执行、列出文件夹内容, tarDir(驱动器 1)的读取、写入权限。

当我尝试访问 "normal" 文件时,如 txt、pptx 等,我可以毫无问题地阅读它们(我使用 php 库),但是当我尝试使用 pdftotext.exe 它失败了。

有人能看出我做错了什么吗?

编辑: 所以我做了一些其他测试,当我 运行 这个命令时(我很好奇谁是 运行ning 命令行)

echo "<br> who am i in command line? <br>";
$out = array();
exec('cmd /c whoami 2>&1',$out,$exitcode);
echo "<br />EXEC: ( exitcode : $exitcode )";
echo "<hr /><pre>";
print_r($out);
echo "</pre>";

在驱动器 1 上运行它显示命令行由 testUser 运行ned,但是当我 运行 它在驱动器 1 virDir 中时,它 returns 1. 所以可能有问题关于在 shell 中执行命令的权限...我会预先了解任何提示...

所以问题似乎不在于权限(我将两个目录的权限都设置为 testUser,但仍然出现相同的错误),但是当我将 pdftotext.exe 移动到虚拟目录时,现在它看起来可以正常工作。但我很好奇为什么...

使用 "Everyone" 的权限,以便可以毫无问题地访问该目录。

步骤:

  1. 右键单击目录文件夹和 select 属性
  2. 在“安全”选项卡下,单击“编辑”按钮
  3. 现在点击添加按钮
  4. 在字段中指定"Everyone":将对象名称输入select,然后单击检查名称以识别它。
  5. 授予完全控制权并应用

最近遇到了同样的问题,上面的步骤解决了