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.