凌峰创科服务平台

Linux如何访问Samba服务器?

准备工作:检查 Samba 客户端工具

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

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

对于 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 查看所有可用命令。

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

使用指定用户名访问:

smbclient //192.168.1.100/shared -U myuser

系统会提示你输入 myuser 的密码。

常用 smbclient 命令

进入 smbclient 交互界面后,你可以使用以下命令:

  • ls: 列出当前目录的文件。
  • cd 目录名: 切换到指定目录。
  • get 文件名: 下载一个文件到当前 Linux 目录。
  • put 本地文件名: 上传一个本地文件到服务器。
  • mget 文件名模式: 批量下载文件(mget *.txt)。
  • mput 本地文件模式: 批量上传文件。
  • mkdir 目录名: 创建新目录。
  • rm 文件名: 删除文件。
  • exitquit: 退出 smbclient

方法二:挂载共享目录到本地文件系统 (最常用)

这种方法可以将远程的 Samba 共享“映射”为一个本地目录,之后你就可以像操作普通文件夹一样操作它,非常方便。

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

手动挂载(临时挂载,重启后失效)

  1. 创建一个本地挂载点

    sudo mkdir /mnt/samba_share
  2. 执行挂载命令

    sudo mount -t cifs //服务器IP/共享名 /mnt/samba_share -o username=你的用户名,password=你的密码
    • -t cifs: 指定文件系统类型为 CIFS(Samba 使用的协议)。
    • -o username=...,password=...: 提供认证信息。
    • 注意:直接在命令行中明文写密码不安全,更推荐的方法是使用凭证文件。
  3. 使用凭证文件(推荐的安全方式): 创建一个文本文件来存储用户名和密码:

    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
  4. 验证挂载

    df -h

    你应该能看到新的挂载点,或者直接进入 /mnt/samba_share 目录查看文件。

  5. 卸载挂载点

    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) 为例:

  1. 打开文件管理器(Files)。
  2. 在左侧边栏的“其他位置”下,点击“连接到服务器”。
  3. 在弹出的窗口中填写信息:
    • 服务类型: 选择 "Windows 共享 (SMB)"。
    • 服务器: 输入 Samba 服务器的 IP 地址或主机名。
    • 共享: 输入共享文件夹的名称。
    • 文件夹: 通常留空,除非有复杂的路径。
    • 用户名: 输入你的用户名。
    • 记住密码: 勾选此项,方便下次访问。
  4. 点击“连接”,输入密码后,共享文件夹就会像本地磁盘一样出现在文件管理器中,你可以直接拖放文件。

以 KDE Dolphin 为例:

  1. 打开 Dolphin 文件管理器。
  2. 在地址栏输入 smb://服务器IP/共享名,然后按回车。
  3. 系统会提示你输入用户名和密码。

常见问题排查

  • mount error(13): Permission denied:
    • 检查用户名和密码是否正确。
    • 检查该用户在 Samba 服务器上是否有权限访问该共享目录。
    • 检查 SELinux 是否阻止了挂载,可以临时设置为 permissive 模式测试:sudo setenforce 0,如果问题解决,则需要为挂载点配置正确的 SELinux 上下文。
  • mount error(22): Invalid argument:
    • 通常是 vers= 参数的问题,尝试更换不同的 SMB 协议版本,如 vers=2.1vers=3.0
  • 无法看到中文文件名或乱码:
    • 在挂载命令中添加 iocharset=utf8codepage=cp936 参数。
  • 连接超时:
    • 检查网络是否通畅,ping 一下服务器 IP。
    • 检查防火墙(服务器和客户端的防火墙)是否允许 SMB 端口(通常是 445 和 139)。
方法 优点 缺点 适用场景
smbclient 功能强大,无需图形界面,适合脚本自动化 需要记忆命令,交互式操作 快速检查共享、少量文件传输、自动化脚本
挂载 (mount) 与本地文件系统无缝集成,方便所有程序访问 需要手动配置(尤其是开机挂载) 长期、频繁地访问某个共享文件夹
图形界面 操作最直观,无需记命令 依赖桌面环境,不适合服务器 桌面用户进行日常文件管理

对于大多数用户,图形界面是最简单的入门方式,对于需要稳定、持久访问的开发者或服务器管理员,挂载到本地文件系统是最佳选择,而 smbclient 则是命令行爱好者和自动化任务的首选工具。

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