Linux 下访问 Windows 共享目录的完整指南
各专栏更新如下👇
大模型初探分享零基础AI学习经历
OAI-5G开源通信平台实践
OpenWRT常见问题分析
5G CPE 组网技术分享
Linux音视频采集及视频推拉流应用实践详解
得力工具提升工作效率
Linux 下访问 Windows 共享目录的完整指南
在跨系统文件交互场景中,Linux 访问 Windows 共享目录的核心是基于SMB/CIFS 协议(Windows 文件共享的原生协议)。以下是覆盖临时访问、持久化挂载、图形界面操作的完整方法,适配 Ubuntu/Debian、CentOS/RHEL 等主流 Linux 发行版,并包含常见问题解决方案。
一、前提条件
在开始操作前,需确保 Windows 端和 Linux 端均完成基础配置,否则会导致连接失败。
1. Windows 端准备
- 开启文件夹共享:右键目标文件夹 →「属性」→「共享」→ 添加有权限的用户(建议用 Windows 管理员账号),并授予「读写」权限;
- 记录关键信息:
- Windows 主机 IP 地址(通过
ipconfig查看,如192.168.1.100); - 共享名(共享时设置的名称,非文件夹原名,如
win_share); - 访问账号密码(需拥有该共享文件夹的权限);
- Windows 主机 IP 地址(通过
- 放行 SMB 通信:
- 开启「网络发现」和「文件和打印机共享」(控制面板 → 网络和共享中心 → 更改高级共享设置);
- 关闭 Windows 防火墙(或在防火墙规则中放行「文件和打印机共享」,默认端口 TCP 445)。
2. Linux 端准备
安装 SMB/CIFS 协议依赖工具(不同发行版命令不同):
- Ubuntu/Debian 系列:
sudoaptupdate&&sudoaptinstall-ycifs-utils smbclient - CentOS/RHEL 系列:
sudoyuminstall-ycifs-utils smbclient - 验证安装:执行
smbclient --version,若输出版本信息则安装成功。
二、三种核心访问方法
方法一:smbclient 命令(临时交互式访问)
smbclient是命令行工具,类似 FTP 客户端,适合临时查看/传输文件(无需挂载目录),操作完成后连接自动断开。
步骤:
列出 Windows 共享资源(可选,确认共享名是否正确):
smbclient-L//<Windows_IP>/-U<Windows_用户名>示例(Windows IP 192.168.1.100,用户名为
win_user):smbclient-L//192.168.1.100/-Uwin_user输入 Windows 密码后,会显示所有共享资源(不带
$后缀的为可访问共享文件夹)。连接目标共享目录:
smbclient //<Windows_IP>/<共享名>-U<Windows_用户名>示例(连接共享名
win_share):smbclient //192.168.1.100/win_share-Uwin_user交互式操作命令:
ls:查看共享文件夹内文件;get <文件名>:下载文件到 Linux 本地当前目录;put <文件名>:上传 Linux 本地文件到共享目录;exit:退出连接。
适用场景:临时下载/上传单个文件,无需长期访问
方法二:mount 挂载(持久化访问)
通过mount命令将 Windows 共享目录挂载到 Linux 本地目录,实现像访问本地文件夹一样操作共享文件,支持临时挂载(重启失效)和永久挂载(开机自动生效)。
1. 临时挂载
步骤:
创建本地挂载点(选择一个空目录,如
/mnt/win_share):sudomkdir-p/mnt/win_share# -p 确保父目录存在执行挂载命令:
sudomount-tcifs //<Windows_IP>/<共享名><本地挂载点>-ousername=<Windows_用户名>,password=<Windows_密码>,vers=<协议版本>- 协议版本
vers适配:Windows 10/11/Server 2016+ 用3.0,Windows 7/Server 2012 用2.1,旧系统用1.0; - 示例(Windows 10,密码
Win@123):sudomount-tcifs //192.168.1.100/win_share /mnt/win_share-ousername=win_user,password=Win@123,vers=3.0 - 匿名访问(共享无需密码):去掉
username和password,添加guest参数:sudomount-tcifs //192.168.1.100/win_share /mnt/win_share-oguest,vers=3.0
- 协议版本
验证挂载:
df-h# 查看挂载状态,会显示 //192.168.1.100/win_share 挂载到 /mnt/win_sharels/mnt/win_share# 查看共享文件夹内容
2. 永久挂载
通过修改/etc/fstab配置文件实现,需注意密码安全(避免明文存储)。
步骤:
**创建密码文件 **:
sudovim/etc/smbcredentials# 新建凭据文件写入以下内容(替换为实际账号密码):
username=win_user password=Win@123设置权限(仅 root 可读,防止密码泄露):
sudochmod600/etc/smbcredentials编辑 /etc/fstab 文件:
sudovim/etc/fstab在文件末尾添加一行(根据访问类型选择格式):
- 用密码文件(推荐):
//192.168.1.100/win_share /mnt/win_share cifs credentials=/etc/smbcredentials,vers=3.0,iocharset=utf8 0 0 - 匿名访问:
//192.168.1.100/win_share /mnt/win_share cifs guest,vers=3.0,iocharset=utf8 0 0 - 参数说明:
iocharset=utf8:解决中文文件名乱码;- 最后两个
0:分别表示“是否备份”和“开机磁盘检查”,默认填 0 即可。
- 用密码文件(推荐):
生效并验证:
sudomount-a# 重新加载 fstab 配置,无报错则生效重启 Linux 后,执行
df -h确认挂载仍存在。
3. 卸载挂载
如需取消挂载(如更换共享目录):
sudoumount/mnt/win_share# 注意是 umount(无 n),需确保当前不在挂载目录内适用场景:长期频繁访问共享文件,需无缝集成到本地文件系统
方法三:图形界面访问
如果 Linux 安装了桌面环境(如 GNOME、KDE),可通过文件管理器直接访问,无需命令行,操作最简便。
步骤:
- 打开文件管理器(如 GNOME 的 Nautilus、KDE 的 Dolphin);
- 输入 SMB 路径:在地址栏输入
smb://<Windows_IP>/<共享名>,示例:smb://192.168.1.100/win_share - 输入凭据:弹出对话框后,填写 Windows 用户名和密码,点击“连接”;
- 访问文件:成功后即可像浏览本地文件一样,复制、粘贴共享目录中的内容。
适用场景:桌面用户临时访问,无需记忆命令
三、关键注意事项
协议版本适配:
- 连接失败提示
mount error(95): Operation not supported,需降低vers版本(如从 3.0 改为 2.1 或 1.0),旧 Windows 系统不支持高版本协议
- 连接失败提示
权限与乱码问题:
- 无法读写文件:挂载时添加
uid=<Linux用户ID>,gid=<Linux组ID>,确保 Linux 用户有权限操作,示例:
(Linux 用户 ID 可通过sudomount-tcifs //192.168.1.100/win_share /mnt/win_share-ousername=win_user,password=Win@123,vers=3.0,uid=1000,gid=1000id命令查看,普通用户默认 UID=1000); - 中文乱码:添加
iocharset=utf8,codepage=cp936参数 。
- 无法读写文件:挂载时添加
网络与防火墙:
- 提示
mount error(115): Operation in progress:检查 Windows IP 是否正确、Linux 能否 ping 通 Windows(ping 192.168.1.100)、Windows 防火墙是否放行 SMB 端口(445) 。
- 提示
密码安全:
- 避免在
mount命令或/etc/fstab中明文写密码,优先使用/etc/smbcredentials凭据文件,并设置 600 权限
- 避免在
