smb协议简单配置

背景

本来使用ftp协议在手机和电脑之间方便的传输文件,可是有些时候比如视频,或者想要编辑手机上的文件,只能 先下载下来处理,然后再上传回去。深深感到ftp协议的不便,于是了解到smb协议,这种协议可以让windows电脑之间访问修改,甚至运行手机的储存,抛开速度不谈使用体验犹如本地存储。

smb文件协议

SMB(Server Message Block)文件协议是一种网络文件共享协议,最初由IBM在1983年开发,用于在局域网(LAN)中共享文件、打印机、串行端口和通信资源。后来,微软对其进行了扩展和改进,并将其集成到Windows操作系统中,成为Windows网络文件共享的核心协议。

优势

  1. 跨平台支持 :SMB协议不仅支持Windows,还可以通过Samba等软件在Unix/Linux系统上实现,从而实现跨平台文件共享。
  2. 安全性 :SMB协议支持用户认证和访问控制列表(ACL),可以确保只有授权用户才能访问共享资源。
  3. 文件锁定 :SMB支持文件锁定机制,防止多个用户同时修改同一个文件,避免数据损坏。
  4. 高效传输 :SMB协议经过多次优化,支持批量读取和写入操作,提高了文件传输效率。
  5. 丰富功能 :除了基本的文件共享,SMB还支持打印机共享、命名管道、邮件槽等功能,提供了丰富的网络资源共享能力。

此次配置通过在安卓手机中的termux配置samba 服务来实现手机与电脑的文件共享

安装samba

通过pkg直接安装samda:

1
pkg install samba

配置samba

我们通过命令:

1
mkdir $PREFIX/etc/samba

创建一个存放samba配置文件的文件夹

1
vim $PREFIX/etc/samba/smb.config

创建并编辑samba的配置文件

我们在其中添加以下内容:

1
2
3
4
5
6
7
8
[global]
workgroup = WORKGROUP
security = user
passdb backend = tdbsam
smb ports = 4445
[storage]
path = /data/data/com.termux/files/home/storage/shared
writable = yes
  • [global]:全局设置部分,适用于所有共享资源。

  • workgroup = WORKGROUP

    • 含义 :指定Samba服务器所属的工作组名称。
    • 作用 :在网络浏览器中显示Samba服务器的工作组,便于网络中的其他计算机发现和访问。
  • security = user

    • 含义 :设置Samba的安全模式。
    • 作用user模式表示用户级安全,每个用户必须提供用户名和密码才能访问共享资源。其他可选值包括 share(共享级安全)、domain(域级安全)和 ads(Active Directory安全)。
  • passdb backend = tdbsam

    • 含义 :指定Samba使用的密码数据库后端。
    • 作用tdbsam表示使用TDB(Trivial Database)作为密码数据库。其他可选值包括 ldapsam(LDAP后端)、mysql(MySQL后端)等。
  • smb ports = 4445

    • 含义 :指定Samba服务器监听的端口号。
    • 作用 :默认情况下,Samba使用端口445和139。通过设置 smb ports,可以更改Samba监听的端口号。在此示例中,Samba将监听端口4445。
    • 这里由于termux的服务没有root权限无法监听1024以下的端口,所以我们这里指定监听4445
  • [storage]

    • 含义 :定义一个共享资源的名称。在网络中,这个共享资源将显示为 storage
    • 作用 :用户在访问Samba服务器时,会看到一个名为 storage的共享文件夹。
  • path = /data/data/com.termux/files/home/storage/shared

    • 含义 :指定共享资源在服务器上的实际路径。
    • 作用 :这个路径指向服务器上的一个目录,即 /data/data/com.termux/files/home/storage/shared。当用户访问 storage共享资源时,他们实际上访问的是这个目录。
  • writable = yes

    • 含义 :指定共享资源是否可写。
    • 作用yes表示用户可以在这个共享目录中创建、修改和删除文件。如果设置为 no,则共享目录为只读,用户只能查看文件,不能进行写操作。

如果你想要同时映射多个目录,我们可以仿照[storage]再添加一个存储。样例如下:

1
2
3
4
5
6
7
8
9
10
11
[global]
workgroup = WORKGROUP
security = user
passdb backend = tdbsam
smb ports = 4445
[storage]
path = /data/data/com.termux/files/home/storage/shared
writable = yes
[blog]
path = /data/data/com.termux/files/home/
writable = yes

那么当你通过访问的时候,就可以同时看见两个共享目录:

1729577942392

注意:如果smbd 服务启动失败,可以去路径:/data/data/com.termux/files/usr/var/log/samba/log.smbd 查看日志

添加用户

现在我们配置好了smb还需要添加用户才能够登录smb服务

我们再终端中输入:

1
pdbedit -a -u <usr_name>

然后输入两次密码确认,就创建好用户了

同时为了windows访问时省略端口号,我们讲445的端口映射到4445:

1
2
sudo iptables -t nat -A PREROUTING -p tcp --dport 445 -j REDIRECT --to-port 4445
sudo iptables -t nat -A OUTPUT -p tcp --dport 445 -j REDIRECT --to-port 4445

第一条命令:将所有进入本机、目标端口为 445 的 TCP 数据包重定向到端口 4445。

第二条命令:将所有本机生成、目标端口为 445 的 TCP 数据包重定向到端口 4445。

最后我们只需要通过命令:

1
smbd

来开启smbd服务就ok了。

如果想要关闭smbd可以通过:

1
killall smbd

添加公共文件夹

如果不希望密码登录,希望创建一个可以与别人共享的网络位置,可以通过public参数实现:

1
2
3
4
5
[name]
comment = public
path = 文件路径
public = yes
read only = no

win11 添加smb站点

在目录地址输入 \\+ip尝试能否连接到手机

1729578624497

正常的话会弹出让你输入用户名和密码登录,成功的话就说明smb服务正常运行。

也可以通过添加一个网络位置来将其固定到主页面:

1729578835124

需要注意的是

1729579702236

这里还需要在后面写明你要添加哪个位置,然后只需要点击下一步最后输入用户名密码登录即可。


smb协议简单配置
http://blog.ulna520.com/2024/10/22/smb协议简单配置_20241022_135439/
Veröffentlicht am
October 22, 2024
Urheberrechtshinweis