Linux 配置Samba,Windows登录,开机自动映射登录

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

方法二:映射网络驱动器(推荐)

  1. 打开 此电脑

  2. 右键 → 映射网络驱动器

  3. 文件夹填写:

    复制代码
    \\192.168.1.100\share
  4. 勾选 使用其他凭据连接

  5. 用户名输入:

    复制代码
    yourusername
  6. 密码:smbpasswd 设置的密码


七、常见问题 & 排查(工程常用)

1️⃣ Windows 提示"无访问权限"

  • 确认 Samba 用户存在:

    bash 复制代码
    pdbedit -L
  • 检查 valid users

  • 检查目录 Linux 权限:

    bash 复制代码
    ls -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「映射网络驱动器 + 记住凭据」

这是最标准、最稳的方式。

操作步骤
  1. 打开 此电脑

  2. 右键 → 映射网络驱动器

  3. 选择盘符(例如 Z:)

  4. 文件夹填:

    复制代码
    \\ipaddress\share

    或:

    复制代码
    \\<WSL_IP>\share
  5. ✅ 勾选:

    • 登录时重新连接
    • 使用其他凭据连接
  6. 点击完成

  7. 输入:

    • 用户名: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
相关推荐
程序员-Benothing4 小时前
Vim编辑器从入门到精通:模式、快捷键、配置、插件
linux·运维·服务器
m0_646429974 小时前
Docker 完整核心知识点总结(超通俗易懂版)
运维·docker·容器
‎ദ്ദിᵔ.˛.ᵔ₎5 小时前
linux 进程信号 (上)
linux·服务器
bug和崩溃我都要5 小时前
QT 开发的专业截图录屏工具 - macOS版 / Windows版
windows·qt·mac·录屏·截屏
kimloner5 小时前
开源一个 376KB 的 Windows 桌面小工具:便签 + 截图标注 + OCR + 待办提醒(C# / WinForms)
windows·开源·c#·ocr·winforms
亚川楼宇自控系统数据中心厂家5 小时前
IBMS 集成管理系统:如何打通楼宇自控实现建筑一体化管控
运维
15Moonlight5 小时前
Linux网络(02):Socket 编程 UDP
linux·网络·udp
迪康Defender5 小时前
终端安全审批体系设计:如何平衡安全管控与业务连续性
运维·服务器·安全·运维开发·学习方法·业界资讯·远程工作
摸鱼 特供版5 小时前
一款边录边标注的轻量截图录屏工具
windows·学习·电脑·音视频·软件需求
wuminyu6 小时前
ForkJoinPool窃取线程在扫描其他WorkQueue时的随机采样算法与Phase线程挂起唤醒机制解析
java·linux·c语言·jvm·c++