Introducción
En esta práctica se utilizarán los sistemas operativos de software libre, Fedora,
Ubuntu, CentOS y Debian, en los cuales veremos las diferentes formas de ir
compartiendo archivos y recursos entre estos sistemas, recordando que existen
diferentes técnicas y herramientas que nos permite compartir información y
recursos. Si estamos conectados en una red de ordenadores con diferentes
sistemas operativos y tenemos la necesidad de compartir archivos o crear un
servidor de archivos para que el resto de los compañeros entren a trabajar al
directorio compartido, sin duda nuestra opción pasa por instalar y configurar samba.
En este post se dieron otras alternativas si instalar samba resulta demasiado pesado
para nuestros objetivos (compartir por ejemplo de forma casi instantánea un par de
archivos con un compañero de trabajo). No obstante instalar y configurar samba no
nos llevará demasiado tiempo y quizás interese tener ahí en nuestra red un servidor
corriendo con archivos compartidos.
Marco Teórico
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 computadoras con
GNU/Linux, Mac OS X o Unix en general se vean como servidores o actúen como
clientes en redes de Windows. Samba también permite validar usuarios haciendo
de Controlador Principal de Dominio (PDC), como miembro de dominio e incluso
como un dominio Active Directory para redes basadas en Windows; aparte de ser
capaz de servir colas de impresión, directorios compartidos y autentificar con su
propio archivo de usuarios.
La 'suite' completa de samba se compone de varios paquetes. Se pueden localizar
en http://packages.ubuntu.com buscando 'samba'. Destacamos los más
importantes:
samba - Servidor de archivos e impresoras tipo LanManager para Unix.
samba-common - Archivos comunes de samba utilizados para clientes y servidores.
smbclient - Cliente simple tipo LanManager para Unix.
swat - Herramienta de administración de Samba via web
samba-doc - Documentación de Samba.
smbfs - Comandos para montar y desmontar unidades de red samba
winbind - Servicio para resolver información de usuarios y grupos de servidores
Windows NT
Instalaremos los paquetes necesarios para disfrutar del servicio. Para ello
ejecutaremos:
// Instalar samba
sudo apt-get install samba samba-common smbclient samba-doc smbfs
Así tendremos instalados y actualizados a la última versión, los paquetes básicos
para disfrutar del servicio SAMBA.
Samba, al igual que casi todas las aplicaciones para Linux, dispone de un archivo
de texto para su configuración. Se trata del archivo:
// Archivo de configuración de samba
/etc/samba/smb.conf
Aunque el archivo de configuración de samba es bastante extenso, para empezar a
disfrutar de samba, tenemos que hacer muy pocos cambios. El archivo de
configuración se divide en secciones identificadas por un nombre entre corchetes.
Hay tres secciones especiales que son [global], [homes] y [printers].
La sección principal es la sección [global] que nos permite configurar los
parámetros generales del servicio.
La sección [homes] nos permitirá compartir las carpetas home de cada usuario,
para que cada usuario pueda acceder a su carpeta home por la red.
La sección [printers] nos permitirá compartir impresoras.
Para compartir una carpeta, debemos crear una sección nueva. El nombre de la
sección, será el nombre del recurso compartido. Ejemplo, si queremos compartir la
carpeta /home/comun-profes y llamar al recurso compartido profes, debemos crear
una sección llamada [profes]. Para facilitar la configuración de samba existe una
herramienta llamada swat que permite, vía web, configurar la aplicación.
Puesto que editando el archivo smb.conf se pueden configurar más de 300
parámetros, dando lugar a miles de configuraciones, nos limitaremos a analizar los
parámetros más relevantes y a la compartición de archivos e impresoras
directamente.
Desarrollo
El primer paso para compartir archivos entre sistemas operativos de Linux es
instalar en todos los sistemas operativos participantes samba, cabe mencionar que
aunque el proceso es muy parecido entre las diferentes versiones los comandos y
modificaciones suelen variar un poco.
En nuestro caso iniciaremos con Fedora:
El primer paso es loguearnos como usuarios root, procedemos a instalar nuestro
paquete con el dnf -y install samba samba-client. Como podemos ver en la pantalla
siguiente al terminar de descargar e instalar nos saldrá un mensaje de listo y
veremos toda la información de la instalación.
Al terminar inmediatamente procederemos a crear una carpeta y darle los permisos
pertinentes para samba además usaremos el editor de textos vi para modificar el
archivo con una ruta predeterminada.
Se agregaran varias líneas de código y al terminar lo guardaremos con :wq
Revisaremos si se guardó correctamente todos los cambios y procederemos a
ejecutar el comando systemctl start y enable para smb nmb, enseguida tendremos
que ejecutar los comandos de firewall pertinentes.
Y podemos proceder a realizar toda la configuración para compartir archivos
Ejecute el comando mkdir /shares como el usuario root para crear un nuevo
directorio de nivel superior para compartir archivos entre diferentes servicios.
Los
archivos y los directorios que no coincidan con un modelo de archivo-configuración
de contexto, podrían ser etiquetados con el tipo default_t. Este tipo es inaccesible a
los servicios confinados:
Como usuario root, cree un archivo /shares/index.html. Copie y pegue el contenido
que ofrecemos a continuación en el archivo /shares/index.html:
Etiquetar el archivo /shares/ con el tipo public_content_t permite acceso de solo
lectura al servidor HTTP Apache, FTP, rsync y Samba. ejecute el comando siguiente
como usuario root para agregar la modificación del etiquetado en la configuración
archivo-contexto:
Ejecute el comando restorecon -R -v /shares/ como usuario root para aplicar las
modificaciones en el etiquetado:
restorecon reset /shares context unconfined_u:object_r:default_t:s0-
>system_u:object_r:public_content_t:s0
restorecon reset /shares/index.html context unconfined_u:object_r:default_t:s0-
>system_u:object_r:public_content_t:s0
Para compartir /shares/ mediante Samba:
Ejecute el comando rpm -q samba samba-common samba-client para verificar
que los paquetes samba, samba-common, y samba-client se encuentren instalados
(los números de versiones podrían diferir):
Si alguno de estos paquetes no se encuentran instalados, instálelos ejecutando
el comando yum install niombre-del- paquete como usuario root.
Edite el archivo /etc/samba/smb.conf como usuario root. Agregue la siguiente
entrada al final de este archivo para compartir el directorio /shares/ a través de
Samba:
Es necesario poseer una cuenta Samba para poder montar un sistema de archivos
Samba. Ejecute el comando smbpasswd -a nombre-de-usuario como usuario root
para crear una cuenta Samba, donde nombre-de-usuario es un usuario Linux
existente del sistema. Por ejemplo, smbpasswd -a testuser genera una cuenta
Samba para el usuario Linux testuser:
Ejecutar el comando smbpasswd -a nombre-de-usuario, donde nombre-de-usuario
sea el nombre de usuario de una cuenta Linux que no exista en el sistema,
provocará un error Cannot locate Unix account for 'username'!.
Ejecute el comando service smb start como usuario root para iniciar el servicio
Samba:
Ejecute el comando smbclient -U nombre-de-usuario -L localhost para conocer la
lista de los elementos compartidos disponibles, donde nombre-de-usuario es la
cuenta Samba agregada en el paso 3. Cuando le sea pedida una contraseña,
ingrese la que ha indicado para la cuenta Samba del paso 3 (los números de las
versiones podrían diferir):
Ejecute el comando mkdir /test/ como usuario root para crear un nuevo directorio.
Este directorio será utilizado para montar los elementos compartidos shares de
Samba.
Ejecute el siguiente comando como usuario root para montar los elementos
compartidos shares de Samba sobre /test/, reemplazando username con el nombre
de usuario del paso 3:
Ingrese la contraseña de username, que fue configurada en el paso 3.
Ejecute el comando cat /test/index.html para observar un archivo que esté siendo
compartido a través de Samba:
Se tiene que repetir el mismo proceso anteriormente realizado, pero en este caso
práctico lo realizamos con Ubuntu.
Nuestro primer paso es iniciar sesión como super usuario root.
Después tendremos que iniciar la instalación del tasksel, por medio de este se
realizara el proceso de instalación de samba, esta es una de las diferentes técnicas
existentes de compartir archivos.
Al ejecutar el comando
taskel nos aparecerá la
siguiente pantalla y
seleccionaremos samba
Automáticamente se iniciará la instalación
Tendremos que utilizar el editor de texto nano para editar el archivo y lo
guardaremos con control x y le daremos la opción s para guardar
Reiniciaremos el servidor
Conclusiones
En este presente trabajo logramos comprender la importancia del proceso
adecuado para compartir información de manera privada y ante todo de forma
segura, la forma más sencilla es instalando el servidor samba en cualquier versión
Linux. Este servidor está disponible para todos los sistemas operativos compatibles
con Unix, cabe mencionar que el proceso de instalación es similar en todos los
sistemas, aunque pueden variar un poco los comandos.
Existen otras técnicas como lo son herramientas portátiles que por medio de la
dirección IP y un usuario y contraseña nos permiten visualizar los documentos del
equipo en el que nos encontramos trabajando y los del equipo al que nos
conectamos, estas herramientas solo nos permiten transferir archivos de cualquier
tipo y no tenemos permisos de modificar nada del otro equipo.