linux - 使用Windows共享在debian guest apache中拒绝访问

标签 linux apache networking permissions virtualbox

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

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

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

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

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

使用以下命令通过 fstab 以(假定)读/写权限挂载网络共享:

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

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

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

[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 中使用其他挂载选项使共享对所有人都可写
  • Please note that I'm aware of the security implications involved with some or all of these settings. Once I find out how to correct the problem, I'll revert these to a more secure footing, one at a time.

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

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

最佳答案

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

关于linux - 使用Windows共享在debian guest apache中拒绝访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15838797/

相关文章:

linux - 是否有在 nano 的搜索行中粘贴值的快捷方式?

linux - 为什么在调试 vmlinux 时 kgdb 不显示函数符号?

Android避免缓存

javascript - 如何从函数返回 XMLHttpRequest 响应?

linux文本电影,减去一列的数字使用其他列或添加一个特定数字?

php - 在 Apache + PHP + Bash 中让进程 fork 并独立于父进程

php - 通过 PHP 使用 Exchange 管理单元执行 powershell 脚本

apache - 如何更改apache的默认tcp/ip端口

html - 网页需要的文件放在哪里

python - 如何识别内网电脑?