在Windows文件资源管理器中访问Linux文件

Linux 可以通过 SMB 挂载 Windows 共享文件夹;反过来,要在 Windows 文件资源管理器中浏览 Linux 文件,可以在 Linux 上运行 Samba 服务器。配置完成后,在资源管理器输入 \\Linux的IP\共享名,或将共享映射成网络驱动器即可。

本文以 Ubuntu/Debian 为例,目标是共享 Linux 用户 hope 的 /home/hope/sambashare,并让 Windows 记住登录凭据。实际操作时,请将示例中的 hope、目录和 IP 换成自己的值。Linux 和 Windows 应处于可以互相访问的局域网。

一、在 Linux 上安装 Samba

打开 Linux 终端:

1
2
sudo apt update
sudo apt install samba

仅在 Linux 上安装用于挂载远程共享的 SMB 客户端,并不会自动把本机目录共享给 Windows;这里需要运行 Samba 的 smbd 服务。

二、创建要共享的目录

以当前 Linux 用户身份执行:

1
2
mkdir -p "$HOME/sambashare"
chmod 700 "$HOME/sambashare"

chmod 700 使该目录默认只对目录所有者开放。共享中的文件仍受 Linux 文件系统权限约束;Samba 配置允许写入,也不能越过 Linux 权限限制。如果准备共享已有目录,不必新建目录,但需要确认登录用户对该目录及其中的文件有相应的读写权限。

三、配置 Samba 共享

先备份配置文件,再打开编辑:

1
2
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
sudo nano /etc/samba/smb.conf

在文件末尾添加以下内容:

1
2
3
4
5
6
[sambashare]
path = /home/hope/sambashare
browseable = yes
read only = no
guest ok = no
valid users = hope

其中,[sambashare] 是 Windows 中看到的共享名,不必与 Linux 文件夹同名;path 必须写成实际的绝对路径;valid users 填允许访问的 Linux 用户名。guest ok = no 表示需要身份验证,read only = no 表示共享允许写入。

在 nano 中按 Ctrl+O 保存,按 Ctrl+X 退出。随后检查配置:

1
testparm

如果报告语法错误,应先修正 /etc/samba/smb.conf,再继续。

四、设置 Samba 密码并启动服务

为 Linux 上已经存在的用户设置 Samba 密码:

1
2
3
sudo smbpasswd -a hope
sudo systemctl enable --now smbd
sudo systemctl restart smbd

执行 smbpasswd 时按提示输入两次密码。这里设置的是 Samba 登录密码,可以与 Linux 开机或 SSH 登录密码不同。用以下命令确认服务正在运行:

1
systemctl status smbd

如果 Linux 启用了 UFW 防火墙,允许 Samba 流量:

1
sudo ufw allow samba

共享只打算在局域网使用时,请确保 Linux 主机没有通过路由器或其他方式将 SMB 服务直接暴露到互联网。

五、在 Windows 文件资源管理器中打开共享

在 Linux 上查看局域网 IP:

1
hostname -I

如果输出多个地址,应选 Windows 能访问的那张局域网网卡对应的地址。例如 Linux 的 IP 是 192.168.0.105,则在 Windows 文件资源管理器顶部地址栏输入:

1
\\192.168.0.105\sambashare

按 Enter 后,首次连接时输入 Samba 用户名 hope 和第四步设置的密码。如果登录窗口中有“记住我的凭据”,勾选它。连接成功后,就可以像打开普通文件夹一样浏览、复制文件;能否修改文件还取决于共享设置和 Linux 文件权限。

建议直接输入完整路径 \\IP\共享名。共享没有自动出现在资源管理器的“网络”列表中,并不代表不能通过该路径访问。

六、让 Windows 以后自动连接

如果希望共享一直显示在“此电脑”中:

  1. 打开文件资源管理器,右键“此电脑”,选择“映射网络驱动器”。
  2. 选择一个盘符,例如 Z:。
  3. 文件夹填写 \\192.168.0.105\sambashare。
  4. 勾选“登录时重新连接”,然后完成映射。首次要求登录时,输入 Samba 凭据并勾选“记住我的凭据”。

此后打开“此电脑”即可找到该盘符。这里的“不再输入密码”是指 Windows 保存凭据并自动用于连接,Samba 共享本身仍有密码保护。如果 Linux 的 IP 经常变化,可在路由器中为它固定 DHCP 地址,否则映射路径也要随 IP 更新。

如果首次连接时没有出现保存凭据选项,或者以前保存过错误密码,可以在 Windows 开始菜单搜索“凭据管理器”,进入“Windows 凭据”,找到对应 Linux IP 的旧记录并更新或删除,然后重新连接。手动添加凭据时,网络地址填 Linux 的 IP,用户名和密码填 Samba 用户名及密码;访问共享时应使用同一个 IP 地址。

常见问题

现象 优先检查
Windows 找不到共享 Linux 与 Windows 是否互通;IP 是否正确;smbd 是否运行;Linux 防火墙是否允许 Samba。
能看到共享,但提示用户名或密码错误 是否执行了 sudo smbpasswd -a 用户名;Windows 凭据管理器中是否保存了旧密码;valid users 是否与用户名一致。
能打开文件,但不能创建或修改 read only = no 是否生效;该用户对 Linux 实际目录及文件是否有写权限。
重启后盘符失效 Linux 是否已开机并连入网络;IP 是否变化;映射时是否勾选“登录时重新连接”。

不建议为了省去密码而直接把共享改为访客访问。较新的 Windows 版本可能默认拒绝不安全的 SMB 访客登录;保存一次凭据即可实现日常使用时免重复输入密码,同时保留用户身份验证。