凌峰创科服务平台

Linux如何访问Samba服务器?

使用图形界面(最简单)

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

Linux如何访问Samba服务器?-图1
(图片来源网络,侵删)

通过文件管理器访问

大多数现代 Linux 文件管理器(如 Nautilus, Dolphin, Thunar)都内置了对 Samba 的支持。

步骤:

  1. 打开你的文件管理器("Files" 或 "Nautilus")。

  2. 在左侧边栏或地址栏中,输入 smb:// 加上服务器的 IP 地址或主机名。

    Linux如何访问Samba服务器?-图2
    (图片来源网络,侵删)
    • 格式:smb://<服务器IP或主机名>/<共享文件夹名称>
    • 示例:smb://192.168.1.100/share
    • 示例:smb://fileserver/public
  3. 按回车键,系统会尝试连接。

  4. 如果共享需要用户名和密码,会弹出一个身份验证对话框。

    • 用户名: 输入 Samba 服务器的用户名。
    • 密码: 输入该用户的密码。
    • 域: 如果你的 Samba 服务器是域环境的一部分,需要在这里填写域名(通常是服务器的主机名或工作组名),如果不是,可以留空。
    • 记住我的密码: 勾选此项可以方便下次访问。
  5. 点击“连接”或“确定”,成功后你就可以像访问本地文件夹一样浏览共享文件了。

通过“连接到服务器”功能

  1. 在桌面上右键点击,通常会有“连接到服务器...”或类似的选项。
  2. 在弹出的对话框中,选择服务类型为 "Windows share (SMB)"。
  3. 填写服务器地址、共享名称、用户名和密码。
  4. 点击“连接”即可。

使用命令行(更灵活、更强大)

对于服务器环境或习惯使用命令行的用户,命令行是首选。

Linux如何访问Samba服务器?-图3
(图片来源网络,侵删)

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 的命令:

    • lsdir:列出文件。
    • cd <目录名>:切换目录。
    • get <文件名>:下载文件到当前 Linux 目录。
    • put <本地文件名>:上传本地文件到共享目录。
    • lcd <本地目录>:切换本地工作目录。
    • exitquit:退出。
  • 直接下载/上传文件(非交互模式):

    # 下载单个文件
    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

使用方法:

  • 临时挂载(重启后失效):

    1. 创建一个本地挂载点:
      sudo mkdir /mnt/samba_share
    2. 执行挂载命令:
      sudo mount -t cifs //<服务器IP或主机名>/<共享文件夹名称> /mnt/samba_share -o username=<你的用户名>,password=<你的密码>

      成功后,你就可以通过 /mnt/samba_share 访问共享内容了。

  • 永久挂载(开机自动挂载): 修改 /etc/fstab 文件。

    1. (推荐)创建凭据文件,避免将密码明文写在 fstab 中。

      sudo nano /etc/samba_credentials

      在文件中输入你的用户名和密码:

      username=your_samba_user
      password=your_samba_password
      domain=your_workgroup  # 如果需要的话

      设置文件权限,只有 root 可读:

      sudo chmod 600 /etc/samba_credentials
    2. 编辑 /etc/fstab 文件

      sudo nano /etc/fstab

      在文件末尾添加以下一行:

      //<服务器IP或主机名>/<共享文件夹名称>  /mnt/samba_share  cifs  credentials=/etc/samba_credentials,iocharset=utf8,vers=3.0,nofail  0  0
      • credentials=/path/to/credentials: 指定凭据文件。
      • iocharset=utf8: 确保能正确显示中文等非英文字符。
      • vers=3.0: 指定 SMB 协议版本,如果遇到连接问题,可以尝试 vers=2.1vers=2.0
      • nofail: 如果共享不可用,系统不会报错导致无法启动。
    3. 挂载并测试: 执行以下命令让 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 服务器上的共享文件夹权限设置正确,共享文件夹的权限应该允许你使用的用户组读取/写入。

中文文件名显示为乱码

  • 原因: 编码不匹配,Samba 默认使用 GBKGBK 编码(对应 Windows 的 GBK),而 Linux 通常使用 UTF-8
  • 解决:
    • 最佳实践: 修改 Samba 服务器配置文件 (smb.conf),将 unix charset = UTF-8dos charset = utf-8,并重启 Samba 服务,这是治本的方法。
    • 客户端临时解决:mount 命令中添加 iocharset=utf8 参数(如上文所示),对于较新的系统,推荐使用 vers=3.0,因为它默认支持更好的字符集。
方法 优点 缺点 适用场景
图形界面 简单直观,无需记忆命令 功能有限,依赖桌面环境 普通桌面用户,临时访问
smbclient 功能强大,类似 FTP,适合脚本 非交互式操作较繁琐 系统管理员,批量下载上传,脚本自动化
mount.cifs 集成到文件系统,使用方便 需要root权限,配置稍复杂 需要长期、频繁访问共享的应用或服务

对于大多数用户,推荐先尝试图形界面,如果需要更稳定或自动化的访问,mount.cifs 是最佳选择

分享:
扫描分享到社交APP
上一篇
下一篇