吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 359|回复: 1
收起左侧

[其他原创] 手机(移动)端termux中使用samba服务-教程&其他系统使用samba

[复制链接]
accompaniedher 发表于 2026-7-29 06:21
本帖最后由 accompaniedher 于 2026-7-29 07:24 编辑

个人文件站(局域网资源共享)

前言

资源链接:Github:手机终端Termux
无需多言请看VCR:

软件方案通过软件工具杜绝繁琐配置;不过作者未亲自体验过,并不清楚实际效果如何。

  • LocalSend(跨平台开源,最强推荐)  
    • 全平台:Windows/macOS/Linux/Android/iOS
    • 局域网点对点互传  - 不用登录、不用服务器、开箱即用
    • 支持:文件、文件夹、文字、剪贴板
    • 适合:临时快速传文件,不想配置任何服务。
  • Resilio Sync(原 Bittorrent Sync)  

    • P2P 同步,不经过服务器  
    • 多设备自动同步文件夹  
    • 支持:Windows/macOS/Linux/Android/iOS  
    • 适合:你想让多设备自动保持文件一致。

    samba协议

    SMB(Server Message Block)协议是由微软和因特尔联合制定的协议,主作为微软网络的通信(局域网文件和打印共享)协议;该协议工作于会话层、表示层和一小部分应用层,采用NetBIOS(运行在TCP/IP网络协议上服)的API应用接口;SMB的核心进程是nmbd(NetBIOS名称解析为IP地址并提供浏览服务,默认端口为139)和smbd(管理smb服务上共享目录与资源并校验权限与身份,默认的端口为445)。  

    samba配置了解

    服务名:在linux上分smbd和nmbd;在Windows统称LanmanServer
    配置文件:/etc/samba/smb.conf(Linux上);而Windows服务组件的均在注册表 / 组策略中
    用户配置:在Linux中分别由smbpasswd或pdbedit决定;而在windows中是由本地AD用户账户决定


    SMB工作流:发送 negport数据包 确定 SMB类型 => 客户端发送 session setup数据包 请求建立连接 => 服务器分配唯一用户UID进行权限确认 => 客户端发生 tree connect指令 请求资源 => 客户端发送共享资源连接并分配TID => 客户发送 tree diosconnect报文关闭共享

搭建samba

Windows系统搭建SMB

> 启动 SMB 功能
  • 方法一:打开"控制面" => 选择"程序" => 打开"启动或关闭 Windows 功能" => 勾选SMB/samba相关的功能
  • 方法二:Win+R键 打开"运行" => 输入optionalfeatures.exe => 勾选SMB/samba相关的功能
> 文件夹共享:
  • 右键需要共享的文件夹 => 选择"属性" => 在"共享"中选择"高级共享" => 勾选"共享此文件夹(s)"并设置"权限" => 设置您对应的用户权限(最好不要设置everyone或guest权限为"完全控制",这无密码的访问用户均可修改/读取共享资源文件)

注:Windows搭建的用户共享目录文件夹的SMB服务用户默认使用当前用户及密码(您创建的共享资源在C:\User\administrator中且计算机上存在多名用户,默认允许电脑其他账户用户进行登录,如果在上述"权限"中可用进行限定设置),如果您想指定用户密码,请创建新的用户和密码并为该用下的文件进行共享和权限设置

#### > 启动 SMB 功能(SMB 1.0/CIFS 文件共享支持+SMB Direct直接访问):

    win+r打开运行输入optionalfeatures在windows功能中勾选smb相关服务。  
> 查看本机局域网 IP:
    ipconfig
  • 搜索并打开"cmd"或"命令提示符" => 输入 ipconfig 获取 当前局域网IP地址(如:192.168.1.xx)
> Windows访问:
  • 在文件资源管理器explorer中输入 \192.168.1.xx\share
  • 其他设备/系统请参考下述[访问方式]()
windows上管理samba

刷新 NetBIOS 缓存
nbtstat

Linux系统搭建Samba

> 使用apt安装smaba服务:
sudo apt install samba
> 设置用户ac的samba服务密码:
sudo smbpasswd -a ac
> 在/etc/samba/smb.conf文件中为用户ac进行配置:
[share]
path = /home/ac/share
browseable = yes
read only = no
guest ok = no
create mask = 0644
directory mask = 0755
> 重启samba服务:
sudo systemctl restart smbd

手机端Termux搭建SMB服务

\n#!/bin/bash
set -euo pipefail
\n# 颜色定义(提升交互体验)
RED='\033[0;31m' #']'
GREEN='\033[0;32m' #']'
YELLOW='\033[1;33m'  #']'
BLUE='\033[0;34m' #']'
NC='\033[0m' # ']'重置颜色
\n# 全局变量
SHARE_DIR="\sdcard\ac"
SOURCE_BACKUP="/etc/apt/sources.list.bak"
ALIYUN_SOURCE="/etc/apt/sources.list"
\n# ====================== 核心函数:环境校验 ======================
function check_environment() {
    echo -e "\n${BLUE}=== 开始环境校验 ===${NC}"
        if command -v samba &>/dev/null; then
                echo -e "${RED}Samba已存在,您还需要:${NC}"
                echo -e "${GREEN}1.卸载Samba及其配置${NC}"
                echo -e "${GREEN}2.继续配置samba服务${NC}"
                echo -e "其他:退出"
                read -p "\n您的需求是(默认退出)?" exist_choice
                exist_choice=${exist_choice:-0}
                if [ "exist_choice" = "1" ] || [ "exist_choice" = "1." ]
                        uninstall_samba
                        exit 1
                elif [ "exist_choice" = "2" ] || [ "exist_choice" = "2." ]
                        switch_source
                        exit 1
                else
                        echo -e "感谢您的使用~"
                        exit 1
                fi
    \n# 1. 检查是否为root用户
    if [ "$(id -u)" -ne 0 ]; then
        echo -e "${YELLOW}警告:当前脚本未以root权限运行(sudo ./script.sh)${NC}"
    fi
    \n# 2. 检查系统发行版
    if [ -f /etc/os-release ]; then
        . /etc/os-release
        OS=$NAME
        VERSION=$VERSION_ID
        echo -e "${GREEN}✓ 系统检测:$OS $VERSION ${NC}"
    else
        echo -e "${YELLOW}警告:无法检测系统发行版,部分功能可能无法正常运行${NC}"
    fi
    \n# 3. 检查网络连通性
    if ping -c 1 -W 3 www.baidu.com &>/dev/null; then
        echo -e "${GREEN}✓ 网络连通信正常${NC}"
    else
        echo -e "${RED}错误:网络不通,请检查网络配置${NC}"
        exit 1
    fi
    \n# 4. 检查apt工具
    if command -v apt &>/dev/null; then
        echo -e "${GREEN}✓ APT包管理器已安装${NC}"
    else
        echo -e "${RED}错误:未找到APT包管理器,此脚本仅支持Debian/Ubuntu系统${NC}"
        exit 1
    fi
    echo -e "${BLUE}=== 环境校验完成 ===${NC}\n"
}
\n# ====================== 核心函数:源切换 ======================
function switch_source() {
    read -p "是否切换为阿里云软件源?(y/n,默认n):" switch_choice
    switch_choice=${switch_choice:-n}
    if [ "$switch_choice" = "y" ] || [ "$switch_choice" = "Y" ]; then
        echo -e "${BLUE}=== 开始切换软件源 ===${NC}"
        \n# 备份原有源
        if [ ! -f "$SOURCE_BACKUP" ]; then
            cp "$ALIYUN_SOURCE" "$SOURCE_BACKUP"
            echo -e "${GREEN}✓ 已备份原有软件源至 $SOURCE_BACKUP${NC}"
        fi
        \n# 写入阿里云源(适配Ubuntu 20.04/22.04)
        cat > "$ALIYUN_SOURCE" << EOF
deb http://mirrors.aliyun.com/ubuntu/$(lsb_release -cs) main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/$(lsb_release -cs) main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/$(lsb_release -cs)-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/$(lsb_release -cs)-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/$(lsb_release -cs)-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/$(lsb_release -cs)-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/$(lsb_release -cs)-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/$(lsb_release -cs)-security main restricted universe multiverse
EOF
        \n# 更新源缓存
        apt update && echo -e "${GREEN}✓ 阿里云源切换完成并更新缓存${NC}" || echo -e "${RED}× 源更新失败,请手动检查${NC}"
    else
        echo -e "${YELLOW}→ 跳过软件源切换${NC}"
    fi
}
\n# ====================== 核心函数:共享目录配置 ======================
function configure_share_dir() {
    read -p "是否配置共享目录?(y/n,默认y):" dir_choice
    dir_choice=${dir_choice:-y}
    if [ "$dir_choice" = "y" ] || [ "$dir_choice" = "Y" ]; then
        echo -e "${BLUE}\[\*\]配置共享目录: ${NC}"
        \n# 选择:创建新目录 or 使用现有目录
        read -p "请选择:1-创建新共享目录 2-使用现有目录(默认1):" dir_type
        dir_type=${dir_type:-1}
        if [ "$dir_type" = "1" ]; then
            read -p "请输入要创建的共享目录路径(默认 /sdcard/ac):" new_dir
            SHARE_DIR=${new_dir:-/sdcard/ac}
            \n# 创建目录并设置权限
            mkdir -p "$SHARE_DIR"
            chmod 777 "$SHARE_DIR"
            echo -e "${GREEN}✓ 已创建共享目录:$SHARE_DIR,权限设置为777${NC}"
        elif [ "$dir_type" = "2" ]; then
            \n# 循环验证现有目录是否存在
            while true; do
                                if [ "SHARE_DIR" ]; then
                                        echo -e "${GREEN}✓ 确认使用现有目录:$SHARE_DIR${NC}"
                                        break
                                fi
                read -p "请输入已存在的共享目录路径:" exist_dir
                if [ -d "$exist_dir" ]; then
                    SHARE_DIR=$exist_dir
                    echo -e "${GREEN}✓ 确认使用现有目录:$SHARE_DIR${NC}"
                    break
                else
                    echo -e "${RED}× 目录 $exist_dir 不存在,请重新输入${NC}"
                fi
            done
        else
            echo -e "${YELLOW}→ 输入无效,跳过共享目录配置${NC}"
            return
        fi
        \n# 可选:将共享目录写入/etc/fstab(开机挂载)
        read -p "是否将共享目录配置为开机自动挂载?(y/n,默认n):" mount_choice
        mount_choice=${mount_choice:-n}
        if [ "$mount_choice" = "y" ] || [ "$mount_choice" = "Y" ]; then
            \n# 检查fstab中是否已存在该目录
            if ! grep -q "$SHARE_DIR" /etc/fstab; then
                echo -e "\n# 共享目录自动挂载" >> /etc/fstab
                echo "$SHARE_DIR    none    defaults    0 0" >> /etc/fstab
                mount -a && echo -e "${GREEN}✓ 已配置开机自动挂载${NC}" || echo -e "${RED}× 挂载配置失败,请手动检查${NC}"
            else
                echo -e "${YELLOW}→ 共享目录已存在于fstab中,无需重复配置${NC}"
            fi
        fi
    else
        echo -e "${YELLOW}→ 跳过共享目录配置${NC}"
    fi
}
\n# ====================== 卸载Samba及其配置 ======================
function uninstall_samba(){
    \n# 删除开机挂载内容
        \n# 还原备份源
        if [ ! -f "$SOURCE_BACKUP" ]; then
                read -p "${GREEN}\[\*\] 是否还原备份源(y/n,默认n)?" scroll_back
                scroll_back=${scroll_back:-n}
                if [ "scroll_back" = "y" ] || [ "scroll_back" = "Y" ]; then
                        cp "$SOURCE_BACKUP" "$ALIYUN_SOURCE"
                        echo -e "${GREEN}✓ 已还原备份软件源至 $ALIYUN_SOURCE${NC}"
        fi
        \n# 卸载Samba及其依赖
        apt remove samba && apt purge
}
\n# ====================== 主流程 ======================
function main() {
    clear
    echo -e "${GREEN}==================== Termux一键Samba配置脚本 ====================${NC}"
    echo -e "Samba配置情况:"
    echo -e "======================================================${NC}\n"
    \n# 步骤1:环境校验
    check_environment
    \n# 步骤2:软件源切换(交互式)
    switch_source
    \n# 步骤3:共享目录配置(交互式)
    configure_share_dir
    \n# 完成提示
    echo -e "\n${GREEN}==================== 配置完成 ====================${NC}"
    echo -e "已执行操作总结:"
    echo -e "1. 环境校验:通过"
    echo -e "2. 软件源切换:$(if [ "$switch_choice" = "y" ]; then echo "已切换为阿里云源"; else echo "未切换"; fi)"
    echo -e "3. 共享目录配置:$(if [ "$dir_choice" = "y" ]; then echo "已配置为 $SHARE_DIR"; else echo "未配置"; fi)"
    echo -e "${NC}"
}
\n#### 启动主流程
main

注:如果您的Termux还没获取储存权限,请使用 termux-setup-storage 获取内部存储权限;请使用 termux-change-repo 命令选择可用源,如果网络仍不可达,请自行配置源地址,这里不做额外赘述。

> 更新相关包依赖:
pkg update && pkg upgrade -y
> 安装 smab 服务:
pkg install samba -y
> 查看samba版本:
smbd --version && nmbd --version
> 创建samba配置目录:
mkdir -p $PREFIX/etc/samba

使用 ls $PREFIX/etc/samba 命令查看是否存在(创建成功) #### &gt; 更新samba配置文件路径: smbd --configfile=$PREFIX/etc/samba/smb.conf;nmbd --configfile=$PREFIX/etc/samba/smb.conf

> 复制配置示例(若存在):



可使用 ls $PREFIX/share/samba 查看是否存在配置示例文件

    cp $PREFIX/share/samba/smb.conf.example $PREFIX/etc/samba/smb.conf
> 查看当前用户:
whoami

您可以使用 adduser new-user 命令创建本地用户,并根据提示设置密码

> 为当前用户添加 SMB 密码(两次输入进行确定):
smbpasswd -a $(whoami)
> 启用samba用户new-user:
smbpasswd -e new-user
> 查看已添加的samba用户:
 pdbedit -L
> 创建共享文件夹:
mkdir -p /sdcard/share
> 赋予目标文件夹可执行可读写权限(无法写入执行权限):
chmod 775 /sdcard/share

# 添加samba用户new-user权限到目录文件权限:
chown termux-smb:new-user /sdcard/share

> 备份samba核心配置文件
cp $PREFIX/etc/samba/smb.conf $PREFIX/etc/samba/smb.conf.bak
> 在$PREFIX/etc/samba/smb.conf文件中进行配置:
  • 方法一:使用nano进行编辑(nano编辑器支持复制粘贴)
    nano ~/../use/etc/samba/smb.conf

注:如果您的termux未安装nano,请使用 pkg install nano -y 命令进行安装

  • 在$PREFIX/etc/samba/smb.conf配置文件中复制粘贴以下配置(基础安全访问):
[global]
   workgroup = WORKGROUP
   map to guest = Bad User
   server min protocol = NT1
   server max protocol = SMB3
[share]
   path = /sdcard/share
   browseable = yes
   writable = yes
   guest ok = yes
   read only = no
   create mask = 0644
   directory mask = 0755
  • 方法二:复制示例配置并进行追加写入
    cp $PREFIX/share/doc/samba/smb.conf.example$PREFIX/etc/samba/smb.conf

  • 使用以下命令在$PREFIX/etc/samba/smb.conf配置文件末尾追加以下配置(将/sdcard/ac目录设置为共享文件夹,无需密码允许匿名访问):

    cat >> $PREFIX/etc/samba/smb.conf <<EOF
    [TermuxSMB]
    comment = Termux SMB Share
    path = /sdcard/ac
    browsable = yes
    writable = yes
    guest ok = yes
    guest only = yes
    create mask = 0777
    directory mask = 0777
    EOF
> 检查配置文件是否正确:
testparm
> 启动 SMB 服务:
smbd -D
> 手动启动Samba子服务nmbd解析为IP:
nmbd -D
> 查看 SMB 服务状态(查看smbd是否运行):
ps -ef | grep smb
> 查看本机局域网:
ifconfig

Android手机端访问:


注:使用Termux搭建的Samba服务访问地址应为:【IP地址】\TermuxSMB

  • 使用ES 文件浏览器进行访问:在"主页"中选择"我的网络" => 点击"局域网"进行"扫描" => 点击对应的设备服务输入用户密码即可访问
  • 其他设备/系统请参考下述访问方式

<font id="access">访问方式</font>

Windows的explrer文件资源管理器:\IP地址\share
macOS:smb://IP地址/share
Linux:smb://IP地址/share 或挂载

Android手机:

  • ES 文件浏览器:在"主页"中选择"我的网络" => 点击"局域网"进行"扫描" => 点击对应的设备服务输入用户密码即可访问
  • Solid Explorer、CX 文件管理器、NP 文件管理器
    iOS:"文件" App → 连接服务器 → smb://IP

免费评分

参与人数 1吾爱币 +7 热心值 +1 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Ljw5206 发表于 2026-7-29 10:37
致敬大佬
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-8-12 16:54

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表