Linux samba服务器:cifs_mount失败w /返回码= -12

前端之家收集整理的这篇文章主要介绍了Linux samba服务器:cifs_mount失败w /返回码= -12前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
服务器:RHEL 5.9 / smbd 3.0.33
– 客户端:各种各样,但都使用当前的mount.cifs(5.2)

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

症状:从一个特定的cifs客户端到Linux samba服务器的不可预测的,间歇性的挂载失败.我的所有Linux客户端都在登录时pam_mount用户家园.随机地,偶尔地,家用dir坐骑在一台机器上开始失败.登录和挂载继续在所有其他客户端上完美运行.最初我认为破碎的客户端上的一个不寻常的活动导致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

‘echo 1> / proc / fs / cifs / cifsFYI’启动mount.cifs debug(写入/ 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家伙).广泛的互联网搜索显示这是一个常见的错误代码,也证实它没有信息.

是时候检查服务器了!在/etc/samba/smb.conf中为smbd设置日志级别= 3(来自使用Samba书:“3级以上的级别供开发人员使用,并转储大量的神秘信息.”lol!).这是相关的一行:

[2013/02/08 10:18:03,3] smbd / error.c:error_packet_set(106)
smbd / reply.c上的错误包(514)cmd = 117(SMBtconX)NT_STATUS_INSUFF_SERVER_RESOURCES

差不多……从smb mailing list archive开始,我发现有人报告了一个类似的问题,被确定为个人smb连接的固定份额限制.列出服务器上的开放共享:

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

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

[IPC$]
hosts deny = 0.0.0.0/0

现在很棒.好的,希望这里的某些东西可以在将来的某个时间帮助一些可怜的灵魂

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

解决方法

这是一个老人,但考虑到它没有答案,我正在研究IPC $和Samba,我会为了文档而试一试.

Why would smbd not clean up IPC$shares?

如上面对您的问题的评论中所述,该服务用于服务器之间的远程管理和通信,特别是在Samba中,它用于某些浏览和tcp / ip目的.除非您出于某种原因需要它或某些东西不起作用,否则禁用它是安全的. [1]

Why establish one IPC$per user connection to a share rather than one
per client connection?

因为用户可以拥有多个客户端连接.

Can you disable IPC$share creation from the client side?

是的,不是.它并没有真正禁用IPC $共享的创建,但您可以禁止从Windows客户端访问它.[2]

对于Windows Vista,Windows 7,Windows 8和Windows 10,您可以执行以下注册表编辑:

>单击“开始”,在“搜索”框中键入“regedit”,然后单击搜索结果中的“regedit.exe”.将出现“用户帐户控制”对话框.
>对UAC提示符说“是”,并且应该打开注册表编辑器.
>打开HKEY_LOCAL_MACHINE分支.
>打开SYSTEM分支.
>打开CurrentControlSet分支.
>打开“服务”分支.
>打开LanmanServer分支.
>选择“参数”分支.
>选择编辑,新建,“DWORD(32位)值”
>键入“AutoShareWks”,然后按Enter键. (保留默认值为0.)
>使用命令提示符(DOS或终端)重新启动或重新启动服务:“net stop server”,然后是“net start server”.

Is there a way to increase the max # connections per share (not that
this would have helped in this case)? I didn’t see it in the docs.

是[3].刚刚输入的份额下方:

[share]
   max connections = ##

其中XX是连接数.

资料来源:

> [1] https://www.samba.org/samba/docs/old/Samba3-HOWTO/securing-samba.html
> [2] https://www.petri.com/disable_administrative_shares
> [2] https://www.weavweb.net/2015/08/27/disabling-hidden-shares-in-windows-10-windows-vista-windows-7-and-windows-8-1/
> [2] https://support.microsoft.com/en-us/help/954422/how-to-remove-administrative-shares-in-windows-server-2008
> [3] https://www.samba.org/samba/docs/using_samba/ch09.html

猜你在找的Linux相关文章