使用图形界面(最简单)
如果你使用的是带有桌面环境的 Linux 发行版(如 Ubuntu, Mint, Fedora 等),这是最直观的方法。

通过文件管理器访问
大多数现代 Linux 文件管理器(如 Nautilus, Dolphin, Thunar)都内置了对 Samba 的支持。
步骤:
-
打开你的文件管理器("Files" 或 "Nautilus")。
-
在左侧边栏或地址栏中,输入
smb://加上服务器的 IP 地址或主机名。
(图片来源网络,侵删)- 格式:
smb://<服务器IP或主机名>/<共享文件夹名称> - 示例:
smb://192.168.1.100/share - 示例:
smb://fileserver/public
- 格式:
-
按回车键,系统会尝试连接。
-
如果共享需要用户名和密码,会弹出一个身份验证对话框。
- 用户名: 输入 Samba 服务器的用户名。
- 密码: 输入该用户的密码。
- 域: 如果你的 Samba 服务器是域环境的一部分,需要在这里填写域名(通常是服务器的主机名或工作组名),如果不是,可以留空。
- 记住我的密码: 勾选此项可以方便下次访问。
-
点击“连接”或“确定”,成功后你就可以像访问本地文件夹一样浏览共享文件了。
通过“连接到服务器”功能
- 在桌面上右键点击,通常会有“连接到服务器...”或类似的选项。
- 在弹出的对话框中,选择服务类型为 "Windows share (SMB)"。
- 填写服务器地址、共享名称、用户名和密码。
- 点击“连接”即可。
使用命令行(更灵活、更强大)
对于服务器环境或习惯使用命令行的用户,命令行是首选。

smbclient - 交互式客户端
smbclient 是一个类似 FTP 的命令行工具,非常适合查看、上传、下载文件。
安装:
# 对于 Debian/Ubuntu sudo apt update sudo apt install smbclient # 对于 CentOS/RHEL/Fedora sudo yum install samba-client # 或者 dnf install samba-client
使用方法:
-
列出服务器上的所有共享:
smbclient -L //<服务器IP或主机名> -U <用户名>
系统会提示你输入密码。
-U参数可以指定用户,如果不加,默认是当前 Linux 系统的用户名,可能会失败。 -
访问特定的共享文件夹(进入交互模式):
smbclient //<服务器IP或主机名>/<共享文件夹名称> -U <用户名>
成功登录后,你会看到
smb: \>提符,你可以使用类似 FTP 的命令:ls或dir:列出文件。cd <目录名>:切换目录。get <文件名>:下载文件到当前 Linux 目录。put <本地文件名>:上传本地文件到共享目录。lcd <本地目录>:切换本地工作目录。exit或quit:退出。
-
直接下载/上传文件(非交互模式):
# 下载单个文件 smbget smb://<用户名>:<密码>@<服务器IP>/<共享文件夹>/<文件名> # 下载整个目录(需要安装 smbget) # sudo apt install smbget smbget -r smb://<用户名>:<密码>@<服务器IP>/<共享文件夹>
mount.cifs - 挂载为本地目录(推荐)
这是最常用的方法,因为它可以将远程共享文件夹永久或临时地挂载到你的 Linux 文件系统中,之后就可以像操作普通目录一样操作它。
前提:
安装 cifs-utils 包。
# Debian/Ubuntu sudo apt install cifs-utils # CentOS/RHEL/Fedora sudo yum install cifs-utils
使用方法:
-
临时挂载(重启后失效):
- 创建一个本地挂载点:
sudo mkdir /mnt/samba_share
- 执行挂载命令:
sudo mount -t cifs //<服务器IP或主机名>/<共享文件夹名称> /mnt/samba_share -o username=<你的用户名>,password=<你的密码>
成功后,你就可以通过
/mnt/samba_share访问共享内容了。
- 创建一个本地挂载点:
-
永久挂载(开机自动挂载): 修改
/etc/fstab文件。-
(推荐)创建凭据文件,避免将密码明文写在 fstab 中。
sudo nano /etc/samba_credentials
在文件中输入你的用户名和密码:
username=your_samba_user password=your_samba_password domain=your_workgroup # 如果需要的话设置文件权限,只有 root 可读:
sudo chmod 600 /etc/samba_credentials
-
编辑
/etc/fstab文件:sudo nano /etc/fstab
在文件末尾添加以下一行:
//<服务器IP或主机名>/<共享文件夹名称> /mnt/samba_share cifs credentials=/etc/samba_credentials,iocharset=utf8,vers=3.0,nofail 0 0credentials=/path/to/credentials: 指定凭据文件。iocharset=utf8: 确保能正确显示中文等非英文字符。vers=3.0: 指定 SMB 协议版本,如果遇到连接问题,可以尝试vers=2.1或vers=2.0。nofail: 如果共享不可用,系统不会报错导致无法启动。
-
挂载并测试: 执行以下命令让 fstab 生效,或者重启电脑:
# 测试 fstab 语法是否正确 sudo mount -a # 检查是否挂载成功 df -h
如果没有报错,说明挂载成功。
-
常见问题与解决方案
"Unable to find suitable address" 或 "Connection refused"
- 原因: 无法连接到指定的 IP 地址。
- 解决:
- 检查服务器 IP 地址是否正确。
- 确保你的 Linux 机器和 Samba 服务器在同一个局域网内。
- 检查网络连接(
ping <服务器IP>)。 - 检查 Samba 服务是否在服务器上运行(
sudo systemctl status smbd)。 - 检查防火墙是否阻止了 Samba 端口(TCP/UDP 137, 138, 139, 445)。
"NT_STATUS_ACCESS_DENIED" 或 "登录失败"
- 原因: 用户名或密码错误,或者该用户没有访问该共享的权限。
- 解决:
- 仔细核对用户名和密码。
- 确认你使用的用户名在 Samba 服务器上是有效的,并且被授予了访问目标共享文件夹的权限。
- 如果是域环境,确保
domain参数正确。
"mount error(13): Permission denied"
- 原因: 挂载时权限不足,或者 Samba 共享的权限设置与本地用户不匹配。
- 解决:
- 方法 A (简单粗暴): 在
mount命令中添加uid=1000,gid=1000参数,将文件的所有者映射为当前用户。1000是很多发行版上第一个普通用户的 UID/GID,你可以用id命令查看自己的。sudo mount -t cifs ... -o uid=1000,gid=1000 ...
- 方法 B (推荐): 确保 Samba 服务器上的共享文件夹权限设置正确,共享文件夹的权限应该允许你使用的用户组读取/写入。
- 方法 A (简单粗暴): 在
中文文件名显示为乱码
- 原因: 编码不匹配,Samba 默认使用
GBK或GBK编码(对应 Windows 的GBK),而 Linux 通常使用UTF-8。 - 解决:
- 最佳实践: 修改 Samba 服务器配置文件 (
smb.conf),将unix charset = UTF-8和dos charset = utf-8,并重启 Samba 服务,这是治本的方法。 - 客户端临时解决: 在
mount命令中添加iocharset=utf8参数(如上文所示),对于较新的系统,推荐使用vers=3.0,因为它默认支持更好的字符集。
- 最佳实践: 修改 Samba 服务器配置文件 (
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 图形界面 | 简单直观,无需记忆命令 | 功能有限,依赖桌面环境 | 普通桌面用户,临时访问 |
| smbclient | 功能强大,类似 FTP,适合脚本 | 非交互式操作较繁琐 | 系统管理员,批量下载上传,脚本自动化 |
| mount.cifs | 集成到文件系统,使用方便 | 需要root权限,配置稍复杂 | 需要长期、频繁访问共享的应用或服务 |
对于大多数用户,推荐先尝试图形界面,如果需要更稳定或自动化的访问,mount.cifs 是最佳选择。
