Linux Samba 客户端挂载问题深度排查指南

在 Linux 系统下访问 Samba 共享时,挂载失败的原因可能来自不同层面,包括系统支持、用户权限、目录配置以及共享类型。本文将从四个角度系统地分析和解决问题,并给出详细操作示例。以 Ubuntu/Debian 系统为例。

一、挂载失败 :CIFS 系统支持问题

在挂载 CIFS 共享时,常见报错如下:

Password for dell@//10.10.111.13/sambatest: 
mount error: cifs filesystem not supported by the system
mount error(19): No such device
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) and kernel log messages (dmesg)

错误分析

cifs filesystem not supported by the system 表示当前内核缺少 CIFS 文件系统支持,即没有 cifs.ko 模块。

mount error(19): No such device 说明系统无法识别 CIFS 类型挂载请求。

排查方法

确认内核是否支持 CIFS

查看配置:

zgrep CIFS /proc/config.gz

结果解释:

  • CONFIG_CIFS=m → 支持,但作为模块,必须安装模块文件。
  • CONFIG_CIFS=y → 编译进内核,理应能用,但如果仍报错,说明系统很可能是 容器环境
  • 如果没有这行 → 内核不支持 CIFS,只能换内核或重新编译

小结:CIFS 挂载失败可能与系统内核模块缺失相关,此类问题必须先解决系统支持,再考虑权限或共享配置。

二、挂载失败 :权限问题

尝试挂载 Samba 共享:

[root@samba-client /]# mount.cifs -o user=stu,pass=123456 //192.168.221.122/share /stu1
mount error(13): Permission denied

分析与解决

  1. 检查 Samba 服务器上共享目录权限,临时测试可使用:
chmod -R 777 /tmp/samba/share

确保 [share] 模块允许用户访问:

[share]
path = /tmp/samba/share
valid users = stu1
writable = yes
browseable = yes
public = yes
  1. 检查挂载命令是否正确:
mount -t cifs -o user=stu,pass=123456 //192.168.221.129/share /stu1
  1. 确认共享名(Share Name)是否正确,share 是标签名,不是服务器路径。
  2. 使用 pdbedit -L 查看用户是否加入 Samba:
pdbedit -L

实际问题:用户名写错,正确应为 stu1,所以挂载失败。


三、挂载失败 :目录不存在

修正用户名后再次挂载:

[root@samba-client /]# mount.cifs -o user=stu1,pass=123456 //192.168.221.129/share /stu1
mount error(2): No such file or directory

分析与解决

  1. 检查本地挂载点是否存在:
mkdir -p /stu1
  1. 查看服务器共享列表:
smbclient -L //192.168.221.129/

输出示例:

Sharename       Type      Comment
---------       ----      -------
devops          Printer   samba-server test
share           Printer   share
IPC$            IPC       IPC Service

发现 share 类型为 Printer,而挂载磁盘需要类型为 Disk。


四、挂载失败 :共享类型错误

Samba 配置 [share] 原配置:

[share]
path = /tmp/samba/share
valid users = stu1
writable = yes
browseable = yes
public = yes
printable = yes

printable = yes 会将共享标记为打印机类型,导致挂载磁盘失败。解决方法是删除 printable = yes

[share]
path = /tmp/samba/share
valid users = stu1
writable = yes
browseable = yes
public = yes

修改后再次查看共享:

Sharename       Type      Comment
---------       ----      -------
share           Disk      share

类型变为 Disk,符合挂载要求。


五、挂载成功示例及验证

最终挂载命令:

[root@samba-client /]# mount.cifs -o user=stu1,pass=123456 //192.168.221.129/share /stu1

验证挂载:

df -h

输出示例:

Filesystem                   Size  Used Avail Use% Mounted on
//192.168.221.129/share       13G   1.3G   11G  11% /stu1

说明挂载成功,已可正常使用。


六、总结与经验

  1. 系统支持:确保内核支持 CIFS,加载 cifs.ko 模块。
  2. 权限问题:用户存在且正确,配置文件允许访问,目录权限足够。
  3. 目录问题:本地挂载点存在,服务器共享名称正确。
  4. 共享类型:挂载磁盘必须保证共享类型为 Disk,删除 printable = yes

经验提示:使用 smbclient -L //server 可快速查看共享类型和名称;挂载参数需精确无误;配置修改后需重启 Samba 服务。

THE END