openSUSE:Bugreport Samba
Samba 错误报告和高级调试信息
如果您在使用这些或包含在 SUSE Linux 产品中的软件包时遇到任何问题,请不要责怪 Samba 团队。首先检查 Samba 故障排除页面。如果这没有帮助,请向 Samba Bugzilla 提交错误报告,选择产品 Samba 您的版本,然后选择“组件”Packaging,并将“分配给”设置为 samba-maintainers at suse dot de。或者使用 Novell Bugzilla,并使用相同的地址分配错误。
提供文件作为附件
提供来自/var/log/samba/目录和来自/var/lib/samba的 tdb 文件,以及配置文件/etc/samba/smb.conf。发布'rpm -qi samba'或'rpm -qi samba-<子包>'的输出。我们需要这些信息来重建发生的事情。
如果 winbind 是问题的一部分,请提供 /etc/security/pam_winbind.conf,如果您已在 pam_winbind.conf 中启用调试,则 /var/log/messages 也需要。
关于不同 Samba 组件的更详细描述可以在本节下方找到。
测试守护进程 (winbind, smb, nmb)
1. 停止所有正在运行的 Samba 进程 (winbind, smb, nmb)
2. 删除/var/log/samba/
- 中的所有日志文件。通过这种方法,我们可以确保在日志文件中拥有测试的起始日期。
3. 编辑/etc/samba/smb.conf并在[general]部分中设置以下变量
debug level = 10
debug pid = Yes
max log size = 0
- 配置全局在smb.conf调试级别
smbcontrol <damon_name> debug 10
- 之外,也可以使用
- 在运行时将特定 Samba 守护进程的调试级别提高到 10。
debug = yes
- 在如果 winbind 是场景的一部分,请设置
/etc/security/pam_winbind.conf
4. 再次启动进程 (winbind, smb, nmb)date5. 重现错误并记下您开始任何测试的时间。如果测试时发生问题,请记下时间(使用
在您执行测试的系统上获取与日志文件匹配的时间)。/var/log/samba/将日志文件从和tdb/var/lib/samba/附加到错误报告。如果可能,请删除 tdb 文件并提供干净的文件。因此,最好将它们绑定到一个压缩tar存档。相关的/var/log/messages部分也可能很有趣。
测试 pam_winbind
如果您在使用 pam_winbind 时遇到问题,请在如果 winbind 是场景的一部分,请设置中启用调试。将以下行添加到文件
debug = yes
winbind pam 模块会将所有内容记录到/var/log/messages.
测试客户端工具 (net, smbclient 等)
客户端工具不会将日志记录到/var/log/samba/中的日志文件,这些工具会将日志记录到 stderr,您必须通过命令行启用调试输出。如果您想要使用net命令加入域,您必须执行以下操作
net -d 10 ads join -U Administrator%secret
如果您在使用客户端工具时遇到问题,提供网络跟踪会有所帮助(请参阅下文)。
跟踪
网络跟踪
使用 tcpdump 创建网络跟踪时,请确保使用此命令
tcpdump -i INTERFACE -s 0 -w /tmp/tracefile
将 INTERFACE 替换为您的网络接口。此外,请解释网络跟踪中涉及的机器的角色(谁是客户端,谁是服务器,它们的 IP 地址是什么等)。任何与硬件相关的信息通常没有意义。
回溯
如果您在 /var/log/messages 中看到 panic 消息,可以通过执行以下说明生成 GNU 调试器 (gdb) 回溯
- 安装 gdb
- 安装 samba-debuginfo 和 samba-doc 包
- 使回溯脚本可执行:chmod +x /usr/share/doc/packages/samba/examples/scripts/debugging/linux/backtrace
- 将此行添加到 Samba 配置文件 /etc/samba/smb.conf 的全局部分
panic action = /usr/share/doc/packages/samba/examples/scripts/debugging/linux/backtrace %d
当您重现产生 panic 的情况时,回溯将被写入/var/log/samba目录。
读取 Samba 日志
以下 grep 命令很有用
grep -R -n -B2 -i "failed" $@ grep -R -n -B2 "timeout [0-9]* seconds" $@
调试 cifs vfs 客户端
通常使用 cifs vfs 内核模块 cifs.ko 来挂载 Windows 和 Samba 服务器,并从这些挂载点运行要求高的应用程序。
如果您怀疑 cifs vfs 客户端存在问题,请提供以下调试信息
- `cat /proc/fs/cifs/DebugData' 和 `uname -r' 命令的输出
- cifs 数据包的网络捕获
#tcpdump -s0 -w cifs-debug.cap 'port 137 || 138 || 139 || 445'
- 如果您在挂载/卸载或执行文件操作期间遇到系统冻结,请附加 `sysrq + t' 输出。为此,您需要启用 Magic Sysrq 键。请参阅 https://en.opensuse.net.cn/Bugs/Kernel#Using_sysrq 以启用 sysrq 并使用它。
- dmesg 或 syslog (/var/log/messages) 将显示某些严重错误,但启用额外的 cifs 调试标志以增加调试输出。您可以通过执行以下操作来执行此操作
#dmesg -c /* this clears kernel ring buffer */ #echo 3 > /proc/fs/cifs/cifsFYI /* Enables additional debugging */ <do the operation> #echo 0 > /proc/fs/cifs/cifsFYI /* Disables additional debugging */ #dmesg > cifs-debug.txt Attach cifs-debug.txt
- 如果您遇到挂载/卸载问题,请提供以下信息
- Output of `mount' command and/or `cat /etc/mtab' - mount -vV (gives version) - If mount fails, attach strace output taken during mount operation
另请参阅 LinuxCIFS 故障排除
对 cifs-utils 和 samba 包的贡献
我们欢迎对 cifs-utils 和 samba 包的贡献。对包的更改必须通过 Open Build Service (OBS) 提交。
提交更改时需要注意的事项
- 请坚持 cifs-utils/samba changelog 消息格式,因为这对于向我们的用户提供一致的更改日志非常重要。推荐的方法是使用“osc vc”编辑 cifs-utils.changes 文件。消息通常采用以下形式
- Short changelog; (bnc#<bugid>) or (bso#<bugid>).
例如:
- Fix processing of open modes in POSIX open; (bnc#530683).
有关更多示例,请查看 cifs-utils.changes 或 samba.changes 文件。