![Cifs 在 Ubuntu 11.10 上丢失数据或更改文件权限((12)无法分配内存:文件权限拒绝服务器访问:)](https://linux22.com/image/573085/Cifs%20%E5%9C%A8%20Ubuntu%2011.10%20%E4%B8%8A%E4%B8%A2%E5%A4%B1%E6%95%B0%E6%8D%AE%E6%88%96%E6%9B%B4%E6%94%B9%E6%96%87%E4%BB%B6%E6%9D%83%E9%99%90%EF%BC%88%EF%BC%8812%EF%BC%89%E6%97%A0%E6%B3%95%E5%88%86%E9%85%8D%E5%86%85%E5%AD%98%EF%BC%9A%E6%96%87%E4%BB%B6%E6%9D%83%E9%99%90%E6%8B%92%E7%BB%9D%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%AE%BF%E9%97%AE%EF%BC%9A%EF%BC%89.png)
我希望这是正确的地方。我有一台 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
我必须冒险猜测一下。我不能确定DocumentRoot
forstagex.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 上进行了测试
希望这可以帮助!