0

这是一个复杂的(至少对我来说)问题,所以请多多包涵。

我在 VirtualBox 4.2.10 中运行了三个带有各种来宾操作系统(如下所列)的虚拟机,它们都运行 Apache 2.2+ 或 IIS 7.5 Web 服务器,它们指向主机(Windows 8)上的相同网络共享。

来宾操作系统/服务器/PHP 版本:

  1. Windows 7 旗舰版 - IIS 7.5 - PHP 5.3.23
  2. Windows XP Pro - Apache/2.2.24 - PHP/5.2.9
  3. Debian 6.0.7 - Apache/2.2.16 - PHP 5.3.3

所有 3 台服务器(4 台,包括主机)都可以正常访问和显示网页,PHP 脚本也可以正确执行,但有一个主要例外:Apache 和 PHP 都不能写入网络共享中的任何位置。

使用以下命令,通过 fstab 以(假定的)读/写权限安装网络共享:

//dmorton/http /var/www cifs rw,user=dmorton/server,password=******

共享安装得很好,我可以通过 gedit 或终端读取/写入文件,所以我知道共享已正确安装,尽管我希望 fstab 中的代码可以进行一些改造。我通过网络使用连接,而不是使用 VirtualBox 的共享文件夹功能,因为无论我尝试什么,我都无法让 Apache 以这种方式识别共享。

正如我上面提到的,Apache 可以很好地显示网页和执行 PHP 脚本,除非它尝试写入日志文件 (apache) 或调试文件 (PHP)。我不得不重新定位 Apache 日志以便能够读取它们,因为在配置为写入共享时它们甚至没有被写入,就像其他 2 位来宾一样。以下是相关错误日志的摘录:

[Fri Apr 05 08:02:23 2013] [error] [client 192.168.1.100] PHP Warning:  file_put_contents(/var/www/PGO2.1/chatbot/debug/7o13ii3te7a6u2q52hpu1b3m86.mem_trace.txt): failed to open stream: Permission denied in /var/www/PGO2.1/library/error_functions.php on line 333, referer: http://dmorton-deb64/PGO2.1/gui/plain/index.php?say=test&submit=say&bot_id=1&format=html

Fri Apr 05 09:01:25 2013] [error] [client 192.168.1.100] PHP Warning:  file_put_contents(commonWords.dat): failed to open stream: Permission denied in /var/www/tmp/sort_cw.php on line 6, referer: http://dmorton-deb64/tmp/

如您所见,PHP 被拒绝访问文档根目录中至少两个不同位置的文件。我知道这是一个权限问题,我尝试了不同的方法(如下所列)来纠正这个问题,但我显然在这里遗漏了一些东西。对于 *nix 系统,我是一个相对较新的人,所以我希望这很简单。无论如何,这里是我试图“修复”这个的方法:*

  1. 在主机操作系统上创建了一个特殊帐户,所有 VM 都可以使用该帐户以完全权限访问共享
  2. 为“所有人”设置对主机文件夹的“完全控制”权限
  3. 在 Debian 中使用与主机帐户相同的凭据设置一个帐户,并为其授予完全权限
  4. 将 Apache 配置为以 #3 中提到的用户身份运行,并具有“root”组权限
  5. 尝试在 fstab 中使用其他挂载选项以使共享对所有人都可写
  • 请注意,我知道部分或全部这些设置所涉及的安全隐患。一旦我找到了解决问题的方法,我将把它们恢复到更安全的基础上,一次一个。

好的,现在您已经了解了问题的总体要点,我不得不问:

如何纠正上述问题,我在这里遗漏了什么?

4

1 回答 1

2

我做了一些进一步的戳戳和刺激,我偶然发现了答案。为了使 *nix 系统能够对 Windows 共享具有读/写权限,它们必须连接一组特定的凭据(我已经知道),并且所述凭据集不属于一般类别“每个人”(我不知道)。我必须进入文件夹属性的“共享”选项卡下的“高级共享”,然后单击那里的“权限”按钮(不在“安全”下,我已经尝试过,但没有成功)。然后我添加了正确的凭据并将权限设置为完全访问,根据需要点击应用/确定,然后再试一次。中提琴!我的 Debian 和 Ubuntu 服务器现在可以写入正确的文件夹,并且我能够将安全设置恢复为它们所属的方式。

于 2013-04-12T03:28:34.300 回答