termux-samba/README.md

6.1 KiB

Samba en Termux - Documentacion

Actualizado: 2026-03-24

Resumen

Samba 4.20.8 corriendo en Termux (Android) con descubrimiento automatico en red local via mDNS. Compatible con Windows 11, Kubuntu 24 y macOS.

  • Nombre en red: MOVIL
  • Puerto: 4450 (445 requiere root, no disponible en Termux)
  • Protocolo: SMB2/SMB3 con cifrado y signing
  • Usuario: andres
  • Autostart: Via .bashrc al abrir Termux

Archivos de configuracion

Archivo Proposito
~/.config/samba/smb.conf Config principal de Samba
~/.config/samba/private/ Base de datos de usuarios (tdbsam)
~/.config/samba/samba.log Log de actividad
~/.config/samba/lock/ Lock files para browsing
~/.config/samba/state/ Estado interno
~/.config/samba/cache/ Cache
~/.local/bin/mdns-publish.py Script que publica SSH + SMB via mDNS

Shares disponibles

Share Ruta Android Contenido
Archivos /storage/emulated/0/Archivos Desarrollo, documentos de trabajo
Home $HOME Home de Termux (configs, scripts)
Downloads /storage/emulated/0/Download Descargas del navegador/apps
Documents /storage/emulated/0/Documents Documentos Android
DCIM /storage/emulated/0/DCIM Fotos y videos de camara
Movies /storage/emulated/0/Movies Peliculas

Conexion desde otros equipos

Kubuntu 24 / KDE Dolphin

El dispositivo aparece automaticamente en Red del panel lateral como "movil" gracias al servicio mDNS _smb._tcp.

Tambien se puede acceder manualmente:

smb://movil.local:4450/
smb://movil.local:4450/Archivos

Credenciales: andres / asde71.4

Kubuntu 24 / Terminal

# Descubrir el servicio
avahi-browse -rt _smb._tcp

# Listar shares
smbclient -L movil.local -p 4450 -U andres

# Acceder a un share
smbclient //movil.local/Archivos -p 4450 -U andres

# Montar como filesystem
sudo mount -t cifs //movil.local/Archivos /mnt/movil \
  -o port=4450,username=andres,password=asde71.4,vers=3.0

Windows 11

Windows no soporta puertos SMB alternativos de forma nativa. Opciones:

Opcion A - Mapear con netsh (requiere admin):

netsh interface portproxy add v4tov4 listenport=445 listenaddress=127.0.0.1 connectport=4450 connectaddress=192.168.1.108
net use Z: \\127.0.0.1\Archivos /user:andres asde71.4

Opcion B - Usar la IP directa desde Explorador:

\\192.168.1.108:4450\Archivos

(Nota: no todos los builds de Win11 soportan esta sintaxis)


Descubrimiento en red (mDNS / DNS-SD)

Como funciona

El script ~/.local/bin/mdns-publish.py publica dos servicios via Zeroconf (mDNS):

Servicio Tipo DNS-SD Puerto Proposito
SSH _ssh._tcp.local. 8022 Acceso remoto por SSH
Samba _smb._tcp.local. 4450 Compartir archivos SMB

Ambos se publican bajo el hostname movil.local.

Script: mdns-publish.py

Ubicacion: ~/.local/bin/mdns-publish.py Dependencia: pip install zeroconf Autostart: Via .bashrc (lineas 34-37)

El script:

  1. Detecta la IP local del dispositivo
  2. Registra los servicios SSH y SMB en la red multicast mDNS
  3. Se mantiene corriendo en background (daemon)
  4. Limpia los registros al recibir SIGINT/SIGTERM

Verificar que esta publicando

Desde Termux:

python3 -c "
from zeroconf import Zeroconf, ServiceBrowser
import time
class L:
    def add_service(self, zc, t, n):
        info = zc.get_service_info(t, n)
        if info:
            a = '.'.join(str(b) for b in info.addresses[0])
            print(f'{n} -> {a}:{info.port}')
    def remove_service(self, *a): pass
    def update_service(self, *a): pass
zc = Zeroconf()
ServiceBrowser(zc, '_smb._tcp.local.', L())
ServiceBrowser(zc, '_ssh._tcp.local.', L())
time.sleep(3)
zc.close()
"

Desde Kubuntu:

avahi-browse -rt _smb._tcp

Resultado esperado:

movil  →  movil.local  →  192.168.1.x:4450

Autostart en .bashrc

Samba y mDNS se inician automaticamente al abrir Termux. Extracto relevante de ~/.bashrc:

# Iniciar Samba si no esta corriendo
if ! pgrep -x smbd > /dev/null; then
    smbd -D -s ~/.config/samba/smb.conf 2>/dev/null
fi

# Iniciar mDNS (movil.local) si no esta corriendo
if ! pgrep -f mdns-publish.py > /dev/null; then
    nohup python ~/.local/bin/mdns-publish.py > /dev/null 2>&1 &
    disown
fi

No se usa Termux:Boot (no funciona). Se inicia al abrir la primera sesion de Termux.


Aliases de gestion

Alias Accion
smb-start Iniciar Samba
smb-stop Detener Samba
smb-restart Reiniciar Samba
smb-status Ver si esta corriendo
smb-log Ver ultimas 50 lineas del log
mdns-status Ver si mDNS esta corriendo
mdns-restart Reiniciar mDNS
mdns-stop Detener mDNS

Parametros de compatibilidad

Parametro Valor Motivo
server min protocol SMB2 Win11 y Kubuntu 24 ya no usan SMB1
server max protocol SMB3 Maximo rendimiento y cifrado
smb encrypt desired Win11 lo prefiere, negocia automaticamente
server signing desired Win11 lo exige desde 2024
unix charset UTF-8 Acentos en nombres de archivo
dos charset CP850 Compatibilidad Windows
use sendfile yes Rendimiento en transferencias
aio read/write size 16384 I/O asincrono para archivos grandes

Troubleshooting

"Connection refused" desde otro equipo

  1. Verificar que smbd corre: smb-status
  2. Verificar puerto: ss -tlnp | grep 4450
  3. Verificar firewall Android: Abrir ajustes WiFi, verificar que no hay restricciones

No aparece en Dolphin (Red)

  1. Verificar mDNS: mdns-status
  2. Desde Kubuntu: avahi-browse -rt _smb._tcp (debe mostrar "movil")
  3. Si no aparece, reiniciar: mdns-restart
  4. Acceso manual: smb://movil.local:4450/ en barra de Dolphin

"NT_STATUS_LOGON_FAILURE"

Resetear password:

printf 'asde71.4\nasde71.4\n' | smbpasswd -L -s -c ~/.config/samba/smb.conf andres

Acentos se ven mal

Verificar que unix charset = UTF-8 esta en smb.conf seccion [global].