Compartiendo con SAMBA
No 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:
apt-get -y update
apt-get -y install samba samba-common samba-doc smbclient winbind
En los basados en Red Hat:
yum -y update
yum -y install samba samba-client samba-common
Para comprobar la versión que tenemos instalada:
#Tanto en basados en Debian como Red Hat
/usr/sbin/smbd --version
/usr/sbin/winbindd --version
Para verificar la versión de Kerberos, los comandos son diferentes depende del sistema.
En Red Hat, Fedora o Centos
rpm -q krb5-workstation
En Debian o Ubuntu
dpkg -l | grep krb5
Os dejo una imagen de las comprobaciones en un sistema basado en Debian como 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:
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:
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 135:139 -j ACCEPT
iptables -A INPUT -m state --state NEW -m udp -p udp --dport 135:139 -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT
Y guardamos.
#En Debian
iptables-save
#En RedHat
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:
chkconfig smb on
chkconfig nmb on
Para parar, iniciar o reiniciar el servicio es de la siguiente manera:
#Iniciar en Red Hat
service smb start
#Parar en Red Hat
service smb stop
#Reiniciar en Red Hat
service smb restart
#Iniciar en Debian
service samba start
#Parar en Debian
service samba stop
#Reiniciar en Debian
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.
smbpasswd -a
Y creamos un grupo de trabajo
groupadd userbits
Ahora añadimos un usuario:
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:
smbpasswd -a user1
Para asignarle al grupo que hemos creado antes, en Debian:
adduser user1 userbits
Y en Red Hat y derivados:
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.
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.
#Aquí usaré vim, pero usad vuestro editor preferido.
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:
mkdir /mnt/Contabilidad
mkdir /mnt/Personal
mkdir /mnt/Recursos
Cambiamos los permisos de las carpetas, para que nuestro usuarios puedan modificar en su caso:
chmod 775 /mnt/Contabilidad -R
chmod 775 /mnt/Personal -R
chmod 775 /mnt/Recursos -R
#Hacemo propietario del recuros a nuestro grupo userbits
chown user1:userbits /mnt/Contabilidad/ -R
chown user1:userbits /mnt/Personal/ -R
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:
Sólo veremos la carpeta «Recursos», ya que las otras dos hemos marcado «browseable = no»
Para comprobar que todo ha ido bien, podéis usar los comando testparm y smbstatus.
En la segunda parte profundizaremos aún más, no os lo perdáis!
Siguientes capítulos:
Compartiendo con SAMBA, segunda parte, permisos ACL
No dudéis en comentar!