> For the complete documentation index, see [llms.txt](https://books.spartan-cybersec.com/cppj/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://books.spartan-cybersec.com/cppj/transferencia-de-archivos/despliegue-de-servicio-smb.md).

# Despliegue de servicio SMB

Estas son algunas de las formas más comunes y variadas de desplegar un servicio SMB en diferentes entornos y plataformas. Cada método tiene sus propias ventajas y configuraciones específicas, por lo que puedes elegir el que mejor se adapte a tus necesidades.

## <mark style="color:green;">1.</mark> <mark style="color:green;"></mark><mark style="color:green;">**Impacket (Python)**</mark>

**Instalar impacket:**

```bash
pip install impacket
```

**Desplegar el servidor SMB:**

```bash
smbserver.py -smb2support <NombreDelCompartido> <Directorio>
```

Ejemplo:

```bash
smbserver.py -smb2support sharedfiles /tmp/share
```

## <mark style="color:green;">2.</mark> <mark style="color:green;"></mark><mark style="color:green;">**Samba (Linux)**</mark>

**Instalar Samba:**

```bash
sudo apt-get install samba
```

**Configurar Samba:**

Editar el archivo de configuración `/etc/samba/smb.conf` y agregar:

```bash
[sharedfiles]
   path = /tmp/share
   read only = no
   browsable = yes
```

**Iniciar el servicio Samba:**

```bash
sudo systemctl restart smbd
```

## <mark style="color:green;">3.</mark> <mark style="color:green;"></mark><mark style="color:green;">**SMBServer (Node.js)**</mark>

**Instalar SMBServer:**

```bash
npm install -g smb-server
```

**Desplegar el servidor SMB:**

```bash
smb-server --workgroup WORKGROUP --name MYSMBSERVER --shared sharedfiles=/tmp/share
```

## <mark style="color:green;">4.</mark> <mark style="color:green;"></mark><mark style="color:green;">**Windows SMB (compartir una carpeta)**</mark>

1. Crear una carpeta para compartir (por ejemplo, `C:\sharedfiles`).
2. Hacer clic derecho en la carpeta -> "Propiedades" -> "Compartir" -> "Compartir esta carpeta".
3. Configurar permisos según sea necesario.

## <mark style="color:green;">5.</mark> <mark style="color:green;"></mark><mark style="color:green;">**Python (usando pysmb)**</mark>

**Instalar pysmb:**

```bash
pip install pysmb
```

**Desplegar el servidor SMB (requiere script personalizado):**

```python
from smb.SMBServer import SMBServer

server = SMBServer("0.0.0.0", 445)
server.add_share("sharedfiles", "/tmp/share")
server.start()
```

## <mark style="color:green;">6.</mark> <mark style="color:green;"></mark><mark style="color:green;">**Docker (usando dperson/samba)**</mark>

**Instalar Docker (si no está instalado):**

```bash
sudo apt-get install docker.io
```

**Desplegar el servidor SMB:**

```bash
docker run -it -p 445:445 -v /tmp/share:/mount/sharedfiles dperson/samba -u "user;password" -s "sharedfiles;/mount/sharedfiles;rw"
```

## <mark style="color:green;">7.</mark> <mark style="color:green;"></mark><mark style="color:green;">**FreeNAS/TrueNAS**</mark>

1. Acceder a la interfaz web de FreeNAS/TrueNAS.
2. Configurar un nuevo recurso compartido SMB desde la sección de servicios.
3. Iniciar el servicio SMB.

## <mark style="color:green;">8.</mark> <mark style="color:green;"></mark><mark style="color:green;">**Windows PowerShell (creación y configuración de un recurso compartido)**</mark>

```powershell
New-SmbShare -Name "sharedfiles" -Path "C:\sharedfiles" -FullAccess Everyone
```
