【问题标题】:How to set users permissions with IIS7 to access network drive directory如何使用 IIS7 设置用户访问网络驱动器目录的权限
【发布时间】:2016-05-28 18:06:21
【问题描述】:

首先,这个问题是我之前的问题here 的延伸。 而我的目标还是一样的。我在网络驱动器(驱动器 1)上有 IIS7 服务器(我在其中运行一些 PHP),当我尝试访问另一个网络驱动器(驱动器 2)时,需要使用 pdftotext.exe 访问 PDF 文件。

在驱动器 1 上,当存储了我需要访问的所有文件时,驱动器 2 上的目录 (tarDir) 上还有一个虚拟/链接目录 (virDir)。

当我自己运行 pdftotext.exe 时,一切都像魅力一样工作,在驱动器 1 上创建了带有 pdfcontent 的输出文件,每个人都活得快乐直到死。但是,当我尝试执行 PHP 脚本时,该脚本存储在 virDir 的驱动器 1 中,通过 exec 命令运行 pdftotext.exe,它返回 1 并且没有创建文件。

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

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

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

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

谁能看到我做错了什么?

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

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 运行的,但是当我在驱动器 1 virDir 中运行它时,它返回 1。所以可能是关于在 shell 中执行命令的权限问题......我会提出任何提示。 ..

【问题讨论】:

    标签: php permissions iis-7 file-permissions user-permissions


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      使用权限为“Everyone”,这样就可以毫无问题地访问该目录。

      步骤:

      1. 右键单击目录文件夹并选择属性
      2. 在“安全”选项卡下单击“编辑”按钮
      3. 现在点击添加按钮
      4. 在字段中指定“所有人”:输入要选择的对象名称并单击检查名称以识别它。
      5. 完全控制并应用

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-09-16
        • 1970-01-01
        • 2018-11-22
        • 2013-12-07
        • 1970-01-01
        • 1970-01-01
        • 2015-04-14
        相关资源
        最近更新 更多