准备工作:检查 Samba 客户端工具
在开始之前,请确保你的 Linux 系统已经安装了 Samba 客户端软件包,大多数现代 Linux 发行版默认会安装,如果没有,可以按照以下方式安装:

对于 Debian / Ubuntu / Mint:
sudo apt update sudo apt install smbclient cifs-utils
smbclient: 提供命令行工具,类似于 FTP 客户端。cifs-utils: 提供mount.cifs工具,用于将 Samba 共享文件夹挂载到本地文件系统。
对于 RHEL / CentOS / Fedora:
sudo dnf install samba-client samba-common cifs-utils
samba-client: 包含smbclient等命令行工具。cifs-utils: 同样提供mount.cifs工具。
对于 Arch Linux:
sudo pacman -S smbclient
cifs-utils 通常作为依赖被自动安装。
方法一:使用命令行工具 smbclient (推荐用于快速浏览和传输)
smbclient 是一个非常强大的命令行工具,可以让你像使用 FTP 一样与 Samba 服务器交互。
基本用法
smbclient //服务器IP/共享名 -U 用户名
//服务器IP/共享名: 替换为你的 Samba 服务器的 IP 地址(如168.1.100)和共享文件夹的名称(如shared_files)。-U 用户名: 指定用于登录的用户名,如果是匿名访问,可以省略-U参数,或使用-U anonymous。
示例
匿名访问(如果服务器允许):
smbclient //192.168.1.100/public
进入交互式命令行后,可以使用 help 查看所有可用命令。

使用指定用户名访问:
smbclient //192.168.1.100/shared -U myuser
系统会提示你输入 myuser 的密码。
常用 smbclient 命令
进入 smbclient 交互界面后,你可以使用以下命令:
ls: 列出当前目录的文件。cd 目录名: 切换到指定目录。get 文件名: 下载一个文件到当前 Linux 目录。put 本地文件名: 上传一个本地文件到服务器。mget 文件名模式: 批量下载文件(mget *.txt)。mput 本地文件模式: 批量上传文件。mkdir 目录名: 创建新目录。rm 文件名: 删除文件。exit或quit: 退出smbclient。
方法二:挂载共享目录到本地文件系统 (最常用)
这种方法可以将远程的 Samba 共享“映射”为一个本地目录,之后你就可以像操作普通文件夹一样操作它,非常方便。

手动挂载(临时挂载,重启后失效)
-
创建一个本地挂载点:
sudo mkdir /mnt/samba_share
-
执行挂载命令:
sudo mount -t cifs //服务器IP/共享名 /mnt/samba_share -o username=你的用户名,password=你的密码
-t cifs: 指定文件系统类型为 CIFS(Samba 使用的协议)。-o username=...,password=...: 提供认证信息。- 注意:直接在命令行中明文写密码不安全,更推荐的方法是使用凭证文件。
-
使用凭证文件(推荐的安全方式): 创建一个文本文件来存储用户名和密码:
sudo nano /etc/samba_credentials.txt
在文件中输入以下内容(注意不要有额外的空格):
username=你的用户名 password=你的密码 domain=你的工作组(如果需要,WORKGROUP)设置文件权限,确保只有 root 用户可以读取:
sudo chmod 600 /etc/samba_credentials.txt
然后使用这个文件进行挂载:
sudo mount -t cifs //服务器IP/共享名 /mnt/samba_share -o credentials=/etc/samba_credentials.txt
-
验证挂载:
df -h
你应该能看到新的挂载点,或者直接进入
/mnt/samba_share目录查看文件。 -
卸载挂载点:
sudo umount /mnt/samba_share
开机自动挂载(永久挂载)
编辑 /etc/fstab 文件,让系统在启动时自动挂载共享目录。
sudo nano /etc/fstab
在文件末尾添加以下行(同样推荐使用凭证文件):
//服务器IP/共享名 /mnt/samba_share cifs credentials=/etc/samba_credentials.txt,iocharset=utf8,vers=3.0,_netdev 0 0
credentials=/...: 指向凭证文件。iocharset=utf8: 确保正确显示中文等非英文字符。vers=3.0: 指定 SMB 协议版本,根据服务器支持情况调整(如1,0),如果遇到连接问题,尝试更换此版本。_netdev: 非常重要,告诉系统这是一个网络设备,需要在网络启动之后再挂载,避免启动卡死。
保存文件后,你可以使用 mount -a 命令来测试 fstab 的配置是否正确:
sudo mount -a
如果没有报错,说明配置成功,重启后也会自动挂载。
方法三:使用图形界面文件管理器 (最简单)
如果你使用的是带有桌面环境的 Linux(如 Ubuntu, Linux Mint, Fedora Workstation),这是最简单的方法。
以 GNOME Files (Nautilus) 为例:
- 打开文件管理器(Files)。
- 在左侧边栏的“其他位置”下,点击“连接到服务器”。
- 在弹出的窗口中填写信息:
- 服务类型: 选择 "Windows 共享 (SMB)"。
- 服务器: 输入 Samba 服务器的 IP 地址或主机名。
- 共享: 输入共享文件夹的名称。
- 文件夹: 通常留空,除非有复杂的路径。
- 用户名: 输入你的用户名。
- 记住密码: 勾选此项,方便下次访问。
- 点击“连接”,输入密码后,共享文件夹就会像本地磁盘一样出现在文件管理器中,你可以直接拖放文件。
以 KDE Dolphin 为例:
- 打开 Dolphin 文件管理器。
- 在地址栏输入
smb://服务器IP/共享名,然后按回车。 - 系统会提示你输入用户名和密码。
常见问题排查
mount error(13): Permission denied:- 检查用户名和密码是否正确。
- 检查该用户在 Samba 服务器上是否有权限访问该共享目录。
- 检查 SELinux 是否阻止了挂载,可以临时设置为
permissive模式测试:sudo setenforce 0,如果问题解决,则需要为挂载点配置正确的 SELinux 上下文。
mount error(22): Invalid argument:- 通常是
vers=参数的问题,尝试更换不同的 SMB 协议版本,如vers=2.1或vers=3.0。
- 通常是
- 无法看到中文文件名或乱码:
- 在挂载命令中添加
iocharset=utf8和codepage=cp936参数。
- 在挂载命令中添加
- 连接超时:
- 检查网络是否通畅,
ping一下服务器 IP。 - 检查防火墙(服务器和客户端的防火墙)是否允许 SMB 端口(通常是 445 和 139)。
- 检查网络是否通畅,
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
smbclient |
功能强大,无需图形界面,适合脚本自动化 | 需要记忆命令,交互式操作 | 快速检查共享、少量文件传输、自动化脚本 |
挂载 (mount) |
与本地文件系统无缝集成,方便所有程序访问 | 需要手动配置(尤其是开机挂载) | 长期、频繁地访问某个共享文件夹 |
| 图形界面 | 操作最直观,无需记命令 | 依赖桌面环境,不适合服务器 | 桌面用户进行日常文件管理 |
对于大多数用户,图形界面是最简单的入门方式,对于需要稳定、持久访问的开发者或服务器管理员,挂载到本地文件系统是最佳选择,而 smbclient 则是命令行爱好者和自动化任务的首选工具。
