服务器:RHEL 5.9 / smbd 3.0.33-客户端:各种,尽管都使用当前的mount.cifs(5.2)
我已经解决了这个问题,但是追捕这些错误代码真是一场噩梦,我觉得这需要通用文档。
症状:从一个特定的cifs客户端到linux samba服务器的意外的,间歇性的安装失败。我所有的Linux客户端pam_mount用户在登录时均已登录。随机地,偶尔地,主目录安装在一台计算机上开始失败。登录和挂载继续在所有其他客户端上正常运行。最初,我认为损坏的客户端上发生了异常活动,导致smbd异常运行,但即使使用中断后,间歇性故障仍然存在。
尝试手动安装失败并报告:
Errors from underlying mount program
mount error(12): Cannot allocate memory
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
<debug enable="1"/>
在/etc/security/pam_mount.conf.xml中进行设置,以从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 (e.g. man mount.cifs)`
/var/log/kern.log也报告了此事件:
kernel: [4316790.256149] CIFS VFS: cifs_mount failed w/return code = -12
'回声1>的/ proc / FS / CIFS / cifsFYI' 曲柄向上mount.cifs调试(写入到/ var /日志/调试)。这是好的部分(看起来很熟悉?):
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)毫无意义(手册页无济于事,伙计们)。广泛的互联网搜索显示这是一个常见的错误代码,也确认它没有信息。
是时候检查服务器了!log level = 3
在/etc/samba/smb.conf中为smbd 设置(摘自《使用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
返回2048。很明显。
实际检查smbstatus -S
显示的成千上万个“ IPC $”条目的输出。IPC $上的Samba文档显示,它涉及匿名共享浏览和对“其他资源”的访问。我在/etc/samba/smb.conf中的服务器上设置了主机拒绝:
[IPC$]
hosts deny = 0.0.0.0/0
现在效果很好。好吧,希望这里能在将来某个时候帮助一些可怜的灵魂。
我想本着这个网站的精神,我会问一个问题:smbd为什么不清理IPC $的股份?为什么要为共享的每个用户连接建立一个IPC $,而不是为每个客户端连接建立一个IPC $?您可以从客户端禁用IPC $共享创建吗?有没有办法增加每个共享的最大连接数(不是在这种情况下会有所帮助)?我没有在文档中看到它。