【环境配置】【详细配置】SMB Samba 共享 VMware 虚拟机 Linux Ubuntu 22.04 文件目录

Samba是在Linux和UNIX系统上实现SMB协议的软件。本文介绍通过Samba实现虚拟机和主机之间的文件共享。

操作环境

操作系统

主机Win11,虚拟机Ubuntu 22.04。

网络环境

主机和虚拟机在同一网络。
网络配置参考:VSCode SSH 连接 VMware虚拟机Linux Ubuntu 22.04 配置。

SMB简介

SMB协议

SMBServer Messages Block信息服务块,是计算机网络中应用层协议,是客户机/服务器型协议。客户机通过SMB协议访问服务器上的共享文件系统、打印机及其他资源。

SMB协议为局域网用户提供相关的功能和机制,来保证传输的可靠性。局域网中90%的数据包以及95%的字节是通过SMB协议进行传输。SMB协议解决了网络的稳定性和数据流在共享带宽时的公平性、拥塞控制及效率等问题。

SMB与Samba

1991 年,还在读大学的著名黑客、技术大牛Andrew Tridgwell就有这样的困扰,他手上有三部机器,分别是跑DOS的个人计算机、DEC公司的Digital Unix系统以及SunUnix系统,在当时,DEC公司有发展出一套称为PATHWORKS的软件,这套软件可以用来分享DEC的Unix与个人计算机的DOS这两个操作系统的档案数据,Sun的Unix无法藉由这个软件来进行数据分享。为了解决这样的问题,他就自行写了个程序去侦测当DOS与DEC的Unix系统在进行数据分享传送时所使用到的通讯协议信息,然后将这些重要的信息撷取下来,并且基于上述所找到的通讯协议而开发出ServerMessage Block (SMB) 这个档案系统,而就是这套 SMB软件能够让Unix与DOS互相的分享数据。

Tridgwell去申请SMBServer ( Server Message Block 的简写 ) 这个名字来做为他撰写的这个软件的商标,可惜的是,SMB不符合商标注册的要求,因此没有办法达成注册。既然如此的话,那么能不能在字典里面找到相关的字词可以做为商标来注册呢?翻了老半天,这个SAMBA刚好含有SMB,又是热情有劲的拉丁舞蹈的名称,不如就用这个名字来做为商标好了。如此,这成为今天所使用的SAMBA的名称由来。

后来微软对这个SMB协议进行了重大更改,更改后的版本也是最常见的版本。

虚拟机配置

安装和启动Samba服务

安装Samba软件。

sudo apt update
sudo apt install samba

查看samba服务是否正在运行

查看Samba服务是否正在运行。

sudo systemctl status smbd
sudo systemctl status nmbd

image.png
image.png

或使用以下命令。
sudo systemctl status smbd nmbd

这里smbd是Samba服务器后台程序,负责管理Samba共享,而nmbd是NetBIOS名称服务器,负责提供网络浏览和名称解析。

如果没运行,手动启动。
sudo systemctl start smbd nmbd

配置samba服务设置为开机启动

配置samba服务设置为开机启动。

sudo systemctl enable smbd nmbd

配置共享目录

创建一个共享目录。

mkdir /home/user0/share

目录所属用户和用户组。

sudo chown user0:user0 /home/user0/share

目录访问权限。

sudo chmod 0775 /home/user0/share

修改配置文件

编辑配置文件/etc/samba/smb.conf

sudo vim /etc/samba/smb.conf

可选配置以下内容。

[ShareName]
# 基础配置
  comment = [comment]
  path = [directoy path]
  available = [yes/no]
  browseable = [yes/no]

# 用户权限
  valid users = [username1],[username2],@[usergroupname]
  read list  = [username1],[username2],@[usergroupname]
  write list = [username1],[username2],@[usergroupname]
  guest ok = [yes/no]

# 访问权限
  read only = [yes/no]
  writable = [yes/no]
  directory mask = 0775
  create mask = 0775

[ShareName]:共享的名称,这个名称在访问共享时显示,可根据需要更改。
[基础配置]
\qquad comment:描述性注释,访问所配置的资源时显示。
\qquad path:要共享的文件夹的绝对路径。
\qquad available:共享资源是否可用。
\qquad browseable:设置为yes使共享在网络浏览器中可见。
[用户权限]
\qquad valid users:允许访问该共享资源的用户,多个用户用,隔开,如果配置的是用户组前面加@
\qquad read list:允许读该共享资源的用户。
\qquad write list:允许写该共享资源的用户。
\qquad guest ok:设置为yes允许没有有效用户账户的用户访问共享。
[访问权限]
\qquad read only:设置为no允许用户写入文件。
\qquad writable:是否可写入。
\qquad directory mask:设置创建目录的访问权限。
\qquad create mask:创建文件的访问权限。

将配置添加到配置文件结尾

将配置添加到配置文件结尾。

[share]
  comment = File share
  path = /home/user0/share
  available = yes
  browseable = yes
  valid users = user0
  read only = no
  writable = yes

检查配置文件语法是否正确

检查配置文件语法是否正确。

sudo testparm /etc/samba/smb.conf

重启Samba服务以应用配置更改

重启Samba服务以应用配置更改。

sudo systemctl restart smbd nmbd

设置防火墙允许samba连接

设置防火墙允许samba连接。

sudo ufw allow samba

添加samba用户

pdbedit。

pdbedit 用于管理由PAM模块pam_krb5_misc提供的MIT Kerberos数据库。

添加允许登录的samba用户

添加允许登录的samba用户。

sudo pdbedit -a [username]
sudo smbpasswd -a [username]
此处的[username]必须是系统中用户的用户名,否则添加失败。

查看当前已在samba服务中添加的用户

查看当前已在samba服务中添加的用户。

sudo pdbedit -L

注:sudo smbpasswd -L [username]是禁用(锁定)当前用户或指定用户的SMB密码,阻止用户通过SMB协议访问Samba共享资源。如果不加[username],默认是当前用户。
使用sudo undo smbpasswd -L [username]解除锁定。

*删除用户命令。

pdbedit -x username
smbpasswd -x [username]

主机配置

添加连接配置

找到此电脑——右键——添加一个网络位置
image.png
下一步。
image.png
选择自定义网络位置下一步
image.png
输入虚拟机地址,点浏览
image.png
选择配置的目录。
image.png

此处的samba是在/etc/samba/smb.conf中配置的[ShareName]

下一步。
image.png
输入名称,这个名称在此电脑——网络位置中显示。
image.png
点击完成
image.png
输入Ubuntu中配置的用户名Samba密码,点确定。
image.png

*如果勾选了记住我的凭据,此处添加的凭据可在控制面板\用户帐户\凭据管理器中编辑和删除。
image.png


打开了虚拟机中共享的/home/user0/share目录。
image.png
此时在此电脑——网络位置中,添加了Ubuntu中共享的目录。
image.png

问题排查

连接问题 1

image.png
没有权限访问共享的目录。

1、samba配置及目录权限。

检查Samba用户是否和/etc/samba/smb.conf中配置的valid users = [username]一致。

sudo pdbedit -L
sudo vim /etc/samba/smb.conf

检查/etc/samba/smb.conf中配置的用户权限访问权限

sudo vim /etc/samba/smb.conf

检查/home/user0/share这个路径的homeuser0share权限。

home其它用户访问权限不低于1,默认755
user0所有者访问权限不低于1,默认755
share所有者权限不低于5,默认755

重启Samba服务。

sudo systemctl restart smbd nmbd

2、删除Windows连接Linux的Samba服务缓存

打开PowerShell,查看网络共享资源连接。

net use

删除网络共享连接记录。

net use \192.168.37.129\samba /del

PS C:\Users\Administrator> net use
会记录新的网络连接。


状态       本地        远程                      网络

-------------------------------------------------------------------------------
已断开连接             \\192.168.37.129\samba    Microsoft Windows Network
命令成功完成。

PS C:\Users\Administrator> net use \\192.168.37.129\samba /del
\\192.168.37.129\samba 已经删除。

PS C:\Users\Administrator> net use
会记录新的网络连接。

列表是空的。

PS C:\Users\Administrator>

net use * /del删除全部的连接记录。

PS C:\Users\Administrator> net use * /del
你有以下的远程连接:

                    \\192.168.37.129\samba
继续运行会取消连接。

你想继续此操作吗? (Y/N) [N]: y
命令成功完成。

PS C:\Users\Administrator>

3、在Windows中重新添加连接配置

按添加连接配置在Windows中重新添加连接。

连接问题 2

image.png
不允许使用不同的用户名多重连接访问同一个共享资源。

1、在Ubuntu中删除多余的Samba用户

在Ubuntu中删除多余的Samba用户

sudo pdbedit -L
sudo pdbedit -x [username]

重启Samba服务。

sudo systemctl restart smbd nmbd

2、删除Windows连接Linux的Samba服务缓存

打开PowerShell,查看网络共享资源连接。

net use

删除网络共享连接记录。

net use \192.168.37.129\samba /del

3、在Windows中重新添加连接配置

添加连接配置在Windows中重新添加连接。

使用root用户访问共享

1、在配置文件中添加root用户

编辑配置文件。

sudo vim /etc/samba/smb.conf

在配置文件中添加root用户。

[share]
  comment = File share
  path = /home/user0/share
  available = yes
  browseable = yes
  valid users = user0,root	# 添加root用户
  read only = no
  writable = yes

重启samba服务。

sudo systemctl restart smbd nmbd

2、添加root为Samba用户

添加root为samba用户。

sudo pdbedit -a root

3、在Windows中以root用户登录

输入root密码,点确定。
image.png


参考

Distribution-specific Package Installation - SambaWiki
SMB小传 —— SMB网络文件系统协议介绍-阿里云开发者社区 (aliyun.com)
定义 SMB 及其安全注意事项 - Training | Microsoft Learn
smb_百度百科 (baidu.com)
smb_360百科 (so.com)
SMB协议简介-CSDN博客
samba(软件)_百度百科 (baidu.com)
windows下访问虚拟机的两种方式
samba的配置文件/etc/samba/smb.conf 笔记240722-CSDN博客
windows如何访问Linux系统通过Samba协议共享的文件?_windows 访问samba-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值