Linux 配置Samba,Windows登录,开机自动登录
以下脚本均经过个人验证。

一、Linux 侧:安装 Samba
1️⃣ 安装(Ubuntu / Debian 系)
bash
sudo apt update
sudo apt install -y samba
安装完成后会有两个核心服务:
smbd:文件共享nmbd:NetBIOS(名字发现,可选)
确认服务状态:
bash
systemctl status smbd
二、准备共享目录
1️⃣ 创建目录
bash
sudo mkdir -p /srv/samba/share
2️⃣ 设置权限(示例:给某个用户)
假设 Linux 用户是 yourusername(你可以换成实际用户名):
bash
sudo chown -R yourusername:yourusername /srv/samba/share
chmod 755 /srv/samba/share
⚠️ 不建议直接
777,除非只是临时测试
三、配置 Samba
1️⃣ 备份原配置
bash
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
2️⃣ 编辑配置文件
bash
sudo vim /etc/samba/smb.conf
(1)全局配置(通常已经有)
确认或修改以下内容:
ini
[global]
workgroup = WORKGROUP
security = user
map to guest = bad user
WORKGROUP要和 Windows 一致(默认就是这个)security = user是最常用模式
(2)添加共享配置
在文件末尾添加:
ini
[share]
comment = Samba Share
path = /srv/samba/share
browseable = yes
writable = yes
valid users = yourusername
create mask = 0644
directory mask = 0755
四、Samba 用户配置(⚠️非常关键)
Samba 用户 ≠ Linux 用户,需要单独设置
1️⃣ 确认 Linux 用户存在
bash
id yourusername
没有的话创建:
bash
sudo useradd -m yourusername
sudo passwd yourusername
2️⃣ 添加 Samba 用户
bash
sudo smbpasswd -a yourusername
按提示输入密码(Windows 登录时用这个密码)
启用用户:
bash
sudo smbpasswd -e yourusername
五、重启服务并放行防火墙
1️⃣ 重启 Samba
bash
sudo systemctl restart smbd nmbd
2️⃣ 防火墙(如果启用了 UFW)
bash
sudo ufw allow samba
sudo ufw reload
六、Windows 侧访问 Samba
方法一:资源管理器(最常用)
在 Windows 文件管理器地址栏输入:
\\<Linux_IP>\share
例如:
\\192.168.1.100\share
方法二:映射网络驱动器(推荐)
-
打开 此电脑
-
右键 → 映射网络驱动器
-
文件夹填写:
\\192.168.1.100\share -
勾选 使用其他凭据连接
-
用户名输入:
yourusername -
密码:
smbpasswd设置的密码
七、常见问题 & 排查(工程常用)
1️⃣ Windows 提示"无访问权限"
-
确认 Samba 用户存在:
bashpdbedit -L -
检查
valid users -
检查目录 Linux 权限:
bashls -ld /srv/samba/share
2️⃣ Windows 能看到但进不去
多半是 Linux 文件系统权限问题
bash
sudo -u yourusername touch /srv/samba/share/test
失败说明不是 Samba 问题,是 Linux 权限问题。
3️⃣ Windows 10 / 11 连接失败(协议问题)
查看 Samba 版本:
bash
smbd --version
如遇老系统,可在 [global] 中指定:
ini
server min protocol = SMB2
4️⃣ 查看 Samba 日志(非常重要)
bash
journalctl -u smbd -f
或:
bash
ls /var/log/samba/
八、最小可用配置总结(TL;DR)
Linux:
bash
apt install samba
mkdir /srv/samba/share
smbpasswd -a yourusername
smb.conf:
ini
[share]
path = /srv/samba/share
writable = yes
valid users = yourusername
Windows:
\\Linux_IP\share
九、配置自动登录
✅ 方案一:用 Windows「映射网络驱动器 + 记住凭据」
这是最标准、最稳的方式。
操作步骤
-
打开 此电脑
-
右键 → 映射网络驱动器
-
选择盘符(例如
Z:) -
文件夹填:
\\ipaddress\share或:
\\<WSL_IP>\share -
✅ 勾选:
- 登录时重新连接
- 使用其他凭据连接
-
点击完成
-
输入:
- 用户名:
yourusername - 密码:Samba 密码
- 勾选 记住我的凭据
- 用户名:
👉 这样 Windows 会:
- 开机自动尝试 reconnect
- 凭据保存在 凭据管理器
如果你想"强制 100% 自动挂载"(工程级)
有些情况下(WSL 启动慢、网络慢),GUI 自动映射会失败。
✅ 方案二:登录脚本 + net use
1️⃣ 创建脚本
例如:C:\scripts\map_samba.cmd
内容:
bat
@echo off
net use Z: \\ipaddress\share /user:yourusername <Samba密码> /persistent:yes
⚠️ 密码明文,不适合多人环境
单人开发机 OK
2️⃣ 加到开机启动
-
Win + R -
输入:
shell:startup -
把
map_samba.cmd放进去
👉 每次登录都会强制重新映射
推荐的"更安全版本"(不写明文密码)
用 凭据管理器 + net use
1️⃣ 先存凭据
powershell
cmdkey /add:ipaddress /user:yourusername /pass
输入密码(只输入一次)
2️⃣ 脚本里不写密码
bat
net use Z: \\ipaddress\share /persistent:yes
WSL 场景下的"稳定性建议"(非常重要)
⚠️ 确保 WSL 在映射前启动
如果你发现 开机后第一次访问失败,可以:
方法 A(推荐)
在启动脚本前加一句:
bat
wsl.exe -d Ubuntu -e true
完整示例:
bat
@echo off
wsl.exe -d Ubuntu -e true
net use Z: \\ipaddress\share /persistent:yes