# Samba en Termux - Documentacion > Actualizado: 2026-03-24 ## Instalacion rapida ```bash git clone https://devops.ingeniumcodex.com/andresgarcia0313/termux-samba.git cd termux-samba bash install.sh ``` El instalador: 1. Instala `samba` y `python-zeroconf` 2. Crea directorios de config 3. Copia `smb.conf` y `mdns-publish.py` 4. Crea usuario Samba (pide usuario y contrasena) 5. Agrega autostart y aliases a `.bashrc` 6. Inicia ambos servicios ## Archivos del repo | Archivo | Proposito | |---------|-----------| | `smb.conf` | Config principal de Samba | | `mdns-publish.py` | Script de descubrimiento en red (SSH + SMB) | | `install.sh` | Instalador automatico | | `bashrc-snippet.sh` | Autostart + aliases para .bashrc | | `.gitignore` | Excluye datos runtime (logs, pids, private) | --- ## 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 ```bash # 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):** ```cmd 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: ```bash 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: ```bash 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`: ```bash # 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: ```bash 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]`.