Compartiendo con SAMBA

logo-sambaNo hay mal que por bien no venga. La crisis está haciendo cambiar de parecer a muchos directores de departamento de sistemas, sobre el enfoque que tenían que darle a sus servidores, ahora que a muchos de ellos les tocaba actualizar el sistema operativo.

GNU/Linux es un sistema robusto y flexible, capaz de soportar gran carga de trabajo y miles de usuarios. Unido a ser un sistema libre, con unos costes muchos más bajos. Ha resultado ser la formula mágica perfecta que muchos de los cabezas pensantes miraran hacia el Ñu y el Pingüino, para solucionar todos sus problemas.

Los servidores de ficheros son claves. Ya sea para una pequeña oficina con unos cuantos empleados, como para una gran multinacional con miles de trabajadores y delegaciones.

En el siguiente artículo trataremos la instalación y configuración de SAMBA. Un potente programa que faciltiará la compartición de ficheros y directorios para todos los sistemas, ya sean Microsoft Windows, MAC, Unix o GNU/Linux.

Y queremos ir mucho más allá de la simple compartición de un par de carpetas, llegando incluso a la ocultación de ficheros o carpetas según los permisos que tengan los usuarios.

Sobre SAMBA

SAMBA, según leemos en Wikipedia, es una implementación libre del protocolo SMB, que actualmente ha pasado a llamarse CIFS, para sistemas de tipo UNIX.

¿Cómo funciona?

SAMBA configura nuestras carpetas cómo recursos compartidas a través de la red.  Se diferencian los permisos de los archivos a nivel local, de los configurados para la compartición.

Ventajas sobre sus competidores

Son muchas, y la escritora Carla Schroder, los lista estupendamente en su libro «Redes en Linux. Guía de referencia«

  • Integra fácilmente hosts Linux en nuestra LAN
  • Nos libra de esquemas de licencia caros y anticuados y del miedo a los vigilantes de licencias.
  • Mayor estabilidad, fiabilidad y rendimiento.
  • Múltiples opciones de entorno de base de datos.
  • Comunidad y soporte.
  • Administración remota segura son SSH.
  • Sincronización fiable y eficiente de los servidores Samba de seguridad vía rsync.

¿Qué sistema y paquetes base necesitaremos para usar SAMBA?

  • GNU/Linux en cualquiera de sus variantes. Aquí trateremos las basadas en Debian y las basadas en Red Hat.
  • Samba 3 hacia delante.
  • MIT Kerberos 1.4 hacia delante.
  • OpenLDAP
  • Winbind 3.0.20 o más reciente.

Comenzemos con la instalación

En los sistemas basados en Debian el comando es el siguiente:

  1. apt-get -y update
  2. apt-get -y install samba samba-common samba-doc smbclient winbind

En los basados en Red Hat:

  1. yum -y update
  2. yum -y install samba samba-client samba-common

Para comprobar la versión que tenemos instalada:

  1. #Tanto en basados en Debian como Red Hat
  2. /usr/sbin/smbd --version
  3. /usr/sbin/winbindd --version

Para verificar la versión de Kerberos, los comandos son diferentes depende del sistema.

En Red Hat, Fedora o Centos

  1. rpm -q krb5-workstation

En Debian o Ubuntu

  1. dpkg -l | grep krb5

Os dejo una imagen de las comprobaciones en un sistema basado en Debian como Canaima:

Instalando-Samba-Canaima

Vale, ahora antes de continuar, tendremos que abrir los puertos en el cortafuegos. Si los tienes abiertos (No puede seeer!) ésta parte del tutorial no te hará falta.

Puedes comprobarlo con el siguiente comando:

  1. iptables -L -n

Si sale todo vacío es que tienes todos los puertos abiertos.

Si tienes el Firewall habilitado en el siguiente paso abriremos los puertos:

  • 135/tcp epmap
  • 137/tcp NetBIOS Servicio de nombres.
  • 138/tcp NetBIOS Servicio de nombres de datagramas.
  • 139/tcp NetBIOS Servicio de sesiones
  • 445/tcp para compartición de ficheros (Microsoft DS)

Tendremos que aplicar las siguientes reglas:

  1. iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 135:139 -j ACCEPT
  2. iptables -A INPUT -m state --state NEW -m udp -p udp --dport 135:139 -j ACCEPT
  3. iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT

Y guardamos.

  1. #En Debian
  2. iptables-save
  3.  
  4. #En RedHat
  5. service iptables save

Iniciando los servicios

En Debian cuando instalamos un servicio se activa automáticamente, pero no en Red Hat y similares. Los activaremos de la siguiente manera:

  1. chkconfig smb on
  2. chkconfig nmb on

Para parar, iniciar o reiniciar el servicio es de la siguiente manera:

  1. #Iniciar en Red Hat
  2. service smb start 
  3.  
  4. #Parar en Red Hat
  5. service smb stop
  6.  
  7. #Reiniciar en Red Hat
  8. service smb restart
  9.  
  10. #Iniciar en Debian
  11. service samba start
  12.  
  13. #Parar en Debian
  14. service samba stop
  15.  
  16. #Reiniciar en Debian
  17. service samba restart

Creando usuarios y grupos

Vamos a crear los usuarios y grupos de ejemplo que se accederán a los recursos compartidos.

Empezaremos creando un usuario root de Samba com el comando smbpasswd. Por seguridad recomendamos que se no se use la misma contraseña de usuario root del sistema.

  1. smbpasswd -a

Y creamos un grupo de trabajo

  1. groupadd userbits

Ahora añadimos un usuario:

  1. useradd --no-create-home -s /bin/false user1

De esta manera hacemos que el usuario no pueda acceder a la consola del servidor, además de no crearle carpeta dentro de home.

Le asignamos la contraseña:

  1. smbpasswd -a user1

Para asignarle al grupo que hemos creado antes, en Debian:

  1. adduser user1 userbits

Y en Red Hat y derivados:

  1. useradd -G userbits user1

Cuando ya tengamos una buena lista de usuario creados, podemos reiniciar el servicio.

Configurado SAMBA y creando los primeros recursos compartidos

Cuando instalamos los programas al inicio del artículo se creo el archivo de configuración smb.conf, dentro de la carpeta /etc/samba, por motivos de seguridad vamos mover el archivo a otro, para así empezar de 0.

  1. mv /etc/samba/smb.conf /etc/samba/smb.conf.original

Ahora crearemos uno, paso a paso, os indicaré la configuración básica para que todo funcione correctamente.

  1. #Aquí usaré vim, pero usad vuestro editor preferido.
  2. vim /etc/samba/smb.conf

Como diría Jack, vamos por partes:

[global]

workgroup = ochobitsdomain #Llamad al grupo de trabajo como gustéis

netbios name = SambaSF #El nombre que desees

server string = Samba File Server #El nombre del servidor de ficheros, poned el nombre que queráis.

domain master = yes #Configuraremos SAMBA como controlador de dominio.

os level = 64 #Cuanto más alto sea el número más «poder» tendrá en la red cómo servidor de ficheros. Podéis obtener más información aquí.

preferred master = yes

passdb backend = tdbsam #usaremos esta base de datos de usuarios en vez de /etc/passwd

security = user #seguridad a nivel de usuario

encrypt passwords = yes # los envíos de las contraseñas de los usarios irán encriptados.

log file = /var/log/samba/log #El archivo donde guardaremos los logs.

log level = 2 #Cuanto más mayor sea el número más nivel de detalle tendremos en el log.

max log size = 50 # Tamaño máximo del log.

hosts allow = 127.  192.168.1. #Aquí indicaremos las redes y equipos que tendrán acceso al servidor. Por ejemplo, si tu IP es 192.168.143.20, puedes añadir 192.168.143. para que todas las IP de tu red tengan acceso.

wins support = yes #significa que Samba funcionará como servidor wins.

Hemos configurado las variables globales del servidor. Ahora comenzemos a compartir directorios.

Creamos algunos directorios para jugar:

  1. mkdir /mnt/Contabilidad
  2. mkdir /mnt/Personal
  3. mkdir /mnt/Recursos

Cambiamos los permisos de las carpetas, para que nuestro usuarios puedan modificar en su caso:

  1. chmod 775 /mnt/Contabilidad -R
  2. chmod 775 /mnt/Personal -R
  3. chmod 775 /mnt/Recursos -R
  4.  
  5. #Hacemo propietario del recuros a nuestro grupo userbits
  6. chown user1:userbits /mnt/Contabilidad/ -R
  7. chown user1:userbits /mnt/Personal/ -R
  8. chown user1:userbits /mnt/Recursos/ -R

Ahora configuraremos las comparticiones en el archivo smb.conf, a continuación.

[Contabilidad]

comment = Departamento Contabilidad

path = /mnt/Contabilidad

browseable = No

writeable = Yes

valid users = user1, @userbits

[Personal]

comment = Departamento Personal

path = /mnt/Personal

browseable = No

writeable = yes

valid users = user1, @userbits

[Recursos]

comment = Recursos

path = /mnt/Recursos

public = yes

browseable = yes

writeable = no

Cómo vemos los dos primeros directorios son accesibles sólo para el usuario user1 y el grupo userbits. Y el último es público, es decir, puede acceder todo el mundo, pero no se puede escribir en el.

Salimos y reiniciamos el servicio. Sólo nos queda conectar.

Desde Windows:

Acceso-Samba-Desde-Win-1Acceso-Samba-Desde-Win-2Sólo veremos la carpeta «Recursos», ya que las otras dos hemos marcado «browseable = no»

Acceso-Samba-Desde-Win-3Para comprobar que todo ha ido bien, podéis usar los comando testparm y smbstatus.

comando-testparm-sambacomando-smbstatus-sambaEn la segunda parte profundizaremos aún más, no os lo perdáis!

Siguientes capítulos:

Compartiendo con SAMBA, segunda parte, permisos ACL

Ocultar Thumbs.db en Samba

No dudéis en comentar!