Servidor Samba

Es una implementación libre del protocolo de archivos compartidos de Microsoft Windows (antiguamente llamado SMB, renombrado recientemente a CIFS) para sistemas de tipo UNIX. De esta forma, es posible que ordenadores con Linux o Mac OS X se vean como servidores o actúen como clientes en redes de Windows.


Veamos cómo compartir carpetas en Ubuntu y que éstas se vean desde computadores con Windows. En primer lugar instalamos Samba en Ubuntu escribiendo en el terminal lo siguiente:

sudo apt-get install samba smbclient

A continuación vamos a Sistema/Administración/Carpetas compartidas y hacemos clic sobre el botón "Añadir" para compartir una carpeta.

En la primera opción seleccionaremos la carpeta que vamos a compartir. En la segunda opción escogeremos "Redes Windows (SMB)". En la tercera pondremos el nombre con el cual compartiremos la carpeta. Marcaremos la casilla de "Sólo lectura" si no queremos que se creen o copien archivos en la carpeta que vamos a compartir.

A continuación hacemos clic sobre la pestaña "Propiedades generales" y en "Dominio/Grupo de trabajo" escribimos el nombre del grupo de trabajo del equipo. No marcaremos la casilla "Este equipo es un servidor WINS"

El siguiente paso será añadir un usuario a la lista de usuarios de Samba con la siguiente orden:

sudo smbpasswd -a nombre_usuario

Le pondremos la misma contraseña que tiene el usuario en el sistema.

Reiniciamos Samba para que los cambios tengan efecto:

sudo /etc/init.d/samba restart

Bien, ya tenemos la carpeta compartida y podremos acceder a ella desde Windows. En Windows veremos que en los equipos del grupo de trabajo aparece el equipo con Ubuntu. Al hacer doble clic sobre el equipo nos pedirá el nombre de usuario y contraseña (tendremos que poner el nombre de usuario y contraseña del usuario que hemos añadido en Samba)

Carpeta Privada

Editamos el archivo de configuración

sudo nano /etc/samba/smb.conf

Al final del archivo añadimos algo como:

[Privada]

path = /home/juaramir/Samba/privado

comment = Privada

guest ok = no

browseable = Yes

public = yes

read only=yes

write list=usuario #(aquí se ponen todos los usuarios que pueden escribir en caso de que “read only=yes” esté habilitado)

fuente: http://www.alejandrox.com y http://tuxapuntes.com

Compartir carpeta pública sin contraseña

Creamos la carpeta que vamos a compartir. Un usuario externo que tiene acceso al equipo a través de Samba, el sistema le da como nombre de usuario nobody y como nombre de grupo nogroup, por lo que hacemos propietarios de esta carpeta a los usuarios externos.

sudo mkdir /mnt/publica

sudo chmod 777 /mnt/publica

sudo chown nobody:nogroup /mnt/publica

Editamos el archivo de configuración

sudo nano /etc/samba/smb.conf

Añadimos o modificamos las siguientes directivas. Workgroup será el nombre del grupo de trabajo (en caso de no formar parte de un entorno de dominio) y permitimos el acceso a invitados.

[global]

workgroup = WORKGROUP

usershare allow guests = yes

Establecemos el recurso compartido.

[NombreRecursoCompartido]

comment = Mi recurso compartido

path = /mnt/publica

browseable = Yes

writeable = Yes

public = yes


security = SHARE

Guardamos el archivo de configuracion /etc/samba/smb.conf, con Ctrl+O no cero (0), y Ctrl + X para salir.

  • browseable: Atravesar y navegar entre las subcarpetas del recurso compartido.

  • writeable: Escribir en el recurso compartido.

  • public: el sinónimo de "guest ok", permite el ver y acceder al recurso comapartido de manera pública.

  • security: Por defecto suele estar comentado como "; security = user", permite que se pueda acceder sin establecer ningún nombre de usuario.

La directiva "security" es la que realmente permita un acceso tipo invitado desde cualquier otro sistema que no sea Linux ya se Windows o MacOS.

Debe colocarse sin espacios y al final del fichero de configuración smb.conf, un salto de línea después del último recurso compartido.

Aclaro que según los desarrolladores de Samba no recomiendan el uso de esta directiva por motivos de seguridad. https://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-rg-es-4/s1-samba-security-modes.html.

Por último reiniciamos nuestro servidor samba con:

sudo /etc/init.d/samba restart

Fuente: http://ramalave.blogspot.cl/2012/11/instalar-samba-y-compartir-carpetas-sin.html y https://www.zonasystem.com/2019/08/compartir-recursos-samba-sin-usuario-y-sin-password.html

Modificar el grupo de trabajo

sudo nano /etc/samba/smb.conf

Buscamos la línea que diga algo como: workgroup = WORKGROUP y reemplazamos WORKGROUP por el nombre de nuestro grupo de trabajo.

Luego ve a la línea donde especifica el tipo de seguridad o busca security.

####### Authentication #######

# "security = user" is always a good idea. This will require a Unix account

# in this server for every user accessing the server. See

# /usr/share/doc/samba-doc/htmldocs/Samba3-HOWTO/ServerType.html

# in the samba-doc package for details.

# security = user

Debemos descomentar la línea para esto borra el gato (#) al inicio de esta.

####### Authentication #######

# "security = user" is always a good idea. This will require a Unix account

# in this server for every user accessing the server. See

# /usr/share/doc/samba-doc/htmldocs/Samba3-HOWTO/ServerType.html

# in the samba-doc package for details.

security = user

Guarda los cambios y cierra el editor de textos. Reiniciamos Samba ejecutando en la Terminal:

sudo /etc/init.d/samba restart

Para probar la correcta sintaxis del archivo de configuración

Utilizamos la aplicación testparm, la cual verifica la configuración y despliega las carpetas compartidas en éste equipo.

sudo testparm

Permisos

Los usuarios que ingresan a un recurso público, el sistema le da como nombre de usuario nobody y como nombre de grupo , es así como podemos cambiar el nombre de usuario y nombre de grupo a nuestras carpetas, con el fin de que el sistema también sepa quien es el propietario de esa carpeta.

# chown nobody:nogroup /home/publico

# sudo chmod 755 /home/public #(con escritura en la carpeta)

o

# chown nobody:nogroup /home/publico

# chmod 555 /home/publico #(sin escritura en la carpeta)

y además debemos decirle a Samba que se lo permita (acuérdate que para que un permiso sea válido, tanto el sistema como Samba deben estar de acuerdo).

Seguridad

Mapear unidades de red en Linux

Voy a explicar paso a paso como podemos mapear unidades de red en Linux, para poder tener acceso al contenido.

Para el caso, son directorios compartidos en un Windows Server 2008, a lo que necesito tener acceso siempre, por lo que vamos a añadirlo al fstab, para que casa inicio del sistema se monte automáticamente (se asume que samba ya esta instalado)

Editamos el fstab.

# nano /etc/fstab

Añadimos una nueva línea al final del archivo, en donde tenemos que poner la información con el siguiente esquema.

//ip-equipo-windows/carpeta-compartida /ruta-punto-montaje auto,user,username=nombre-usuario,password=password-usuario 0 0

Ejemplo:

//10.0.2.15/publico /mnt/publico/ auto,user,username=administrador,password=inicial 0 0

Reiniciamos el fstab y podremos observar que ya tenemos la nueva unidad mapeada.

# mount -a

Cambiar contraseña de un dominio Windows

Para cambiar la contraseña de un usuario de dominio de Windows no es necesario ir a un PC Windows sino que se puede hacer desde el propio Linux. Para hacerlo sólo hay que abrir un terminal y ejecutar este comando:

# smbpasswd -r WindowsDC -U nombreUsuario

Donde WindowsDC es en este caso la dirección del controlador de dominio de Windows y nombreUsuario el usuario en el dominio.

Al ejecutar el comando pedirá la antigua contraseña en primer lugar y posteriormente pedirá la nueva.

Una vez hecho esto ya podemos hacer login con la nueva contraseña.

Agregar usuario

Suele pasar que cuando entras desde windows a una carpeta compartida en Linux, te pide usuario, para arreglar esto, puedes hacer lo siguiente.

# smbpasswd -a tu_usuario

Si deseas le pones contraseña por motivos de seguridad, y si no necesitas la contraseña solo dale Enter.

Cambiar contraseña usuario

Ahora que ya tenemos compartiendo la carpeta, nos queda crear un nombre de usuario y contraseña en el servidor Samba para que el computador con Windows pueda acceder a dicha carpeta, para ello abrimos una consola e introducimos:

# useradd -s /sbin/nologin usuario-windows

Donde usuario-windows es el usuario que va a acceder a la carpeta en Windows. Si /sbin/nologin no existe, probar con /usr/sbin/nologin.

Si no encuentras el archivo nologin, también puedes crear tu usuario normalmente y luego ejecutar el siguiente comando.

# passwd -d usuario-windows

A continuación introducimos:

# smbpasswd -a usuario-windows

Y nos pedirá la contraseña que queramos asignar a dicho usuario.

Reiniciar samba

Luego de efectuar algún cambio en el archivo /etc/samba/smb.conf debemos reiniciar samba, para ello:

# /etc/init.d/samba restart

Con todo lo anterior deberíamos ser capaces de entrar desde un equipo con windows o linux a la carpeta /home/public sin necesidad de tener nombre de usuario ni password.

Acceso a los recursos compartidos

Desde Windows

Para conectarnos a la carpeta compartida desde Windows colocamos en la barra de direcciones de alguna ventana la dirección IP del equipo y el nombre del directorio compartido (el nombre que pusimos en la configuración de samba, no necesariamente el del directorio real.

\\10.0.2.15\publico

Desde Linux

Debemos instalar el paquete samba-client. Luego, abrimos una carpeta y colocamos en la barra de direcciones:

smb://10.0.2.15/publico/

o

smbclient //10.0.2.15/publico/

Donde 10.0.2.15 es "la IP privada" del equipo Linux que contiene a la carpeta /home/public.