windows上每个账号远程登录后,每个用户独立挂载linux存储的某个路径,如何实现

要在 Windows 上为每个用户实现独立挂载 Linux 存储的某个路径,核心是利用 ‌Samba 服务‌ 在 Linux 端配置共享,并在 Windows 端为每个用户单独映射网络驱动器。每个 Windows 用户登录后,系统会保存其独立的网络驱动器映射信息,从而实现"每个账号独立挂载"的效果。

以下是实现步骤:

Linux 端配置 Samba 共享

‌安装 Samba 服务‌

根据你的 Linux 发行版,使用相应的包管理器安装 Samba。

Ubuntu/Debian

sudo apt update

sudo apt install samba samba-common-bin

CentOS/RHEL/Fedora

sudo yum install samba samba-client samba-common

或者对于较新版本

sudo dnf install samba samba-client samba-common

‌创建共享目录和用户‌

为每个需要访问的 Linux 用户创建一个对应的系统账户(如果尚未存在),并为其设置 Samba 密码。

创建系统用户(如果不存在)

sudo useradd username1

sudo useradd username2

为每个用户设置 Samba 密码(此密码与系统登录密码可以不同)

sudo smbpasswd -a username1

sudo smbpasswd -a username2

‌配置 Samba (smb.conf)‌

编辑 Samba 配置文件,为每个用户创建一个独立的共享段。推荐使用 homes 部分来自动共享每个用户的家目录,或者手动为每个用户创建独立的共享。

workgroup = WORKGROUP

security = user

map to guest = bad user

如果需要通过公网访问且445端口被封,可指定其他端口

smb ports = 4450 1390

方案A: 自动共享所有用户的家目录 (推荐)

comment = Home Directories

browseable = no

writable = yes

valid users = %S

create mask = 0664

directory mask = 0775

方案B: 手动为每个用户创建独立共享 (示例)

#username1_share

#comment = Home for username1

#path = /home/username1

#browseable = no

#writable = yes

#valid users = username1

#create mask = 0664

#directory mask = 0775

#username2_share

#comment = Home for username2

#path = /home/username2

#browseable = no

#writable = yes

#valid users = username2

#create mask = 0664

#directory mask = 0775

‌说明‌:valid users = %S 表示只有与共享名同名的用户才能访问,这天然地实现了用户隔离。browseable = no 使共享目录在"网络"中不可见,需要通过路径手动访问,增加安全性。

‌重启 Samba 服务并配置防火墙‌

重启服务

sudo systemctl restart smb nmb

设置开机自启

sudo systemctl enable smb nmb

开放防火墙端口 (必须开放445端口)

sudo firewall-cmd --permanent --add-service=samba

sudo firewall-cmd --reload

或者手动开放端口

sudo firewall-cmd --permanent --add-port=445/tcp

sudo firewall-cmd --reload

Windows 端为每个用户映射网络驱动器

‌以用户身份登录 Windows‌

每个 Windows 用户需要使用自己的账户登录系统。

‌映射网络驱动器‌

打开"此电脑"或"文件资源管理器"。

点击顶部菜单的"计算机"或"此电脑" -> "映射网络驱动器"。

选择一个驱动器字母(如 Z:)。

在"文件夹"字段中输入 Linux 服务器的 Samba 共享路径:

如果使用了 homes 共享:\<Linux服务器IP>\username1

如果使用了手动共享:\<Linux服务器IP>\username1_share

勾选"使用其他凭据连接"。

点击"完成"。

‌输入凭据‌

在弹出的认证窗口中,用户名填写格式为:<Linux服务器IP>\username1 或 WORKGROUP\username1。

密码填写在 Linux 端通过 smbpasswd -a 设置的 Samba 密码。

勾选"记住我的凭据"(可选,但推荐,以便下次自动登录)。

‌验证‌

成功后,该用户在"此电脑"下会看到映射的网络驱动器。当该用户注销并重新登录时,Windows 会自动重新连接该网络驱动器,且其访问权限仅限于其自己的家目录或指定共享目录,与其他用户完全隔离。

关键点总结

‌用户隔离‌:通过 Samba 的 valid users = %S 配置和 Windows 的"使用其他凭据连接"功能,确保每个 Windows 用户只能访问自己被授权的 Linux 目录。

‌凭据管理‌:Windows 会为每个登录用户存储独立的网络驱动器映射和凭据,这是实现"每个账号独立"的关键。

‌端口要求‌:Windows 访问 Samba 共享必须能访问 Linux 服务器的 ‌445 端口‌。‌

相关推荐
Smoothcloud润云1 小时前
5大功能精修,重构AI算力使用体验!
java·人工智能·windows·算法·重构·编辑器·sublime text
LZZ and MYY1 小时前
RTS 在windows和Linux之间ShareMem
linux·运维·服务器
aningx1 小时前
openSUSE Leap 16.0 运行 sunshine 报错的解决方法
linux
爱学习的徐徐2 小时前
Linux 基础IO
linux·服务器
zt1985q2 小时前
本地部署源代码管理解决方案 Bitbucket Data Center 并实现外部访问
运维·服务器·数据库·网络协议·postgresql·源代码管理
xiaobobo33302 小时前
面向对象:linux内核中函数转数据的用法
linux·面向对象·隔离·函数指针绑定
极客先躯2 小时前
高级java每日一道面试题-2026年01月18日-实战篇[Docker]-如何清理仓库中的旧镜像?
java·运维·docker·容器
姓刘的哦2 小时前
C++软件架构设计思路
linux
ModestCoder_2 小时前
windows/ubuntu解决挂梯子但是codex reconnecting五次的问题
linux·windows·ubuntu
禹凕2 小时前
Linux基础——环境
linux·运维·服务器·ubuntu