有时需要手机资料导入电脑中,或者电脑资料传到手机中,通过数据线传输时不时就资源忙断联,很难搞,有时有没有数据线,无线传输很繁琐,所以就想搭建一个手机共享文件服务,只要同处局域网就能随时访问手机内存,还可以当做移动硬盘使用,非常Nice!
1.手机安装 Termux ,默认使用 F-Droid 应用库安装,国内网速较差,直接搜索其他源安装

官网 github 下载安装:https://bgithub.xyz/termux/termux-app/releases/download/v0.118.3/termux-app_v0.118.3+github-debug_arm64-v8a.apk
2.更新源,安装 Samba 服务
termux-change-repo
选择国内源或亚洲源


更新
pkg update
安装 Samba
pkg install samba
安装后是无法运行的,因为默认是没有smb.conf 配置文件的,所以需要先建立conf文件
mkdir -pv $PREFIX/etc/samba
cp $PREFIX/share/doc/samba/smb.conf.example $PREFIX/etc/samba/smb.conf
3. 编辑 smb.conf
nano $PREFIX/etc/samba/smb.conf
只需修改想要共享的目录即可,其他不用改,如我的修改成这样:

还有其他硬盘照此格式添加。
注意!!!
Samba 使用的端口是 445 和 139 ,而 Termux 的默认配置文件中的端口为 4445 和 1139,因为未 ROOT 的手机 1023 以下的端口是没有权限使用的。
没有root权限的手机,这里修改map to guest=Never为map to guset= bad user,下面共享文件夹设置guest ok=yes,默认端口不要修改。
然后匿名登录,密码为空:
注意:访问地址一定要加上设置的共享文件夹名称,不加会显示用户名称登录,无论输入什么名称都无法成功登录!


如果是小米手机,可以申请解锁获取 ROOT 权限,安装 Magisk 后,这里修改成 445 和 139 端口,这里以高级权限运行 Samba ,后面继续。

4.添加 Samba 用户,并设置密码
smbpasswd -a 用户名
如果是已 ROOT 手机,安装 tsu后,使用如下命令
sudo -E smbpasswd -a 用户名
尝试运行
smbd
ps -ef|grep smb
如果输出 smbd 进程信息,表示成功运行:

我这里用的 ROOT 权限运行的结果。
Windows 文件浏览器不支持端口直接访问samba,用户在文件浏览器中输入:\\ip:4445 访问手机samba,会出错,需下载samba客户端工具来连接。
ROOT 用户直接输入:\\ip,即可访问,不用加端口号,Mac、Linux 用户输入 :smb://ip:4445,即可访问。

5.自动运行
Termux 终端会话结束后,重新进入又要重新运行一遍 smbd ,非常麻烦,尤其是有多项服务时。Termux 虽然没有service和systemd这样的服务管理进程,但也有简单易用的服务管理程序——Termux-Services。
pkg install termux-services
建立 Samba 自动运行目录脚本
mkdir -pv $PREFIX/var/service/samba
nano $PREFIX/var/service/samba/run
脚本内容如下
#!/data/data/com.termux/files/usr/bin/sh
exec smbd 2>&1
如果要以 ROOT 权限运行,脚本内容如下
#!/data/data/com.termux/files/usr/bin/sh
exec sudo -E smbd 2>&1
添加执行权限:
chmod +x $PREFIX/var/service/samba/run
启动:
sv up samba
设置为自动运行:
sv-enable samba
如是如是,随心所欲!
service 命令:
sv-enable cmd
sv-disable cmd
sv down cmd
sv up cmd
sv statuscmd
