0


【原创】Android手机使用Termux搭建Samba服务器,连接外接SSD,制作简易NAS

前言

Termux真是个好东西,把Android手机当Linux服务器来用,手机还有一个特点就是超低的功耗,我的小米9待机2瓦,满载4.5瓦,秒杀市面上所有x86_64架构低功耗主机,还有一点稳定性,手机作为平时24小时不关机的玩意,还被人长时间各种折腾还不坏的东西,稳定性确实相当可以了,如果那它来做NAS岂不美哉?

淘汰手机做服务器有这些好处:
1、耗电量极低,终极节能方案
2、0噪音
3、纯固态硬盘,速度快
4、超级超级便携(虽然无需携带)
5、无需购买UPS,自带
6、无需连接显示器,自带
7、发热量低,放铁板上即可解决散热,无需额外散热设备
8、无需网线,WIFI6速度极快
9、占地面积极小,家里随便一个犄角旮旯就能开服
10、成本极低,淘汰手机几乎没有成本,二手翻新机价格也相当便宜

有人说性能不够,瞎说!拿我写的jcpu-benchmark跑一下分就知道了,单核成绩已经吊打老E5处理器了,多核甚至和低端E5一较高下,开个Samba服务器要什么性能,我连MC服务器都试过,开服都能带得动。

Java版CPU性能测试工具: 该项目借鉴了SuperPI的CPU性能计算方式,通过多轮迭代估算出当前CPU的性能成绩。由于项目由Java编写,因此可以在各种平台都能顺利执行。Java版的CPU Benchmark。欢迎大家前来维护该项目。

准备材料

1、一台安装了Magisk后可以获取到root权限的手机

2、Termux APP

3、一个固态硬盘

4、硬盘盒

5、OTG+PD充电二合一接口

6、USB Hub(可选),可接多个硬盘

7、Filezilla Client

如图所示:

Termux准备阶段

由于我搞这玩意走了很多弯路,耗时比较长,目前步骤全部靠回忆,可能有疏漏,请原谅,如果有问题的地方请及时提出,我会及时修改

Termux去Github上下载即可,这里不再赘述

1、切换源

termux-change-repo

2、更新源

apt update

3、开启共享目录

termux-setup-storage

这里会手机弹出是否运行使用存储,打开即可

4、查找自己的用户名和修改密码

whoami
passwd

安装SSH,远程连接手机

# 安装openssl
pkg install -y openssl
# 安装openssh
pkg install -y openssh

安装完成后查看手机ip地址

ifconfig

启动SSH远程连接,端口号为8022

sshd

使用FinalShell连接手机

其中ip地址就是通过ifconfig得到的,端口8022是默认端口,用户名通过whoami得到,密码通过passwd自行修改得到,这样我们就能通过电脑连接手机了。

至于为什么要这么做,因为后面命令多得很,要是靠手指在手机上敲就太麻烦了!而且这里会用到u0_xxx普通用户和root用户,手机没法开多个窗口操作。

获取root,安装Samba

pkg install root-repo
su

安装完成后输入su,手机如果有Magisk,就会提示是否赋予Termux root权限,这个当然选择是

如果没有Magisk,那很遗憾,Termux无法读取外部存储,也就无法读取外接的SSD中的数据了,这像下图所示:

安装Samba

pkg install samba

恕我直言,我真是没想到Termux的系统仓库里真的会有Samba,就连AI都告诉我要去手动编译源码才行。

安装完成后Samba是不会启动的,当然现在也不要启动Samba,因为根本没有配置文件。

调整Samba配置文件

整个Samba说到底就一个配置文件是核心,其他都是浮云,Termux仓库都有编译完成的Samba了,算是帮我们解决了90%的难题了。

Samba配置文件的位置

这里要请到我的老朋友Filezilla

通过站点管理器新建一个站点,协议使用SFTP(熟悉Linux的小伙伴应该再熟悉不过了),填上手机的ip、端口(8022)以及用户名、密码就能通过SFTP连接到手机了。

进入路径:

/data/data/com.termux/files/usr/share/doc/samba

里面有一个smb.conf.example文件,把它下载下来,这样你就不需要用到vi去改它了,因为改的东西实在太多了,就这一个配置文件我调了几小时啊!!!!不是看不见目录,就是打不开,要么就是不用用户名密码就能读取,目前你们能看到完整版都是我辛辛苦苦调出来的

smb.conf文件内容

以下是smb.conf文件所有的内容,注意文件名,要把.example去掉

# vim: filetype=samba
[global]
   ; these are very recommended to have, even if maybe superfluous
   workgroup = WORKGROUP
   unix password sync = no
   pam password change = no
   obey pam restrictions = no
   passwd program = /data/data/com.termux/files/usr/bin/true
   add user script = /data/data/com.termux/files/usr/bin/true
   add group script = /data/data/com.termux/files/usr/bin/true
   add user to group script = /data/data/com.termux/files/usr/bin/true
   add machine script = /data/data/com.termux/files/usr/bin/true
   delete user script = /data/data/com.termux/files/usr/bin/true
   delete user from group script = /data/data/com.termux/files/usr/bin/true
   delete group script = /data/data/com.termux/files/usr/bin/true
   rename user script = /data/data/com.termux/files/usr/bin/true
   name resolve order = lmhosts host bcast
   bind interfaces only = yes
   interfaces = 127.0.0.0/8 wlan0

   hosts allow = 192.168.0.
   server string = Samba on Termux
   security = user
   server role = standalone
   delete readonly = yes
   inherit permissions = yes

   ; Make smbd do less and announce nothing
   ; for automatic discovery, you may need to remove some of these
   local master = no
   preferred master = no
   lm announce = no
   multicast dns register = no
   host msdfs = no
   dns proxy = no
   allow dns updates = disabled
   dns update command = /data/data/com.termux/files/usr/bin/false
   server services = smb
   dcerpc endpoint servers = rpcecho

   ; if you disable NetBIOS, which enables automatic discovery, 1139 can be removed from smb ports
   ;disable netbios = yes
   ; remember: ports < 1024 cannot be bound to by non-root processes
   ; Windows can only see SMB servers on port 445, so if your phone is rooted
   ; use iptables to redirect requests for port
   ; 445 to, say, 4445 (capabilities may work instead. no clue)
   smb ports = 445 139
   max connections = 6
   max smbd processes = 8
   deadtime = 15

   ; disable guest access
   map to guest = Never
   restrict anonymous = 2

   ; basic attempt at performance tuning for my phone
   ; change as necessary for your device
   ;aio read size = 16384 
   aio write size = 0
   use sendfile = yes 
   min receivefile size = 16384
   socket options = TCP_NODELAY SO_KEEPALIVE
   oplocks = yes
   level2 oplocks = yes
   kernel oplocks = no
   strict locking = no
   max stat cache size = 1024

   ; turn off things that cannot be set on sdcardfs and vfat filesystems
   nt acl support = no
   unix extensions = no
   ea support = no
   store dos attributes = no
   map archive = no
   map hidden = no
   map readonly = no
   map system = no

   log file = /data/data/com.termux/files/usr/var/log/samba/log.%m
   log level = 0
   max log size = 50
   ;logging = syslog
   ;syslog only = yes
   ;syslog = 0
   enable core files = no

   ; disable printing support as much as possible
   load printers = no
   printing = bsd
   printcap name = /dev/null
   disable spoolss = yes
   show add printer wizard = no
   max print jobs = 0
   lpq command = /data/data/com.termux/files/usr/bin/false
   lprm command = /data/data/com.termux/files/usr/bin/false
   print command = /data/data/com.termux/files/usr/bin/false

#============================ Share Definitions ==============================
; remember to run termux-setup-storage first
[external]
   comment = microSD
   path = /mnt/media_rw/F2DB-002C
   vfs objects = aio_pthread
   aio_pthread:aio open = yes
   read only = no
   browseable = yes
   writable = yes
   guest ok = no
   fstype = exFAT
   admin users = dct
   valid users = dct
;   force group = media_rw
;   create mask = 0770
;   force create mode = 0770

[dct-home]
   comment = microSD
   path = /data/data/com.termux/files/home
   vfs objects = aio_pthread
   aio_pthread:aio open = yes
   read only = no
   browseable = yes
   writable = yes
   guest ok = no
   admin users = dct
   valid users = dct
;   force group = media_rw
;   create mask = 0770
;   force create mode = 0770

配置文件说明

21行:这里需要改成你的局域网的IP地址,否则无法使用

47行:Termux的默认配置文件中的端口为4445和1139,因为1000以下端口如果要使用必须使用root才行!普通用户使用1000端口会报错!然而Windows默认只能使用445端口,因此必须使用root用户才能完成本次博客中的内容!因此我这里已经改成成了445和139了,如果没有root权限则需要改回去!

102行:/mnt/media_rw/F2DB-002C是SSD自动挂载的路径,你们连上去后可能名称会有所不同,这个肯定是要改的!使用到root权限的MT管理器可以看到挂载后的文件路径

110、111、125、126行:这里需要注意了,我创建过一个叫dct的用户,你们可以改成别的,但是用户后面需要创建!

118行:这里写的是你Termux的根目录,你可以方便的去上传本地文件上去了,而不是使用Filezilla

上传smb.conf

使用Filezilla将smb.conf文件上传到

/data/data/com.termux/files/usr/etc/samba

这个目录下,/data/data/com.termux/files/usr/etc目录下默认没有samba目录,需要自行创建

创建Samba用户

我发现啊,这一步必须要root才行

也就是说,必须是root用户才能使用-a来添加Samba用户,没办法切换到root用户吧

su
cd /data/data/com.termux/files/usr/bin
# 这里的dct可以换成你自己的用户名
./smbpasswd -a dct

在输入两遍密码后,Samba用户就有了

启动Samba服务

这里必须用root启动,因为端口号是小于1000的

cd /data/data/com.termux/files/usr/bin
./smbd -s /data/data/com.termux/files/usr/etc/samba/smb.conf

查看Samba启动情况

ps -ef |grep smb

查看Samba日志

如果启动有问题,或者无法访问,可以找到Samba日志去找到问题原因,路径为:

/data/data/com.termux/files/usr/var/log/samba/log.smbd

Windows连接Samba

建议在此电脑右键,“添加一个网络位置”,Win11好像有bug,在地址栏输入可能会跳转不过去

输入你手机的IP地址,点击右边的“浏览”按钮

如果出现Samba中配置的目录,说明你已经成功了70%了,直接挂载目录爽歪歪

挂载的时候可能要求你输入用户名和密码,这里输入你自己smbpasswd -a的用户名和密码即可。

双击打开该目录,如果能顺利打开,恭喜!这项具有挑战精神的任务就成功了!你获得一个局域网内超低功耗还自带UPS的简易NAS了,性价比杠杠的!

要是失败了,建议你继续探索一番,或者来我的Q群170618278吹水,我这么个大忙人不一定有时间来帮你,嘻嘻!

标签: 智能手机 NAS Termux

本文转载自: https://blog.csdn.net/DCTANT/article/details/143245018
版权归原作者 DCTANT 所有, 如有侵权,请联系我们删除。

“【原创】Android手机使用Termux搭建Samba服务器,连接外接SSD,制作简易NAS”的评论:

还没有评论