Linux 使用windows共享在debian guest apache中拒绝访问

Linux 使用windows共享在debian guest apache中拒绝访问,linux,apache,networking,permissions,virtualbox,Linux,Apache,Networking,Permissions,Virtualbox,这是一个复杂的(至少对我来说)问题,所以请容忍我 我有三台在VirtualBox 4.2.10中运行的具有各种来宾操作系统(如下所列)的虚拟机,它们都运行Apache 2.2+或IIS 7.5 web服务器,指向主机(Windows 8)上的同一网络共享 来宾操作系统/服务器/PHP版本: Windows7Ultimate-IIS7.5-PHP5.3.23 WindowsXPPro-Apache/2.2.24-PHP/5.2.9 Debian 6.0.7-Apache/2.2.16-PHP5.3

这是一个复杂的(至少对我来说)问题,所以请容忍我

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

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

  • Windows7Ultimate-IIS7.5-PHP5.3.23
  • WindowsXPPro-Apache/2.2.24-PHP/5.2.9
  • Debian 6.0.7-Apache/2.2.16-PHP5.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日志以便能够读取它们,因为它们在配置为写入共享时甚至没有被写入,就像其他两个来宾一样。以下是相关错误日志的摘录:

    [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系统,我是一个相对新手,所以我希望它很简单。无论如何,以下是我尝试“修复”的方法:*

  • 在主机操作系统上创建了一个特殊帐户,所有VM都可以使用该帐户以完全权限访问共享
  • 为“所有人”设置主机文件夹的“完全控制”权限
  • 在Debian中使用与主机帐户相同的凭据设置帐户,并授予其完全权限
  • 将Apache配置为以#3中提到的用户身份运行,并具有“root”组权限
  • 尝试在fstab中使用其他装载选项,以使共享对每个人都可写
    • 请注意,我知道这些设置中的一些或全部涉及到安全问题。一旦我找到了解决问题的方法,我会将这些恢复到一个更安全的基础上,一次一个
    好的,既然你已经了解了问题的总体要点,我必须问:


    我怎样才能纠正上述问题?我在这里遗漏了什么?

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

    作为更新,我还添加了另一个Linux虚拟机,这台Ubuntu服务器64位,它也有完全相同的问题,所以在我看来,这是Linux中共享windows文件夹的权限问题,而不是其他问题。恐怕在这一点上,我还没有足够的知识来独自解决这个问题。请注意,我并没有在这里抱怨,但我很惊讶,没有人认为对这个问题发表评论是合适的,不管是自我回答还是不回答。我在3周前发布了这篇文章,有相当多的“阅读”(目前为62篇),我很好奇为什么会这样。{擦伤头部}