要在 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 端口。