收起左侧

分享一例SMB故障解决方法(0x80070035,找不到网络路径)

1
回复
231
查看
[ 复制链接 ]

4

主题

3

回帖

0

牛值

江湖小虾

2025-4-20 01:05:40 显示全部楼层 阅读模式

心情崩溃长达1周,论坛求助、**远程技术服务均未能解决,后来自己摸索解决了,过程如下:

之前的BUG反馈帖:https://club.fnnas.com/forum.php ... mp;page=1#pid107164
之前的求助帖:https://club.fnnas.com/forum.php ... mp;page=1#pid106844

局域网中有2台飞牛NAS,故障飞牛的网络名称是fnos210,正常飞牛是fnos220。

一、故障排查
1.现象一,无法访问共享文件
故障飞牛:用windows客户端访问smb时,输入账号密码后,出现了错误代码0x80070035,“找不到网络路径”
正常飞牛:用windows客户端访问smb能正常显示出共享文件夹列表

2.现象二,根据日志查原因
故障飞牛:samba的log表明rpcd_classic模块无法解析符号get_current_unixname。

  1. <div><b>admin@fnos210:</b>~$ tail -n 20 /var/log/samba/log.
  2. /usr/libexec/samba/rpcd_classic: symbol lookup error: /usr/libexec/samba/rpcd_classic: undefined symbol: get_current_unixname, version SMBCONF_0.0.1</div>
复制代码

正常飞牛:log中无此错误

3.现象三,进一步分析原因
故障飞牛:libsmbconf.so 中不存在 get_current_unixname 符号,可能是文件损坏?
正常飞牛:libsmbconf.so 中有 get_current_unixname 符号

  1. <div><b>admin@fnos220:</b>/$ nm -D /lib/x86_64-linux-gnu/libsmbconf.so.0 | grep get_current_unixname
  2. 000000000005a670 T <font color="#8b0000">get_current_unixname</font>@@SMBCONF_0.0.1</div>
复制代码


4.现象四,samba版本相同
二台飞牛运行 dpkg -l | grep samba 的结果相同,因此二台飞牛的库文件可能兼容
猜测解决方法:尝试替换文件,把正常飞牛的库文件拷到故障飞牛中


二、故障解决
<在正常飞牛中操作:>
1.创建备份脚本
  1. sudo nano /tmp/backup_libs_fnos220.sh
复制代码

  1. <div>#!/bin/bash
  2. # 定义备份目录
  3. BACKUP_DIR="/tmp/backup_libs_fnos220"
  4. mkdir -p "$BACKUP_DIR"

  5. # 关键动态库文件列表
  6. LIBS=(
  7.     "/lib/x86_64-linux-gnu/libsmbconf.so.0"
  8.     "/usr/libexec/samba/rpcd_classic"
  9. )

  10. # 备份文件
  11. for LIB in "${LIBS[@]}"; do
  12.     if [ -f "$LIB" ]; then
  13.         cp "$LIB" "$BACKUP_DIR/"
  14.         echo "Backup: $LIB -> $BACKUP_DIR/"
  15.     else
  16.         echo "File not found: $LIB"
  17.     fi
  18. done
  19. echo "Backup completed. Files are stored in: $BACKUP_DIR"</div>
复制代码


2.运行备份脚本
  1. sudo bash /tmp/backup_libs_fnos220.sh
复制代码


3.将备份的文件远程复制到故障飞牛的/tmp中:
  1. rsync -avz -e "ssh -p 22" /tmp/backup_libs_fnos220 admin@192.168.10.210:/tmp/
复制代码


<到故障飞牛中操作:>
4.在目标服务器中备份旧文件,再用拷过来的新文件替换:
  1. sudo nano /tmp/restore_libs_fnos210.sh
复制代码

  1. <div>#!/bin/bash

  2. # 定义备份目录和恢复目录
  3. RESTORE_DIR="/tmp/backup_libs_fnos220"
  4. BACKUP_DIR="/tmp/backup_original_fnos210"
  5. mkdir -p "$BACKUP_DIR"

  6. # 关键动态库文件列表
  7. LIBS=(
  8.     "/lib/x86_64-linux-gnu/libsmbconf.so.0"
  9.     "/usr/libexec/samba/rpcd_classic"
  10. )

  11. # 恢复文件
  12. for LIB in "${LIBS[@]}"; do
  13.     if [ -f "$LIB" ]; then
  14.         # 备份原始文件
  15.         cp "$LIB" "$BACKUP_DIR/"
  16.         echo "Backup original: $LIB -> $BACKUP_DIR/"
  17.     fi

  18.     # 恢复备份文件
  19.     if [ -f "$RESTORE_DIR/$(basename "$LIB")" ]; then
  20.         cp "$RESTORE_DIR/$(basename "$LIB")" "$LIB"
  21.         chmod --reference="$LIB" "$LIB"  # 确保权限一致
  22.         echo "Restored: $RESTORE_DIR/$(basename "$LIB") -> $LIB"
  23.     else
  24.         echo "Restore file not found: $RESTORE_DIR/$(basename "$LIB")"
  25.     fi
  26. done

  27. echo "Restore completed. Original files are backed up in: $BACKUP_DIR"</div>
复制代码


5.运行替换脚本(建议先在web界面关闭smb服务)
  1. sudo bash /tmp/restore_libs_fnos210.sh
复制代码


6.故障得到解决,libsmbconf.so 中出现了 get_current_unixname 符号,共享文件也能正常访问了

收藏
送赞
分享

8

主题

99

回帖

180

牛值

社区共建团

社区共建团荣誉勋章飞牛百度网盘玩家

2025-4-20 17:00:41 显示全部楼层

居然是文件损坏导致的

估计远程技术服务也没想到居然是文件坏了

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则