Esta guía está diseñada para ayudarte en la transición de una red con muchos clientes distintos hablando diferentes idiomas a otra con múltiples clientes diferentes que se comunican con un lenguaje común. El objetivo final es ayudarte a crear un ambiente de coexistencia de distintas arquitecturas y tecnologías para que trabajen juntas de una manera productiva.
Si sigues las líneas trazadas en esta Guía, estás deben ayudarte a dar un importante paso adelante hacía la coexistencia amigable entre Windows, y virtualmente todas las variaciones de *nix conocidas.
Esta guía originalmente no empezó como tal, sino como un PUF (Preguntas de Uso Frecuente). Tenía como intención explorar la funcionalidad y el poder de un sistema Gentoo, portage y la flexibilidad que entregan las banderas USE. Al igual que muchos otros proyectos, se descubrió rápidamente lo que faltaba en el territorio Gentoo: no existía ninguna guía Samba especialmente diseñada para los usuarios de Gentoo; que son más demandantes que la mayoría; ellos requieren desempeño, flexibilidad y personalización. Esto, sin embargo, no significa que esta guía no tenga como objetivo otras distribuciones; sino que está diseñada para trabajar con una versión altamente personalizada de Samba.
Se describirá como compartir archivos e impresoras entre PCs Windows y PCs *nix. También se mostrará como montar y manipular lo compartido.
Existen algunos temas que serán mencionados pero que escapan del alcance de esta guía. Eso se hará notar cuando se presente el caso.
Esta guía está basada en una compilación y reunión del excelente COMO proveido en los Foros de Gentoo por Andreas "daff" Ntaflos y una colección de conocimientos de Joshua Preston. Los enlaces a estas discusiones se proveen más abajo como referencia:
Existen muchas otras guías para configurar CUPS y/o Samba. Por favor, leelas también, ya que te dirán cosas que están fuera de esta guía (intencionalmente o no). Uno de tales documentos que es muy útil y está muy bien escrito es la Guía de Impresión Gentoo, ya que discute problemas de configuración e instalación específicos de la impresora que no se tratan aquí.
Luego de presentar varias banderas USE, la siguiente lista muestra todos los tópicos cubiertos como son presentados:
Necesitaremos lo siguiente:
El paquete principal que utilizaremos es net-fs/samba. Sin embargo, necesitarás un núcleo con soporte para cifs activado, de manera que puedas montar lo compartido por otra máquina a través de Samba o Windows. CUPS también será instalado si es que aún no lo está.
Antes de instalar nada, démosle una mirada a algunas de las varias banderas USE disponibles en Samba.
Listado de Código 2.1: Samba utiliza las siguientes variables USE: |
kerberos acl cups ldap pam readline python winbind |
Dependiendo de la topología de red y de los requerimientos específicos del servidor, las banderas USE mostradas más abajo serán definidas para incluir o no cierto soporte al momento de instalar Samba.
| Bandera USE | Descripción |
| kerberos | Incluye soporte para Kerberos. El servidor necesitará esta opción si va a trabajar sobre un dominio o Directorio Activo ya existente. Revisa la nota más abajo para mayor información. |
| acl | Habilita las Listas de Control de Acceso. El soporte ACL en Samba utiliza una partición ext2/ext3 parchada, o XFS de SGI para funcionar de manera adecuada ya que extiende los permisos de acceso sobre archivos y directorios para hacerlos más detallados; mucho más que el esquema habitual *nix de GID/UID. |
| cups | Activa el soporte para el Sistema Común de Impresión Unix. Esto provee una interfaz de manera que se pueda compartir la impresora local CUPS con otros sistemas de la red. |
| ldap | Activa el soporte para el Protocolo de Acceso de Directorio Ligero (LDAP). Si Samba va a utilizar Active Directory, se debe activar esta opción. Se necesitaría en caso que Samba deba autenticarse o proveer autenticación hacía un Servidor de Directorio/Dominio Activo. Se debe utilizar junto con la bandera USE kerberos para que funcione apropiadamente. |
| pam | Añade el soporte para los módulos extensibles de autenticación (PAM). Esto permite que los usuarios se autentiquen en tu servidor Samba, que se requiere si los usuarios tienen que ingresar al sistema de tu servidor. Se recomienda utilizar conjuntamente la bandera USE kerberos. |
| readline | Enlaza Samba con libreadline. Es altamente recomendado y no deberías desactivarla. |
| winbind | Winbind permite una autenticación unificada dentro del ambiente Samba. Utiliza una implementación Unix de las llamadas RPC de Windows, PAM y el switch de nombre de servicio (soportado por la librería de c) para permitir a los usuarios de dominio de Windows NT aparecer y trabajar como usuarios Unix en un sistema Unix. |
Un par de cosas que valen la pena ser mencionadas acerca de las banderas USE y las diferentes funcionalidades incluidas en Samba:
3. Instalación del Software del Servidor
Antes de nada: asegúrate que todos los nombres de los anfitriones (hostnames) sean resueltos de manera correcta, ya sea teniendo un servidor de nombres de dominios (DNS) en tu red o las entradas apropiadas en el archivo /etc/hosts. cupsaddsmb usualmente se queja si los nombres de los anfitriones no apuntan a la máquina correcta.
Ahora deberías ser capaz de decir que necesitas exactamente de Samba para tu caso en particular. La configuración utilizada en esta Guía es la siguiente:
Para optimizar el desempeño, tamaño y tiempo de compilación, las banderas USE son incluidas o excluidas específicamente.
Primero agregue ppds a los parámetros USE flags para asegurar que CUPS sea construido con el soporte apropiado para foomatic:
Listado de Código 3.1: Agregando ppds |
# echo "net-print/cups ppds" >> /etc/portage/package.use
|
Ahora construyamos Samba:
Listado de Código 3.2: Emerge Samba |
# echo "net-fs/samba readline cups pam" >> /etc/portage/package.use # emerge net-fs/samba |
Nota: Las siguientes arquitecturas necesitarán añadir ~ a sus KEYWORDS: x86, ppc, sparc, hppa, ia64 y alpha |
Esto emergerá Samba y CUPS.
Sólo necesitarás este paquete si utilizas una impresora HP.
Listado de Código 3.3: Emerge hplip |
# emerge net-print/hplip
|
El archivo de configuración principal de Samba es /etc/samba/smb.conf. Está dividido en secciones indicadas por [nombreseccion]. Los comentarios son o bien # o ;. Un archivo smb.conf de ejemplo está incluido más abajo con comentarios y sugerencias para su modificación. Si requieres más detalles, mira la página del manual de smb.conf, el archivo instalado smb.conf.example, el sitio Web de Samba o cualquiera de los numerosos libros acerca de Samba disponibles.
Listado de Código 4.1: Un ejemplo de /etc/samba/smb.conf |
[global] # Reemplaza MIGRUPODETRABAJO con tu grupo de trabajo/dominio workgroup = MIGRUPODETRABAJO # Por supuesto que esto no tiene ningún uso REAL más que dar a # conocer a todos que ¡tu máquina no es Windows! # %v imprime la versión de Samba que utilizas. server string = Samba Server %v # Vamos a utilizar cups, así que necesitamos ponerlo aquí ;-) printcap name = cups printing = cups load printers = yes # Queremos un archivo de bitácora y no lo queremos más largo que 50kb. log file = /var/log/samba/log.%m max log size = 50 # Configuremos algunas opciones para nuestras interfaces... socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 # Esta es una buena idea, lo que vamos a hacer es conectar el # servidor samba a nuestra red local. # Por ejemplo, si eth0 es nuestro dispositivo de red local interfaces = lo eth0 bind interfaces only = yes # Ahora especificaremos a quienes permitiremos interactuar, # después de todo somos muy conscientes con la seguridad, ¡ya que esta # configuración no utiliza contraseñas! hosts allow = 127.0.0.1 192.168.1.0/24 hosts deny = 0.0.0.0/0 # Otras opciones para esto son USER, DOMAIN, ADS, y SERVER # Por defecto es user security = share # ¡No hay contraseñas, así que vamos a utilizar una cuenta invitada! guest ok = yes # ¡Ahora configuraremos la información de los manejadores de la impresora! [print$] comment = Printer Drivers path = /etc/samba/printer # en esta ruta está la estructura del manejador guest ok = yes browseable = yes read only = yes # Modifica esto a "username,root" si no deseas que root sea el único # administrador de la impresora write list = root # Ahora configuraremos una impresora a compartir, aunque su nombre es # arbitrario debe ser consiste para ambos Samba y CUPS [HPDeskJet930C] comment = HP DeskJet 930C Network Printer printable = yes path = /var/spool/samba public = yes guest ok = yes # Modifica esto a "username,root" si no deseas que root sea el único # administrador de la impresora printer admin = root # Ahora configuraremos cómo compartiremos las impresoras. Debe ser # browseable, printable, public. [printers] comment = All Printers browseable = no printable = yes writable = no public = yes guest ok = yes path = /var/spool/samba # Modifica esto a "username,root" si no deseas que root sea el único # administrador de la impresora printer admin = root # Ahora crearemos un nuevo espacio compartido en el cual se pueda leer/escribir # desde cualquier lugar. Es algo así como un compartido temporal público, en el que # cualquiera puede hacer lo que quiera. [public] comment = Public Files browseable = yes public = yes create mode = 0766 guest ok = yes path = /home/samba/public |
Aviso: Si quieres utilizar la cuenta invitada de Samba para realizar todo lo concerniente a la impresión desde los clientes Windows no definas guest only = yes en la sección [global]. La cuenta invitada parece causar problemas cuando se ejecuta cupsaddsmb; usualmente cuando se quieren conectar desde máquinas Windows. Mira más abajo, también, cuando nos referimos a cupsaddsmb y los problemas que pueden surgir. Utiliza un usuario de impresión dedicado, como printeruser o printer o printme o cualquier otro. No hace ningún daño y de seguro te protegerá de muchos problemas. |
Ahora creemos los directorios requeridos en una configuración mínima de Samba para compartir la impresora instalada a través de la red.
Listado de Código 4.2: Crear los directorios |
# mkdir /etc/samba/printer # mkdir /var/spool/samba # mkdir /home/samba/public |
Se requiere al menos un usuario de samba para instalar los controladores de la impresora y permitir a los usuarios conectarse a la misma. Los usuarios deben existir en el archivo /etc/passwd del sistema.
Listado de Código 4.3: Creando los usuarios |
# smbpasswd -a root (En caso que otro usuario sea el administrador de la impresora) # smbpasswd -a username |
Las contraseñas no necesitan ser iguales que las del sistema especificadas en /etc/passwd.
También necesitarás actualizar /etc/nsswitch.conf para que los sistemas Windows puedan ser encontrados fácilmente utilizando NetBIOS:
Listado de Código 4.4: Editando /etc/nsswitch.conf |
# nano -w /etc/nsswitch.conf (Edita los anfitriones: line) hosts: files dns wins |
Esto es un poquito más complicado. El archivo de configuración principal de CUPS es /etc/cups/cupsd.conf. Tiene una estructura similar al archivo de Apache httpd.conf, así que es posible que lo encuentres familiar. Resaltadas en el ejemplo están las directivas que necesitarás cambiar:
Listado de Código 4.5: /etc/cups/cupsd.conf |
ServerName PrintServer # el nombre de tu servidor de impresión ServerAdmin root@PrintServer # quién recibirá los correos relacionados, e.g. tu AccessLog /var/log/cups/access_log # probablemente no necesitarás cambiarlo ErrorLog /var/log/cups/error_log # igual que el caso de arriba LogLevel debug # sólo será así durante la instalación y pruebas, luego debe # ser cambiado a 'info' MaxClients 100 # Yo tuve que definirlo en 1000000000 o cerca porque algún tiempo atrás # parecía existir una falla en la interfaz web de CUPS, # haciendo creer que estaba siendo víctima de un ataque de denegación de servicio # cuando intentaba configurar una impresora a través de la interfaz web. raro. BrowseAddress @IF(eth0) # cámbialo a tu interfaz de red local <Location /> Order Deny,Allow Deny From All Allow From 192.168.1.* # la dirección de tu red interna # e.g. 192.168.1.* permitirá cualquier conexión desde una máquina en la red # 192.168.1.0. Cámbialo para que se ajuste a tu configuración </Location> <Location /admin> AuthType Basic AuthClass System Allow From 192.168.1.* # lo mismo que arriba permitirá a cualquier máquina # en la red 192.168.1.0 conectarse y realizar # tareas administrativas luego de autenticarse Order Deny,Allow Deny From All </Location> |
Edita /etc/cups/mime.convs para quitar los comentarios de algunas lineas. Los cambios en mime.convs y mime.types son necesarios para permitir a CUPS imprimir archivos de Microsoft Office.
Listado de Código 4.6: /etc/cups/mime.convs |
(La siguiente línea está próxima al final del archivo. Descomentala)
application/octet-stream application/vnd.cups-raw 0
|
Edita /etc/cups/mime.types para descomentar algunas lineas.
Listado de Código 4.7: /etc/cups/mime.types |
(La siguiente línea está próxima al final del archivo. Descomentala)
application/octet-stream
|
CUPS tiene que comenzar a funcionar al inicio del sistema, también lo arrancaremos de inmediato.
Listado de Código 4.8: Configurando el servicio CUPS |
(Para incluir CUPS en la rutina de inicio) # rc-update add cupsd default (Para iniciar o reiniciar CUPS de inmediato) # /etc/init.d/cupsd restart |
Instalando una impresora para y con CUPS
Antes de nada, ve a LinuxPrinting.Org para buscar y descargar el archivo PPD correcto para tu impresora y CUPS. Para hacerlo, haz click en el enlace al listado impresoras (Printer Listings) en la izquierda. Selecciona el fabricante de tu impresora y el modelo en el menú desplegable, eg HP y DeskJet 930C. Haz click en "mostrar" (show). En la página que aparece haz click en el enlace de "manejador recomendado" (recommended driver) luego de haber leído las varias notas e información que brinda. Luego descarga el archivo PPD de la página siguiente, después de haber leído nuevamente las notas e información que da. Quizás tengas que seleccionar el fabricante y el modelo de tu impresora nuevamente. Leer la guía de inicio rápido de CUPSes también muy útil cuando se trabaja con CUPS.
Ahora tienes un archivo PPD para CUPS que trabaja con tu impresora. Colócalo en /usr/share/cups/model. El PPD para tu HP DeskJet 930C ha sido nombrado HP-DeskJet_930C-hpijs.ppd. Ahora debes instalar la impresora. Esto puede ser hecho a través de la interfaz web de CUPS o utilizando la línea de comandos. Una vez que esté ejecutándose CUPS la interfaz web puede ser encontrada en http://PrintServer:631.
Listado de Código 4.9: Instalando la impresora a través de la línea de comandos |
# lpadmin -p HPDeskJet930C -E -v usb:/dev/ultp0 -m HP-DeskJet_930C-hpijs.ppd # /etc/init.d/cupsd restart |
Recuerda ajustarlo a tu configuración. Asegúrate de tener el nombre(el argumento -p) correcto (¡el nombre que definiste durante la configuración de Samba!) y colocar bien el usb:/dev/usb/blah, parallel:/dev/blah o el dispositivo que utilices para tu impresora.
Ahora debes ser capaz de acceder a tu impresora desde la interfaz web y además debes poder imprimir la página de prueba.
Instalando los manejadores Windows de la impresora
Ahora que la impresora está trabajando es momento de instalar los manejadores que puedan utilizar los clientes Windows. Samba 2.2 introdujo esta funcionalidad. Navegando en el servidor de impresoras en el vecindario de la red (Network Neighbourhood), haz click derecho en compartir impresora (printershare) y selecciona conectar (connect) lo cual descargará los manejadores adecuados automágicamente al cliente que se conecte, evitando la molestia de instalar los manejadores de impresión manualmente.
Hay dos conjuntos de manejadores de impresora para este propósito. Primero, los manejadores Adobe PS que se pueden conseguir desde Adobe (Manejadores de impresora PostScript). Segundo, existen los manejadores CUPS PS, que pueden ser obtenidos al instalar net-print/cups-windows. Puede ser posible que este paquete aún esté marcado como inestable para tu arquitectura (~arch). Si es así necesitarás añadirlo a /etc/portage/package.keywords. No parece haber una diferencia de funcionalidad entre los dos manejadores, pero el de Adobe necesita ser extraido en un sistema Windows dado que es un binario de esa plataforma. Además el proceso de encontrar y copiar los archivos adecuados es más molesto. Por último, los manejadores CUPS PS soportan algunas opciones que los de Adobe no soportan.
Esta guía utiliza los manejadores CUPS para Windows. Instálalos ejecutando el siguiente comando:
Listado de Código 4.10: Instalando los manejadores |
# emerge -av cups-windows
|
Ahora utiliza el guión cupsaddsmb que viene junto con la distribución de CUPS. Asegúrate de leer su página del manual (man cupsaddsmb), ya que menciona qué manejadores Windows necesitas copiar al directorio apropiado de CUPS. Una vez que hayas copiado los manejadores, reinicia CUPS ejecutando /etc/init.d/cupsd restart. Luego ejecuta cupsaddsmb de la siguiente manera:
Listado de Código 4.11: Ejecuta cupsaddsmb |
# cupsaddsmb -H PrintServer -U root -h PrintServer -v HPDeskJet930C (En vez de HPDeskJet930C podrías también especificar "-a", lo cual "exportará todas las impresoras conocidas".) # cupsaddsmb -H PrintServer -U root -h PrintServer -a |
Aviso: La ejecución de este comando es la causa común de la mayoría de los problemas. Lea las entradas en este hilo para algunos datos para solucionar problemas. |
Aquí están los errores más comunes que pueden suceder:
Esto debe instalar la estructura de directorios adecuada del manejador bajo /etc/samba/printer. Eso será /etc/samba/printer/W32X86/2/. Los archivos contenidos deben ser los 3 archivos del manejador y el archivo PPD, renombrado como ElNombreDeTuImpresora.ppd (el nombre que le diste a tu impresora cuando la instalaste).
Sin ningún otro error o complicación pendiente, tus manejadores debe estar ahora instalados.
Por último, configuremos nuestros directorios.
Listado de Código 4.12: Últimos cambios necesarios |
# mkdir /home/samba # mkdir /home/samba/public # chmod 755 /home/samba # chmod 755 /home/samba/public |
Probando nuestra configuración Samba
Es seguro que queremos probar nuestro archivo de configuración para asegurarnos que está formateado de manera correcta y que todas nuestras opciones tienen, al menos, la sintaxis correcta. Para hacerlo ejecutamos testparm.
Listado de Código 4.13: Ejecutando testparm |
(Por defecto, testparm revisa /etc/samba/smb.conf) # /usr/bin/testparm Load smb config files from /etc/samba/smb.conf Processing section "[printers]" Global parameter guest account found in service section! Processing section "[public]" Global parameter guest account found in service section! Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions ... ... |
Ahora configuraremos Samba para que se inicie con el sistema; luego la ejecutaremos.
Listado de Código 4.14: Configurando el servicio Samba |
# rc-update add samba default # /etc/init.d/samba start |
También sería prudente revisar nuestras bitácoras al mismo tiempo. De igual forma queremos echar un vistazo a lo que Samba está compartiendo utilizando smbclient.
Listado de Código 4.15: Revisando lo compartido con smbclient |
# smbclient -L localhost Password: (Debes ver una ENORME lista de servicios aquí.) |
5. Configuración de los clientes
Configuración de la impresora para los clientes basados en *nix
Sin importar la variación o distribución, la única cosa necesaria es CUPS. Haz lo mismo, o equivalente, en cualquier otro cliente UNIX/Linux/BSD.
Listado de Código 5.1: Configurando un sistema Gentoo |
# emerge cups # nano -w /etc/cups/client.conf ServerName PrintServer # your printserver name |
Eso debe ser todo. Nada más es necesario.
Si sólo utilizas una impresora, la misma será tu impresora por defecto. Si tu servidor de impresión maneja varias impresoras, tu administrador debe haber definido una impresora por defecto en el servidor. Si quieres definir una impresora por defecto distinta para ti, utiliza el comando lpoptions.
Listado de Código 5.2: Definiendo tu impresora por defecto |
(Lista las impresoras disponibles) # lpstat -a (Salida de ejemplo, la tuya será diferente) HPDeskJet930C accepting requests since Jan 01 00:00 laser accepting requests since Jan 01 00:00 (Define HPDeskJet930C como tu impresora por defecto) # lpoptions -d HPDeskJet930C |
Listado de Código 5.3: Imprimiendo en *nix |
(Especifica la impresora a ser utilizada) # lp -d HPDeskJet930C anything.txt (Utiliza tu impresora por defecto) # lp foobar.whatever.ps |
Sólo apunta tu navegador web a http://printserver:631 en el cliente si deseas manejar tus impresoras y sus trabajos desde una interfaz web bonita. Reemplaza printserver con el nombre de la máquina que actúa como tu servidor de impresión, no el nombre que le diste al servidor de impresión cups si es que utilizaste distintos.
Montando ficheros compartidos por Windows o Samba en GNU/Linux
Nota: No olvides instalar net-fs/mount-cifs o net-fs/samba en lo(s) cliente(s) que van a acceder a los recursos compartidos. |
Ahora es tiempo de configurar nuestro núcleo para que soporte CIFS. Dado que asumiré que todos hemos compilado el núcleo al menos una vez, hay que asegurarnos que estén seleccionadas todas las opciones adecuadas. En nombre de la simplicidad, compila las opciones como módulo para facilitar el uso. Es la opinión del autor que los módulos del núcleo son una buena opción y deben ser utilizados siempre que sea posible.
Listado de Código 5.4: Opciones del núcleo relevantes |
CONFIG_CIFS=m |
Luego haz una instalación del módulo; insertándolo con:
Listado de Código 5.5: Cargando el módulo del núcleo |
# modprobe cifs
|
Una vez que los módulos son cargados, montar lo compartido por Windows o Samba es posible. Utiliza mount para lograrlo, como se detalla aquí:
Listado de Código 5.6: Montando un compartido Windows/Samba |
(La sintaxis para montar un compartido por Windows/Samba es: mount -t cifs [-o username=xxx,password=xxx] //server/share /mnt/point So no estamos utilizando contraseñas o no son necesitadas) # mount -t cifs //PrintServer/public /mnt/public (Si necesitamos contraseña) # mount -t cifs -o username=USERNAME,password=PASSWORD //PrintServer/public /mnt/public |
Luego de montar la información compartida, debes poder acceder a ella como si estuviese en un disco local.
Configuración de la impresora para los clientes Windows NT/2000/XP
Eso es sólo un par clicks. Navega a \\PrintServer y haz click derecho en la impresora (HPDeskJet930C) y luego en conectar. Esto descargará los manejadores al cliente Windows y ahora cada una de las aplicaciones (como Word o Acrobat) ofrecerán HPDeskJet930C como una impresora disponible desde la cual imprimir. :-)
Bueno, eso debe ser todo. ¡Ahora debes tener un exitoso ambiente de impresión que es amigable tanto para Windows como par *nix además de archivos compartidos!.
Aquí están algunos enlaces que te ayudarán a configurar y solucionar problemas con tu instalación:
Revisa esta página del manual de Kurt Pfeifle "Soporte de impresión en Samba 3.0". ¡Hay mucho consejos útiles ahí! Asegúrate de revisar este primero, ¡antes de hacer preguntas y referirte a problemas! Quizás la solución que estás buscando está ahí.
El contenido de este documento está registrado bajo los términos de la licencia Creative Commons - Reconocimiento / Compartir Igual