Linux samba服务器:cifs_mount失败w / return code = -12

服务器:RHEL 5.9 / smbd 3.0.33 – 客户端:各种,虽然都使用当前的mount.cifs(5.2)

我已经解决了这个问题,但是捕捉这些错误代码真是一场噩梦,我觉得它需要通用的文档。

症状 :从一个特定的cifs客户端到linux samba服务器发生无法预知的间歇性挂载故障。 我所有的Linux客户端在login时pam_mount用户家园。 随机地,并且零星地在台机器上,家里的dir坐骑开始失败。 login和登上继续完美地在所有其他客户端上运行。 最初我以为破损的客户端上的一个不寻常的活动造成smbd怪胎,但即使使用停止后,间歇性故障仍然徘徊。

试图手动挂载失败并报告:

Errors from underlying mount program mount error(12): Cannot allocate memory Refer to the mount.cifs(8) manual page (eg man mount.cifs) 

在/etc/security/pam_mount.conf.xml中设置<debug enable="1"/>以从pam_mount获取更多信息:

 command: 'mount' '-t' 'cifs' '//my_server/watdo' '/home/watdo' '-o' 'user=watdo,uid=666,gid=666' pam_mount(misc.c:38): set_myuid<pre>: (ruid/rgid=0/0, e=0/0) pam_mount(misc.c:38): set_myuid<post>: (ruid/rgid=0/0, e=0/0) pam_mount(mount.c:64): Errors from underlying mount program: pam_mount(mount.c:68): mount error(12): Cannot allocate memory pam_mount(mount.c:68): Refer to the mount.cifs(8) manual page (eg man mount.cifs)` 

/var/log/kern.log也报告了这个事件:

 kernel: [4316790.256149] CIFS VFS: cifs_mount failed w/return code = -12 

'echo 1> / proc / fs / cifs / cifsFYI'将mount.cifsdebugging(写入/ var / log / debug)。 这是好的部分(看起来很熟悉?):

 CIFS Session Established successfully For smb_command 117 Sending smb: total_len 88 cifs_sync_mid_result: cmd=117 mid=54307 state=4 Mapping smb error code 0xc0000205 to POSIX err -12 

在这一点上,客户端没有其他信息可用。 cifs挂载请求熄灭,客户端立即死亡。 mount.cifs错误(12)是相当无信息(手册页没有帮助,thx家伙)。 广泛的互联网search显示这是一个常见的错误代码,也证实它是无用的。

时间去检查服务器! 在/etc/samba/smb.conf中设置smbd的log level = 3 (使用Samba书籍:“3级以上级别供开发人员使用,并转储大量的神秘信息”)。 这是相关的行:

[2013/02/08 10:18:03, 3] smbd/error.c:error_packet_set(106) error packet at smbd/reply.c(514) cmd=117 (SMBtconX) NT_STATUS_INSUFF_SERVER_RESOURCES

几乎在那里…从smb邮件列表存档我发现有人报告了一种类似的问题,被确定为个人smb连接的挂钩股份限制。 在服务器上列出打开的共享:

smbstatus -S | grep <serverIP> | wc -l smbstatus -S | grep <serverIP> | wc -l返回2048 。 非常显眼。

实际上检查smbstatus -S的输出显示了数千个 “IPC $”条目。 IPC $上的Samba文档显示它涉及匿名共享浏览和访问“一些其他资源”。 我在/etc/samba/smb.conf的服务器上设置主机拒绝:

 [IPC$] hosts deny = 0.0.0.0/0 

现在很好用。 好的,希望这里的东西能在未来的某个时候帮助一些可怜的人。

我想在网站的精神,我会问一个问题:为什么smbd不清理IPC $股票? 为什么build立一个IPC $每个用户连接到共享而不是每个客户端连接? 你能禁用客户端的IPC $共享创build吗? 有没有办法增加每股最大连接数(这不是在这种情况下会有所帮助)? 我没有在文档中看到它。