Un POWER USER siempre quiere obtener el máximo rendimiento de su equipo. Pero, por más que se cuente con las últimas tecnologías de hardware en una PC, el talón de Aquiles sigue estando en el software. Las empresas desarrolladoras compilan sus productos para el mínimo denominador común -el vetusto 80386- con el fin de asegurar la compatibilidad con la mayor cantidad de equipos posible.A cambio, se desaprovechan muchas de las prestaciones que contienen los procesadores modernos, que si fueran utilizadas, acelerarían de forma importante la ejecución de los programas. Esa es la filosofía de GENTOO: al estar disponible el código fuente, tanto del mismo sistema operativo como el de las aplicaciones, es posible compilar todo de acuerdo a las características de nuestra PC.

La distribución GNU/Linux de moda en estos tiempos,‭ ‬a nivel mundial,‭ ‬es Ubuntu.‭ ‬Vistoso y sencillo de instalar y utilizar,‭ ‬se ha ganado el apodo de‭ “‬Linux para tu Abuela‭” ‬debido a estas propiedades,‭ ‬que lo hacen apropiado para ser usado por personas con pocos conocimientos de informática.‭ ‬En el otro extremo del amplio arco de las distribuciones GNU/Linux‭ (‬hoy en día existen más de‭ ‬350‭) ‬se encuentra Gentoo,‭ ‬al que podríamos denominar‭ “‬Linux para Aprendices de Brujo‭”‬.‭ ‬Además de la posibilidad de compilar todo a medida,‭ ‬hasta hace poco tiempo carecía de instalador:‭ ‬todos los pasos se realizaban a mano desde la línea de comandos,‭ ‬siguiendo un completo manual explicativo.‭ ‬Esto,‭ ‬que puede parecer un inconveniente,‭ ‬esconde dos‭ ‬grandes ventajas.‭ ‬La primera es que, con cada instalación de Gentoo,‭ ‬profundizaremos enormemente nuestro conocimiento del Sistema Operativo GNU/Linux,‭ ‬y la segunda,‭ ‬que‭ ‬tendremos mucho más grado de decisión sobre la configuración del sistema.

ENOCH LINUX: LA PREHISTORIA DE GENTOO
El creador de Gentoo, Daniel Robbins, buscaba crear una distribución en la que todos sus componentes se compilaran en cada máquina a partir de su código fuente, tuviera de origen una cantidad de paquetes mínima, y minimizara las tareas de mantenimiento a través de scripts desarrollados a tal efecto. Bautizó a su criatura Enoch Linux, cuya única versión, la 0.75, fue lanzada a fines de 1999. Pronto se hizo notorio que el hecho de compilar todos los paquetes, además de ventajas, tenía sus contras: Enoch y su complejo sistema de dependencias no se llevaban del todo bien con GCC, el compilador de lenguaje C de GNU, piedra fundamental de los sistemas GNU/Linux. La solución fue experimentar con un fork de GCC, que no sólo corrigió los problemas existentes, sino que, también, incorporó mejoras que disminuían los tiempos de ejecución entre dos y tres veces respecto de la versión original del compilador. Estas optimizaciones provocaron el rebautismo de la distribución: nace Gentoo Linux, en homenaje a los pingüinos Gentoo, los nadadores más rápidos dentro de su especie. No mucho después, la rama “oficial” de GCC incorporó las mejoras creadas por los desarrolladores de Gentoo, beneficiando, de esta forma, a todas las demás distribuciones GNU/Linux.

GRACIAS A UN CHIP DEFECTUOSO
Las cosas iban cada vez mejor para Gentoo, así que Robbins invirtió en un equipo nuevo y poderoso para dedicarlo al desarrollo. Lo que Daniel desconocía es que ese bonito motherboard, por el cual desembolsó unos cuantos dólares, tenía un bug en la lógica de su chipset. Un bug tan sutil que sólo se manifestaba cuando un kernel Linux quedaba “idle”, es decir, sin tareas que ejecutar, y con efectos desastrosos: el cuelgue total del equipo. Imposibilitado de continuar con trabajando en Gentoo, e incluso de correrlo para su uso cotidiano, Robbins decide, entonces, probar FreeBSD. Se trata de un clon de UNIX gratuito programado por la Universidad de Berkeley (California), que, si bien es un gran olvidado por los usuarios de PC, es famoso en el mundo corporativo por su fiabilidad. Pueden comprobarlo visitando esta página y apreciarán que 9 de los 10 primeros servidores de la lista corren variantes de BSD, y todos ellos llevan entre tres y cuatro años funcionando sin rebootear. Pero volvamos a Robbins, quien, luego de algunos meses como usuario de FreeBSD, retomó el desarrollo de Gentoo con la decisión de incorporarle varias ideas tomadas del mundo BSD. La más importante, inspirada en Ports de BSD, fue la de incluir un sistema de builds automatizado mediante scripts, encargado de compilar casi sin intervención del usuario los fuentes de los distintos componentes y programas del S.O., y, a la vez, integrado con un sistema de distribución de software (es decir, un “administrador de paquetes”).

GENTOO,‭ ‬UNA METADISTRIBUCIÓN
A los desarrolladores de Gentoo les gusta decir que no es una distribución más,‭ ‬sino una‭ “‬metadistribución‭”‬,‭ ‬dada la adaptabilidad prácticamente ilimitada cuando se lo compara con otras distribuciones GNU/Linux.‭ ‬Esto es posible gracias a Portage,‭ ‬el corazón de Gentoo.‭ ‬Portage,‭ como ya habrán adivinado‬,‭ ‬es el heredero de Ports de BSD. Escrito en lenguaje Python (otro componente crítico de esta distribución) consta de dos partes bien diferenciadas entre sí: por un lado, el sistema de ebuilds, que se encarga de compilar e instalar los paquetes, y, por otro, emerge, que, además de estar encargado de la interacción con el usuario, se ocupa de resolver las dependencias necesarias para cada paquete. Este último punto es muy importante, si tenemos en cuenta que en el árbol de Portage (el repositorio oficial en donde se encuentra el código fuente de los paquetes Gentoo) actualmente existen más de diez mil programas disponibles, agrupados jerárquicamente por categorías, y, como es habitual en todas las distribuciones Linux, muchos de estos programas requieren la presencia de otros programas o bibliotecas para funcionar. Seguramente nada de esto sonará novedoso para los usuarios de Debian y sus forks (como Ubuntu), ya que APT puede hacer lo mismo y, si bien lo habitual, generalmente, en estas distribuciones es la utilización de binarios directamente, contamos con repositorios con los fuentes, por si deseamos compilarlos nosotros mismos. Pero, en el caso de Portage, hay una diferencia vital, que transforma a Gentoo, como decíamos, en una metadistribución en lugar de una distribución: los flags USE.

USE… SÓLO LO QUE NECESITA
Habitualmente, estamos tan acostumbrados a usar los paquetes de software ya precompilados por sus desarrolladores, que ni siquiera cruza por nuestra cabeza la idea de que, en muchos casos, estos programas cuentan con soporte para determinado hardware, o bien para algunos formatos de archivos, o para interactuar con otros programas. Nunca nos planteamos si necesitamos, por ejemplo, soporte para gráficos de tipo PNG en el navegador de archivos que utilizamos a diario: el soporte simplemente está allí, incluido en el binario, lo queramos o no. Pero Gentoo no trabaja con binarios, sino con el código fuente. Es decir, somos nosotros, los que vamos a usar ese software, quienes podremos decidir de qué forma se compilará cada paquete. ¿Para qué incluir soporte de sonido en una máquina de oficina que no tiene placa de audio? ¿A quién le interesa el soporte de USB en una PC que no cuenta con dichos puertos? ¿Para qué queremos soporte de KDE, si preferimos GNOME? Y es que esa es la idea de Gentoo: todo se trata de elecciones, que siempre tomaremos nosotros mismos. Después de todo, ¿quién conoce mejor que el usuario final las características del equipo en donde se van a ejecutar los programas, y, por ende, lo que es necesario y lo que es prescindible? Las ventajas de este poder de decisión, no hace falta decirlo, son múltiples. Menores tiempos de compilación, binarios más compactos y veloces, ahorro de espacio en disco y, sobre todo, la posibilidad de aprender en detalle cómo los distintos componentes de un Sistema Operativo interactúan entre sí. No faltará quien argumente que esto ya era viable, si se contaba con los fuentes. Y es verdad… siempre y cuando se tuvieran conocimientos avanzados de programación y el tiempo para navegar entre miles de líneas de código. Pero, con Portage, todo esto es fácil gracias a los flags USE, los cuales se configuran editando un archivo de texto, o bien utilizando amigables herramientas de entorno gráfico pensadas a tal efecto. A través de estos flags, se indican tanto aspectos de la configuración general que deseamos para nuestro sistema (por ejemplo, soporte para audio), como determinar para un paquete en particular las dependencias que vamos a necesitar (ej., al compilar GNOME, incluir soporte para JPG y excluir GIF). Y sin mayor dificultad que la que conlleva agregar en un archivo de texto: USE=”jpg -gif”.

INSTALANDO SIN INSTALADOR
Al principio de la nota mencionábamos que, hasta hace poco tiempo, Gentoo ni siquiera contaba con un instalador. Todas las versiones de Gentoo vienen en un LiveCD que contiene un sistema completo y, actualmente, tiene un muy buen soporte de hardware que, por lo general, detecta sin problemas todos los componentes de la PC. Sin embargo, una vez que ha booteado, se limita a dejarnos en un escritorio GNOME. Si utilizamos el minimal install CD (una descarga de apenas 55 Mb), ni siquiera tendremos entorno gráfico y trabajaremos exclusivamente en modo consola. Para instalar Gentoo en forma permanente en nuestro disco rígido deberemos hacerlo “a mano” desde la línea de comandos. Este hecho, que puede alcanzar para desalentar a más de uno, termina siendo más una ventaja que una limitación. Las últimas versiones incluyen un instalador gráfico basado en GTK+, pero (al menos por el momento) definitivamente no recomendamos su utilización. En primer lugar, porque es un desarrollo reciente y todavía algo inestable, e incluso en algún caso, propenso a hacer desastres con las tablas de particiones, sobre todo si no sabemos bien lo que estamos haciendo. En segundo lugar, porque el método “clásico” de instalar Gentoo (vía línea de comandos, asistidos por una guía de instalación en TXT o HTML) nos permitirá aprender mucho sobre Linux y sus características, y tener mayor grado de decisión sobre la configuración del sistema. Y por último, para qué negarlo, la satisfacción que sentiremos al tener funcionando un sistema “a medida” y armado paso a paso por nosotros mismos es impagable. Claro que, como todo, este método, además de sus virtudes, tiene sus contras, y no sería justo no detallarlas: además de ser imprescindible una conexión a internet de banda ancha, y contar con bastante tiempo durante uno o dos días para descargar y compilar todos los componentes del sistema base (incluyendo el entorno gráfico), la instalación “manual” no es para los débiles de corazón: un error de tipeo de apenas un caracter puede tener resultados catastróficos, como, por ejemplo, el borrado total del disco rígido y la pérdida de sus valiosos datos. Desde ya, no hace falta mencionarlo, es aconsejable siempre hacer un backup de los datos del equipo antes de intentar la instalación de un Sistema Operativo. Pero a no asustarse, ya que si seguimos paso a paso la guía de instalación, y prestamos atención en todo momento a lo que estamos haciendo, todo saldrá perfectamente. De todas formas, tal vez sea buena idea realizar la primera instalación, a modo de práctica, en una Virtual Machine, o en una PC que no contenga datos críticos y podamos borrar su disco rígido sin temor a perder algo importante.

GENTOO, SIEMPRE ACTUALIZADO
Decíamos antes que es imprescindible una conexión veloz a Internet para instalar Gentoo. En realidad, no es del todo cierto: se puede efectuar una instalación offline trabajando exclusivamente con los paquetes que vienen en el LiveCD. Sin embargo, no es recomendable, dado que el CD incluye un número muy reducido de paquetes, sin mencionar que los mismos no estarán actualizados a su última versión: lo habitual es que los desarrolladores de Gentoo liberen dos versiones anuales de la distribución. Pero es importante destacar que Gentoo es, básicamente, una distribución “sin versión”, ya que, si realizamos la instalación online, cada uno de los paquetes que compongan el sistema estarán en su versión más reciente. Los paquetes se actualizan individualmente con mucha frecuencia (en algunos casos, ¡diariamente!) ya sea por parches que mejoran la seguridad o corrigen bugs, o para agregar nueva funcionalidad. Además, es posible actualizar periódicamente todos los paquetes que componen nuestro sistema a su última versión con solamente ingresar un comando (emerge -uD world), eso sí, previamente habiendo sincronizado el “snapshot” del árbol Portage que se encuentra en nuestro equipo a través del comando emerge –sync, para informarle a Portage cuáles son los paquetes del árbol que se han actualizado respecto de los que tenemos instalados. Tanto la sincronización como la recompilación de los paquetes llevan su tiempo por lo cual tampoco es recomendable hacerlo muy seguido. En general, es buena idea dejar al equipo dedicado a esta tarea cuando no necesitemos utilizarlo durante algunas horas, como, por ejemplo, durante la noche, mientras dormimos. Pero atención: si dejamos pasar mucho tiempo sin actualizar, la cantidad de paquetes que deberán recompilarse crecerá exponencialmente y la demora necesaria para completar el update será bastante mayor. Recordemos que la compilación de código fuente es una de las tareas que más exige al procesador del equipo y, naturalmente, cuanto más veloz sea éste, menores serán los tiempos de compilación. De hecho, si pretendemos instalar Gentoo en un equipo algo viejo (como, por ejemplo, un Pentium II) deberemos armarnos de paciencia, ya que los emerge y ebuild serán largos y tediosos, sobre todo para paquetes grandes (por ejemplo KDE o Mozilla Firefox). Eso sí: una vez finalizada la compilación, les garantizo que el paquete se ejecutará mucho más rápido que si hubieran utilizado un binario precompilado. A causa de estas razones, corre por cuenta de cada usuario hallar el balance ideal en la periodicidad de la actualización, y como es común que aparezcan problemas de dependencias cruzadas entre paquetes al hacer un emerge world (que si bien no son complejos de resolver, lleva un tiempo tomarles la mano) muchas veces lo mejor será regirse por uno de los axiomas más viejos en el mundo de la tecnología: “Si no está roto, no lo arregles.”

Y ESTO RECIÉN EMPIEZA…
El universo Gentoo es muy amplio y, al igual que nuestro universo, se encuentra en constante expansión. Es por ello que sería imposible profundizar demasiado sobre este fantástico Sistema Operativo en una sola nota, pero afortunadamente, y como es habitual en las comunidades que se forman alrededor del Software Libre, existe un inmenso grupo de voluntarios dispuestos a ayudar y que han elaborado una gran cantidad de documentación detallando todo cuanto podamos necesitar. Existen FAQs, guías, Wikis y foros en el sitio de gentoo, o si preferimos “atención personalizada”, la hallaremos ingresando al servidor de IRC irc.freenode.net, canal #gentoo-es (canal de habla hispana) o en el canal #gentoo (en idioma inglés), en donde se dan cita desde principiantes hasta gurúes para debatir sobre su distribución favorita y prestarse ayuda mutua. Con Gentoo, es más verdadero que nunca aquello de “… se hace camino al andar”, pero, afortunadamente, como hemos visto, sobrarán guías que nos indiquen el rumbo cuando lo necesitemos. Les garantizo que la dedicación y paciencia requeridas para llegar al éxito con este Sistema Operativo se verán recompensadas tanto por el notable rendimiento que obtendremos de nuestros equipos (sobre todo en una PC moderna), como por el bagaje de conocimientos Linuxeros que se adquieren al usarlo diariamente. ¡Hasta la próxima, y feliz ebuilding!

‭NO SÓLO EN LINUX VIVE GENTOO
Otro punto fuerte de la dupla Gentoo-Portage es su portabilidad. Gentoo Linux corre en una amplia gama de plataformas (ARM, DEC Alpha, MIPS, IA64, PA-RISC, PowerPC, SPARC, x86, x86-64, zSeries/S390, Serie Motorola 68000). Y, en estos últimos años, han avanzado mucho proyectos para portar Gentoo a otros Sistemas Operativos basados en UNIX, como los de la familia BSD. Se encuentran actualmente las ramas Gentoo/NetBSD, Gentoo/OpenBSD, Gentoo/Dragonfly y Gentoo/FreeBSD, de las cuales la más madura es esta última. También se trabaja para correr Gentoo con HURD, el poderoso kernel que, desde hace un largo tiempo, está desarrollando la Free Software Foundation como núcleo del S.O. GNU. Incluso es posible integrar Portage con el Mac OS X, el sistema operativo de las últimas generaciones de la Apple Macintosh.

EL GENTOO ES ARGENTINO!
‭Los pingüinos de la variedad que da nombre a esta poderosa distribución GNU/Linux son viejos conocidos de los argentinos, ya que la inmensa mayoría de ellos habitan tanto en nuestras Islas Malvinas como en la Antártida Argentina. Es llamado en estas tierras pingüino papúa o de pico rojo, justamente por tener el pico de ese color, aunque también se caracteriza por una franja blanca en la parte superior de su cabeza, que se extiende entre ambos ojos. Cuando nadan bajo el agua, son mucho más rápidos que los ejemplares de otras variedades, alcanzando velocidades cercanas a los 40 km/h. Nada mal para estos pequeños que pesan apenas entre 6 y 8 kg. y miden entre 75 y 90 cm. de altura.

Aclaración: Este post fue publicado originalmente en la revista POWERUSR #42. TODOS LOS DERECHOS RESERVADOS. PROHIBIDA SU REPRODUCCIÓN TOTAL O PARCIAL SIN EL CONSENTIMIENTO EXPRESO DEL AUTOR. SE PERMITE EL ENLACE O LINKEO A ESTE POST SIN NINGÚN TIPO DE RESTRICCIONES.

Con el crecimiento de las redes caseras y, sobre todo, con la explosión del Wi-Fi, la cantidad de equipos interconectados en los hogares crece exponencialmente. Más temprano que tarde necesitaremos compartir recursos entre equipos con los S.O. de Microsoft y aquellos potenciados por el Kernel del pingüino. Aquí te mostramos una de las formas de hacerlo utilizando SAMBA, un robusto y probado producto elaborado por la comunidad del software libre, viejo conocido de los administradores de redes corporativas.

En estos días,‭ ‬la interoperabilidad entre Linux y Windows es un tema de moda debido al acuerdo que,‭ ‬al respecto,‭ ‬anudaron Microsoft y Novell‭ (‬dueña de SUSE Linux‭) ‬y a las olas de quejas y la alarma que dicho acuerdo causó en la comunidad del Software Libre.‭ ‬Ocurre que esta última lo percibió como una jugada a dos puntas por parte de la empresa de Bill:‭ ‬por un lado,‭ ‬birlarse una parte de la torta que ahora se comen las pocas empresas que tienen un negocio importante montado en torno a tecnologías de Software Libre,‭ ‬como la propia Novell o Red Hat.‭ ‬Y por otro,‭ ‬intentar contaminar la plataforma con su propio código propietario,‭ ‬para,‭ ‬más tarde,‭ ‬amenazar con juicios por violación de propiedad intelectual a quienes usen este código‭ “‬contaminado‭”‬,‭ ‬excluyendo a los clientes de Microsoft,‭ ‬por supuesto.‭ ‬Dicha estrategia,‭ ‬conocida internamente en Redmond como‭ “‬E+E+E‭” (‬siglas de‭ “‬embrace,‭ ‬extend,‭ ‬extinguish‭”)‬,‭ ‬es característica de MS,‭ ‬que la ha utilizado múltiples veces para deshacerse de molestos competidores.‭ ‬Lo paradójico del asunto es que uno de los soft en los que se basa esta interoperabilidad entre ambos S.O.‭ ‬está disponible desde hace muchos años,‭ ‬más precisamente desde principios de‭ ‬1992,‭ ‬cuando Andrew Tridgell se armó de un packet sniffer e infinitas dosis de paciencia para desarrollar SAMBA utilizando la técnica de‭ “‬Ingeniería Inversa‭”‬,‭ ‬a partir de los protocolos de red diseñados originalmente por DEC y luego modificados por IBM y Microsoft.

NACE SAMBA:‭ ‬CÓMO Y POR QUÉ
El motivo del nacimiento de SAMBA es común al de tantos otros desarrollos de software:‭ ‬un programador se encuentra con una necesidad que ningún soft satisface plenamente,‭ ‬y decide sencillamente escribir él mismo un programa que cubra su necesidad.‭ ‬Andrew Tridgell,‭ ‬nativo de la tierra de los kiwis y los canguros,‭ ‬necesitaba acceder al disco de un servidor UNIX de su Universidad desde una PC con DOS.‭ ‬Utilizar NFS‭ (‬una solución de software para esa problemática ya existente en ese entonces‭) ‬en su caso no servía,‭ ‬ya que debía utilizar una aplicación que dependía de NetBIOS,‭ ‬una API propietaria de acceso a redes,‭ ‬desarrollada originalmente por IBM y tomada como base por Microsoft para sus productos de networking.‭ ‬Así que Andrew escribió primero un analizador de paquetes,‭ ‬que le permitió hacer un estudio exhaustivo de los paquetes de red y su contenido,‭ ‬con lo cual poco a poco el complejo juego de reglas que da vida a todo protocolo se fue revelando lentamente ante sus ojos.‭ ‬Algo bastante parecido,‭ ‬según las propias palabras de su creador,‭ ‬a intentar aprender a hablar francés simplemente sentándose en un café parisino durante horas,‭ ‬con todos los sentidos atentos a captar y analizar todo cuanto se dice y sucede a nuestro alrededor.‭ ‬Al respecto el propio Tridgell ha escrito un texto muy interesante,‭ ‬cuya lectura recomiendo a todos aquellos interesados en los procesos de ingeniería inversa,‭ ‬y que pueden encontrar aquí‭ (‬lamentablemente restringido para quienes puedan leer el inglés‭)‬.‭

QUÉ OFRECE SAMBA HOY
Como imaginarán,‭ ‬luego de prácticamente‭ ‬15‭ ‬años de desarrollo,‭ ‬y siendo un producto tan popular como lo es actualmente,‭ ‬además de su solidez y estabilidad,‭ ‬SAMBA nos ofrece múltiples posibilidades:

-‭ ‬Acceso a recursos de red‭ (‬servidores de archivos,‭ ‬impresoras,‭ ‬etc.‭)
-‭ ‬Autenticación y Control de Accesos
-‭ ‬Resolución de Nombres
-‭ ‬Publicación de Servicios

Como vemos,‭ ‬es tan completo que hasta permite que un equipo con Linux…‭ ¡‬sea Controlador de Dominio de una red Windows‭! ‬Por supuesto también funciona como un simple miembro del Dominio,‭ ‬ya sea de una red estilo NT o de una basada en Active Directory.‭ ‬Sin embargo,‭ ‬para un uso hogareño en general,‭ ‬es conveniente prescindir del Dominio y utilizar una red del tipo‭ “‬Grupo de Trabajo‭”‬,‭ ‬mucho más sencilla y,‭ ‬por lo tanto,‭ ‬más adecuada para este fin‭; ‬por lo cual en la presente nota veremos cómo trabajar con SAMBA en este tipo de redes.

En este diagrama se muestra una red típica armada alrededor de SAMBA. Se destaca el uso de una utilidad de terceros basada en Web para manejar todo, evitando la tediosa tarea de editar a mano los archivos de configuración. Clickeando la imagen se la puede ver ampliada.

Esquema de red con SAMBA

A METER MANO
En nuestro ejemplo vamos a ver un escenario típico para una red hogareña,‭ ‬en donde nos valdremos de SAMBA para facilitar bastante la existencia del siempre sufrido administrador de red‭ (¡‬en este caso es fundamental,‭ ‬ya que seremos nosotros mismos‭!)‬.‭ ‬Contamos con un viejo,‭ ‬pero querido,‭ ‬Pentium MMX‭ ‬166‭ ‬Mhz,‭ ‬con‭ ‬64‭ ‬MB de RAM,‭ ‬que tantas alegrías nos dió en su momento,‭ ‬y que todavía funciona igual de bien que el primer día.‭ ‬Esta veterana PC,‭ ‬equipada con dos placas de red y GNU/Linux instalado,‭ ‬se convierte en un poderoso router,‭ ‬que hace las veces tanto de Gateway,‭ ‬para darle Internet al resto de nuestra red,‭ ‬como de Firewall,‭ ‬para protegernos de posibles ataques desde el exterior.‭ ‬Luego,‭ ‬tenemos una o más estaciones de trabajo‭ (‬y por qué no algún Media Center,‭ ‬para quienes posean bastante plata en el bolsillo para gastar en tecnología‭) ‬que pueden correr tanto Windows como GNU/Linux.‭ ‬Nuestro objetivo:‭ ‬acceder libremente desde cualquiera de las máquinas de la red a los recursos compartidos de las otras,‭ ‬así como a la impresora,‭ ‬conectada indistintamente‭ (‬gracias a la ubicuidad del USB‭) ‬a alguna de las estaciones de trabajo.‭

En principio,‭ ‬privilegiaremos la sencillez sobre la seguridad en la configuración de nuestra red.‭ ‬Al no existir un controlador de dominio,‭ ‬estaremos limitados en cuanto a la funcionalidad de autenticación y autorización.‭ ‬Pero podemos estar tranquilos,‭ ‬ya que nuestro Gateway cuenta con dos placas de red,‭ ‬conformando,‭ ‬de este modo,‭ ‬dos redes no comunicadas entre sí:‭ ‬una,‭ ‬entre nuestro proveedor de Internet y el Gateway,‭ ‬y otra,‭ ‬entre el Gateway y nuestra red hogareña.‭ ‬Sólo se rutearán desde la primera hacia la segunda aquellos paquetes que permitamos en las reglas de nuestro Firewall,‭ ‬y si todo está correctamente configurado,‭ ‬podemos prescindir absolutamente de la seguridad en nuestra red hogareña,‭ ‬dado que,‭ ‬de todas formas,‭ ‬los datos de las estaciones de trabajo estarán a salvo de ataques del exterior.‭ ‬De lo contrario,‭ ‬la configuración de los permisos de acceso a los recursos compartidos,‭ ‬en modalidad‭ “‬grupo de trabajo‭” ‬se vuelve engorrosa,‭ ‬ya que al no estar presente un Domain Controller para autenticar y autorizar,‭ ‬se debe recurrir a triquiñuelas como crear usuarios con el mismo nombre y contraseña en todas las estaciones de trabajo.‭ ‬Por lo tanto,‭ ‬en nuestro ejemplo,‭ ‬permitiremos el acceso total a los recursos compartidos,‭ ‬dejando para notas posteriores configuraciones más complejas que incluyan distintos niveles de seguridad.

Lo primero es instalar SAMBA en todas las PC con GNU/Linux.‭ ‬Los usuarios de Debian‭ (‬o las distros basadas en ella‭) ‬saben que una de las cosas lindas que tiene es que esto se logra en segundos,‭ ‬con sólo escribir‭ ‬apt-get install samba en la consola.‭ ‬Como siempre,‭ ‬a las preguntas que nos realice el instalador responderemos eligiendo la opción por defecto.

Antes de modificar la configuración del SAMBA,‭ ‬debemos realizar algunas tareas previas.‭ ‬Al respecto es bueno recordar que al margen de los permisos‭ “‬de red‭” ‬que otorguemos a los recursos compartidos declarados en SAMBA,‭ ‬los filesystem usados en Linux tienen sus propios permisos,‭ ‬y si,‭ ‬por ejemplo,‭ ‬deseamos escribir en un recurso compartido por SAMBA,‭ ‬el usuario remoto que estemos utilizando debe tener permisos de escritura sobre el directorio respectivo en el filesystem.‭ ‬Para ello crearemos un grupo y un usuario genéricos en el Linux,‭ ‬que serán usados por SAMBA a nuestro pedido.‭ ‬Siguiendo la tradición UNIXera,‭ ‬elegimos el grupo‭ “‬nogroup‭” ‬y el usuario‭ “‬nobody‭”‬,‭ ‬aunque,‭ ‬por supuesto,‭ ‬pueden usar los que quieran,‭ ‬siempre y cuando ajusten correspondientemente la configuración de SAMBA.

Primero,‭ ‬chequeamos si existe el grupo‭ “‬nogroup‭”‬:

grep nogroup‭ ‬/etc/group

Si el grupo ya estaba creado,‭ ‬grep lo mostrará,‭ ‬de lo contrario,‭ ‬no devolverá nada.‭ ‬En ese caso creamos el grupo:

groupadd nogroup

Hacemos lo propio con el usuario,‭ ‬verificando si existe con‭ ‬id:

id nobody

Si id responde que el usuario no existe,‭ ‬procedemos a su creación,‭ ‬pero omitiendo la creación de un directorio home para el usuario,‭ ‬ya que no será utilizado por ningún usuario‭ “‬real‭”‬:‭

useradd‭ ‬-g nogroup‭ ‬-d‭ ‬/home/nobody nobody

Ahora sí,‭ ‬llegó el momento de abrir el editor de texto favorito de cada uno y modificar la configuración del SAMBA.‭ ‬Como buen Debianero,‭ ‬yo estoy acostumbrado al NANO:

nano‭ ‬/etc/samba/smb.conf

Vamos a encontrarnos con un‭ *‬gran‭* ‬archivo de configuración,‭ ‬que supera las‭ ‬300‭ ‬líneas,‭ ‬pero a no asustarse,‭ ‬ya que muchas de estas líneas contienen ayudas e indicaciones acerca de las distintas opciones de configuración.‭ ‬No es mala idea,‭ ‬antes de cada modificación,‭ ‬hacer una copia de resguardo de este archivo.‭ ‬Un error en la sintaxis del mismo impedirá que se levante el servicio y SAMBA no funcionará.‭

Antes que nada,‭ ‬vamos derechito a la sección‭ “‬Global Settings‭” ‬y configuramos los siguientes valores:

workgroup‭ = ‬GRUPO_TRABAJO

Acá pueden poner el que deseen,‭ ‬con la salvedad de que deberá ser el mismo en todas las máquinas.‭ ‬Por lo general,‭ ‬por defecto se utiliza GRUPO_TRABAJO.‭ ‬Un poco más abajo está la configuración de‭ “‬Networking‭”‬.‭ ‬Aquí deberemos hacer una modificación MUY importante si la máquina que estamos configurando es el Gateway,‭ ‬ya que si omitimos este paso,‭ ‬expondremos nuestros recursos compartidos a toda la Internet‭ (!)‬.‭ ‬Como ya mencionamos,‭ ‬el gw tiene dos placas de red:‭ ‬una‭ (‬en nuestro caso eth0‭) ‬que la conecta con el ISP,‭ ‬y otra con el resto de la red hogareña‭ (‬eth1‭)‬.‭ ‬Así que,‭ ‬en este caso,‭ ‬nos aseguraremos de que quede comentada‭ (‬con‭ “;”) ‬la línea que activa la interfaz eth0‭ ‬en la configuración de SAMBA,‭ ‬y que la que corresponde a eth1‭ ‬quede correctamente configurada.‭ ‬En nuestro ejemplo quedó así:

‭; ‬interfaces‭ = ‬127.0.0.0/8‭ ‬eth0
interfaces‭ = ‬192.168.10.0/8‭ ‬eth1

Para cada placa,‭ ‬además del nombre de la interfaz‭ (‬ethX‭)‬,‭ ‬deben configurar correctamente el segmento de red y la máscara en forma acorde a la red correspondiente‭ (‬si la IP de la PC se asigna en forma dinámica,‭ ‬dejamos‭ ‬127.0.0.0/8‭)‬.‭ ‬Para las estaciones de trabajo,‭ ‬en las que,‭ ‬por lo común,‭ ‬contamos con una sola NIC‭ (‬eth0‭)‬,‭ ‬no hay margen de duda,‭ ‬ya que se configura la única interfaz existente.

Luego,‭ ‬nos dirigimos a la parte de‭ “‬Authentication‭”‬,‭ ‬donde indicaremos a SAMBA que la seguridad se manejará a nivel de recurso,‭ ‬y no de usuario:

security‭ = ‬share

Al final de la sección de autenticación agregaremos varias líneas.‭ ‬Con la primera de ellas indicaremos el usuario que SAMBA usará como‭ “‬guest‭” (‬es decir,‭ ‬el utilizado cuando se conecte un usuario remoto que no posee una cuenta local con la que ser autenticado‭)‬:

guest account‭ = ‬nobody

Recuerden configurar esta opción en forma acorde si han creado el usuario con otro nombre.‭ ‬Luego,‭ ‬agregamos las siguientes líneas a continuación:

guest ok‭ = ‬yes
guest only‭ = ‬no
read only‭ = ‬no

Si desean evitar que se pueda escribir en los recursos compartidos por SAMBA,‭ ‬deberán poner en‭ “‬yes‭” ‬el valor de la propiedad‭ “‬read only‭”‬.‭ ‬Este valor,‭ ‬que es general para todos los recursos,‭ ‬sólo se tiene en cuenta,‭ ‬en cada caso,‭ ‬si no se ha declarado de manera explícita a nivel de recurso.

Pero,‭ ‬justamente,‭ ‬pasemos a la configuración de los recursos compartidos.‭ ‬En este caso,‭ ‬y como ejemplo,‭ ‬crearemos un único recurso habilitado para acceso total de lectura y escritura en el directorio‭ ‬/shared del filesystem.‭ ‬Vamos a la sección‭ “‬Share Definitions‭” ‬del archivo de configuración y,‭ ‬debajo de todos los recursos de ejemplo que vienen en el archivo‭ (‬algunos de los cuales son muy útiles,‭ ‬como,‭ ‬por ejemplo,‭ ‬el del CD-ROM y los de impresión‭)‬,‭ ‬declaramos nuestro recurso agregando las siguientes líneas:

‭[‬MiRecurso‭]
path‭ = ‬/shared
browseable‭ = ‬yes
public‭ = ‬yes
writeable‭ = ‬yes
read only‭ = ‬no
guest ok‭ = ‬yes
guest only‭ = ‬no

Como ven,‭ ‬las propiedades del recurso son bastante autoexplicativas y,‭ ‬aunque parezca redundante declarar‭ “‬writeable‭ = ‬yes‭” ‬y‭ “‬read only‭ = ‬no‭” ‬al mismo tiempo,‭ ‬les aconsejo hacerlo de todas formas y se evitarán más de un dolor de cabeza.

Antes de poder probar si quedó todo bien,‭ ‬debemos reiniciar el SAMBA para que tome los cambios en el archivo de configuración.‭ ‬En Debian lo logramos con este comando:

/etc/init.d/samba restart

Ahora,‭ ‬desde la estación de trabajo que corre Win XP,‭ ‬simplemente ingresamos en la barra de direcciones del explorador de Windows:

‭\\‬nombre_o_ip_del_gateway\MiRecurso

Y,‭ ‬luego de algunos segundos‭ (‬al no haber un controlador de dominio,‭ ‬se envía un request a TODOS los equipos de la red,‭ ‬lo cual demora un poco las cosas‭)‬,‭ ‬tendremos una ventana de explorador situada en el recurso creado.‭ ‬Verificamos que hemos hecho las cosas bien mediante la copia de cualquier archivo a nuestro recurso,‭ ‬y,‭ ‬si funciona correctamente,‭ ‬ya podemos dar las primeras hurras.‭ ‬Si vamos a usar en forma intensiva el recurso desde esta estación de trabajo,‭ ‬es buena idea mapearlo como una unidad,‭ ‬lo cual es posible yendo en el explorador al menú Herramientas\Conectar a Unidad de red,‭ ‬seleccionando la unidad a la que se quiere mapear el recurso,‭ ‬e ingresando la dirección del mismo como lo hicimos antes.‭ ‬Es mejor elegir una letra alta,‭ ‬alejada de las unidades de discos locales como C,‭ ‬D,‭ ‬etc.‭ ‬Una elección popular entre los administradores de redes es la unidad R.

SAMBA COMO CLIENTE
Para acceder desde una de las máquinas con Linux a recursos compartidos en otras máquinas,‭ ‬disponemos de varias alternativas.‭ ‬La más cómoda es utilizando el navegador Nautilus‭ (‬que viene con el Gnome‭)‬,‭ ‬en cuyo caso es casi igual que en Windows,‭ ‬ya que basta escribir en la barra de direcciones:

smb://nombre_o_ip/recurso

También se puede montar el recurso en un directorio,‭ ‬mediante el comando smbmount:

smbmount‭ ‬//nombre_o_ip/recurso‭ ‬/directorio_local

Y,‭ ‬luego,‭ ‬desmontamos con smbumount al finalizar la utilización del recurso.‭ ‬Si queremos realizar los mounts en forma automática al bootear,‭ ‬se puede hacer agregándolos a‭ ‬/etc/fstab:

#/etc/fstab
#…
//nombre_o_ip/recurso‭ ‬/mnt/recurso‭ ‬smbfs‭ ‬defaults‭ ‬0‭ ‬0
#…

Para navegar por los recursos de un equipo remoto desde la consola,‭ ‬tenemos el comando smbclient:

smbclient‭ ‬-L nombre_o_ip

…‭ ‬Y A SEGUIR INVESTIGANDO
Como podemos apreciar,‭ ‬las posibilidades son tantas como la imaginación lo permita,‭ ‬y por cierto,‭ ‬que queda mucho por ver sobre el tema.‭ ‬Por ejemplo,‭ ‬cómo configurar SAMBA para utilizarlo como controlador de dominio,‭ ‬ideal para una pequeña o mediana empresa.‭ ‬En próximos números‭ ‬esperamos‭ ‬poder desarrollar este tema.‭ ‬De todas maneras,‭ ‬esperamos haberles brindado los fundamentos necesarios como para que‭ ‬puedan proseguir por sí mismos,‭ ‬ya que nunca debemos olvidar que‭ “‬la práctica hace al maestro‭”‬.‭ ‬Hasta la próxima,‭ ‬y‭ ¡‬sigan hackeando‭!

En esta foto,‭ ‬tomada hace ya cinco años,‭ ‬vemos al equipo de desarrollo de SAMBA en ese entonces.‭ ‬Ahora entendemos de dónde salieron las‭ ‬500.000‭ ‬líneas de código que tiene actualmente‭ ‬:‭))

Esquema de red con SAMBA

Redes Virtuales con SAMBA
Hace rato que tenía ganas de postear algo sobre esta temática,‭ ‬ya que son cada vez más quienes no se resignan a las limitaciones de Windows,‭ ‬o a las complejidades de Linux,‭ ‬y prefieren acudir a lo mejor de ambos mundos.‭ ‬Y,‭ ‬con frecuencia,‭ ‬es necesario que ambos S.O.‭ ‬compartan recursos.‭ ‬Sin embargo,‭ ‬los post sobre Virtualización publicados anteriormente‭ ‬fueron los que impulsaron definitivamente este tema,‭ ‬ya que varios lectores nos escribieron pidiendo que tratáramos el tema de las‭ “‬redes virtuales‭” ‬entre VMs,‭ ‬o entre VMs y Anfitrión.‭ ‬Al respecto sólo cabe decir que,‭ ‬también en este caso,‭ ‬SAMBA es una solución ideal para compartir recursos entre VMs con distintos S.O.,‭ ‬y todo lo explicado aquí se aplica absolutamente y sin modificaciones a cualquier máquina que pueda correr SAMBA,‭ ‬ya sea virtual o física.

Aclaración: Este post fue publicado originalmente en la revista POWERUSR #41. TODOS LOS DERECHOS RESERVADOS. PROHIBIDA SU REPRODUCCIÓN TOTAL O PARCIAL SIN EL CONSENTIMIENTO EXPRESO DEL AUTOR. SE PERMITE EL ENLACE O LINKEO A ESTE POST SIN NINGÚN TIPO DE RESTRICCIONES.