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
相关推荐
运维老郭5 小时前
K8s故障排查:一条分层排查路径解决99%线上问题
运维·云原生·kubernetes
AC赳赳老秦5 小时前
项目闭环管理:用 OpenClaw 对接 Jira / 禅道,实现需求 - 任务 - 进度 - 验收全流程自动化
运维·人工智能·python·自动化·devops·jira·openclaw
Deryck_德瑞克5 小时前
Nacos适配Kingbase数据库
数据库·windows
遇见火星5 小时前
centos7和centos8设置本地镜像为yum安装源的方法
linux·运维·服务器
piaopiaolanghua5 小时前
[Ai问答] Docker是否支持跨架构镜像,譬如ARM/X86
linux·运维·服务器
Elastic 中国社区官方博客5 小时前
通过 Elastic MCP Server 将 Cursor 连接到生产日志
大数据·运维·人工智能·elasticsearch·搜索引擎·全文检索·mcp
努力努力再努力FFF6 小时前
运维工程师想学习AI来提升系统自动化水平,该怎么切入?
运维·人工智能·学习
木木_王6 小时前
嵌入式Linux学习 | 数据结构(Day06)全解:线性表 + 栈队列 + 静态库 / 动态库(原理 + 代码 + 编译实战 + 易错点)
linux·数据结构·笔记·学习
howareyou236 小时前
Linux中用户态的函数是如何通过系统调用进入内核态的(二)
linux·服务器·linux系统调用
杨云龙UP6 小时前
Oracle 19c多租户架构下设置用户密码永不过期及登录锁定策略说明_20260430
linux·运维·服务器·数据库·oracle