Cifs 在 Ubuntu 11.10 上丢失数据或更改文件权限((12)无法分配内存:文件权限拒绝服务器访问:)

Cifs 在 Ubuntu 11.10 上丢失数据或更改文件权限((12)无法分配内存:文件权限拒绝服务器访问:)

我希望这是正确的地方。我有一台 Ubuntu 11.10 服务器,上面启用了 Apache。Apache 的 doc 根目录位于通过 cifs 从 Windows 计算机获取的共享文件夹中。

直到今天我回到家进行设置之前,在我设置的每个网络上,这一切都很顺利。

我正在使用 Web 浏览器(比如说 Firefox)在 Apache 服务器上查看我的网站,每刷新几次,我都会收到 403 响应,或者 Firebug 中 cif 共享的服务器的某些文件根本没有返回任何数据。

现在,通过排除法,我已经能够确定它是 cifs。我通过将文档根目录复制到 Ubuntu 安装上的本地文件夹并尝试获得相同的行为来得出此结论,但我没有得到相同的结果。

现在我明白通过纯文本很难理解这一点,所以这里有几张图片来描述这个问题。

第一张图片显示了一次刷新后的所有内容,并且一切正常: 一切正常运转的图片

这张图片显示了下一次刷新,正如您所看到的,Firebug 响应说 apache 突然无法访问我的文件,不仅如此,Firebug 还未报告该页面上还缺少图像。我应该提到这些图像实际上来自数据库,因此不确定 cifs 是如何干扰它的,但这些图像适用于网站的本地版本,所以一定是这样。 问题形象

该问题是间歇性的。

现在我确实尝试用 Google 搜索这个问题,但是经过几次尝试后我意识到,我实际上并不太确定该用 Google 搜索什么。

有人能指出我诊断问题的正确方向吗?也许有人以前遇到过这个问题,可以分享他们的解决方案吗?

谢谢,

更新:好的,我在 APache 日志中做了一些搜索,结果如下:

[Thu Jan 19 20:59:03 2012] [error] [client 192.168.153.1] (12)Cannot allocate memory: file permissions deny server access: /server_ws/htdocs/css/960.css, referer: http://stagex.co.uk/stream

我经常看到这个错误,它总是有不同的含义。因此,在出现此问题后,我决定先检查 Linux 中的实际文件权限,然后再进行刷新:

drwxrwxrwx 1 www-data sam      0 2012-01-17 18:33 .
drwxrwxrwx 1 www-data sam   4096 2012-01-17 21:40 ..
-rwxrwxrwx 1 www-data sam  10641 2012-01-17 18:33 960.css
-rwxrwxrwx 1 www-data sam      0 2012-01-20 18:58 c_css.css
-rwxrwxrwx 1 www-data sam 129488 2012-01-17 18:33 main.css
-rwxrwxrwx 1 www-data sam   1086 2012-01-17 18:33 reset.css
drwxrwxrwx 0 www-data sam      0 2012-01-17 18:33 .svn

那里的一切看起来都很好。所以我检查了 Windows,以确保我始终可以访问它。我使用内置协议从 Windows 共享了 server_ws 文件夹,并指定我的 Windows 用户“Sam”为所有者。我已告诉 cifs 像这样挂接到此 Windows:

//192.168.0.2/server_ws/the_stage /media/server_ws cifs username=Sam,password=****,rw,uid=www-data,gid=sam,iocharset=utf8,dir_mode=0777,file_mode=0777 0 0

那里并没有什么特别错误的事情,如果那里有什么可怕的事情,为什么它只会时不时发生。

尽管现在我已经发现 Apache Ima 中的错误,但还是在 Google 上进行了更多的搜索。

如果有人知道什么,请告诉我:)

答案1

我想我找到了。这实际上是一个更常见问题的子集:http://alan.lamielle.net/2009/09/03/windows-7-nonpaged-pool-srv-error-2017。我很久以前就为另一个问题找到了这个解决方案,但从未想过在这里使用它。

在某些安装中,似乎您必须通过设置上述注册表项来告诉 Windows 充当文件服务器。如果您这样做,那么 Windows 似乎总是会分配完成传输所需的资源,即使传输非常密集。

我现在无法让我的服务器重复这个问题:D。

谢谢你,路易斯,谢谢你的帮助,如果我没有再考虑检查 Apache,我就永远也查不出问题的根源。

答案2

我必须冒险猜测一下。我不能确定DocumentRootforstagex.co.uk指向哪个目录。

无论是哪种情况,您都可以等到出现错误并使用 sudo 模拟 www 用户,然后尝试找出哪个文件夹具有错误的权限:

sudo -u www-data -s
cd /path/to/your/docroot

如果失败,cd /cd依次执行每个路径组件,直到收到权限被拒绝的错误。

如果您确实在 上提供服务/media/server_ws,则可能正在/media您脚下更改 上的权限。如果您遇到这种情况,我会将其安装在/srv我认为是正常位置的下面。

答案3

我发现自己一直在思考这个问题及其答案,因为当我们招收新员工时,我们似乎必须重做这一步。因此,我根据以下文件创建了一个注册表文件:接受答案的链接这样我们就可以轻松地做出我想要提出的调整。

您需要打开记事本,然后输入以下内容:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management]
"LargeSystemCache"="1"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters]
"Size"="3"

将文件另存为whatever_you_want.reg并运行它(需要管理员权限,因此您可能必须接受 UAC)。这已在 Win 7 x64 Pro 上进行了测试

希望这可以帮助!

相关内容