需求背景
在对家用Nas不断地探索中,感觉不论用什么设备,都感觉费电+吵+不安全,直到我突然意识到,Android也是Linux。
实验设备
硬件设备:LG g8 操作系统:Android 10,已经root 操作软件:Termux,非Google Play版
操作步骤
安装Termux
需要注意请不要在Google Play下载此软件,会提示有功能限制。去github下载release或者F-Droid下载安装就可以了。
更换Termux源
更换源然后更新软件,选个离自己近的就可以。
termux-chgange-repo
pkg upgrade
安装sshd
为了操作方便,直接安装sshd,然后从其他电脑连接操作就可以了。
pkg install openssh #安装openssh
sshd #启动ssh服务端
id #查看自己的用户名,类似于u0_a**
passwd #为自己设置一个密码
ifconfig #查看自己的ip地址
ssh u0_a341@10.***.***.*** -p8022#远程连接,注意termux上的sshd默认端口是8022
提权
安装sudo,并用sudo任意执行一条命令,再手机上同意提权即可。
pkg install tsu
插入OTG,并修改读写权限
插入并安装成功OTG后,就可以在/storage/下查看到OTG的可读(注意,此时还不可写)目录。
然后mount重新mount下OTG,实现可写(我估计只需要mask=7就可以,不过这样也没问题,mount命令不是很熟练):
mount -o rw,multiuser,mask=7,derive_gid,default_normal,remount /storage/xxxx-xxxx
配置Samba
先安装必要的软件并且初始化存储:
pkg install samba
termux-setup-storage
然后开始修改配置文件(termux默认的samba配置文件是$PRIFIX/etc/samba/smb.conf),这个文件并不存在,需要手动创建一下,然后复制默认的samba配置来初始化这个文件:
mkdir$ PREFIX/etc/samba
cp /data/data/com.termux/files/usr/share/doc/samba/smb.conf.example $PREFIX/etc/samba/smb.conf
修改这个配置的storage节内容,把OTG的存储配置过去:
[storage]
path = /storage/xxxx-xxxx
writable = yes
结下来创建一个samba用户就可以了:
smbpasswd -L -a samba
最后由于Android不允许使用1024下面的端口,所以我们将termux的samba使用的4445端口映射到通用的445端口上去(这个时候root的用场就派上了):
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
使用termux执行smbd,就可以在各个samba客户端上来读写文件了。
整理成脚本
为了方便操作,将samba操作整理为脚本
touch $PREFIX/bin/samba
chmod +x $PREFIX/bin/samba
samba脚本的内容
#!/bin/bash
case $1 in
start)
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
smbd
;;
stop)
sudo kill -10 ``sudo ss -lntp | grep smbd | head -1 |awk '{print $4 " " $NF}'| awk -F "[: =,]" '{print $6 }'``
sudo iptables -t nat -D PREROUTING -p tcp --dport 445 -j REDIRECT --to-port 4445
sudo iptables -t nat -D OUTPUT -p tcp --dport 445 -j REDIRECT --to-port 4445
;;
restart)
sudo kill -10 ``sudo ss -lntp | grep smbd | head -1 |awk '{print $4 " " $NF}'| awk -F "[: =,]" '{print $6 }'``
sudo iptables -t nat -D PREROUTING -p tcp --dport 445 -j REDIRECT --to-port 4445
sudo iptables -t nat -D OUTPUT -p tcp --dport 445 -j REDIRECT --to-port 4445
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
smbd
;;
*)
echo 'Samba Service'
echo 'samba start'
echo 'samba stop'
echo 'samba restart'
esac