Guía Gentoo Samba3/CUPS
1.
Introducción a esta guía
Propósito
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:
Antes que utilices esta guía
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í.
Pequeño vistazo general
Luego de presentar varias banderas USE, la siguiente lista muestra
todos los tópicos cubiertos como son presentados:
- En el servidor Samba:
- Instalación y configuración de Samba
- Instalación y configuración de CUPS
- Cómo agregar impresoras a CUPS
- Cómo añadir los manejadores PS para los clientes
Windows
- En los clientes Unix:
- Instalación y configuración de CUPS
- Configurar una impresora por defecto
- Montaje de información compartida Windows o Samba
- En los clientes Windows:
- Configuración de la impresora
- Accediendo a la información compartida por Samba
Requerimientos
Necesitaremos lo siguiente:
- net-fs/samba
- net-print/cups (con parámetro USE ppds)
- net-print/hplip (si tienes una impresora HP)
- Un núcleo apropiado (de preferencia 2.6)
- Una impresora (PS o no-PS)
-
Una conexión a red funcionando (casa/oficina/etc que consista en
más de una máquina)
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á.
2.
Llegando a conocer Samba
Las banderas USE
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:
-
ACLS en ext2/3 son implementadas a través de atributos extendidos
(EAs). EA y las opciones ACL del núcleo para ext2 y/o ext3
necesitarán ser activadas (dependiendo de cual sistema de archivos
estás utilizando - ambas pueden ser utilizadas).
-
Aunque las funcionalidades Directorio Activo, ACL y PDC están más
allá del alcance de esta Guía, puede que encuentres útiles estos
enlaces en caso que desees utilizarlas:
3.
Instalación del Software del Servidor
Emergiendo Samba
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.
Emergiendo net-print/hpijs
Sólo necesitarás este paquete si utilizas una impresora HP.
Listado de Código 3.3: Emerge hplip |
# emerge net-print/hplip
|
4.
Configuración del servidor
Configurando Samba
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]
workgroup =
server string = Samba Server %v
printcap name = cups
printing = cups
load printers = yes
log file = /var/log/samba/log.%m
max log size = 50
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
interfaces = lo eth0
bind interfaces only = yes
hosts allow = 127.0.0.1 192.168.1.0/24
hosts deny = 0.0.0.0/0
security = share
guest ok = yes
[print$]
comment = Printer Drivers
path = /etc/samba/printer
guest ok = yes
browseable = yes
read only = yes
write list = root
[HPDeskJet930C]
comment = HP DeskJet 930C Network Printer
printable = yes
path = /var/spool/samba
public = yes
guest ok = yes
printer admin = root
[printers]
comment = All Printers
browseable = no
printable = yes
writable = no
public = yes
guest ok = yes
path = /var/spool/samba
printer admin = root
[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
# 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
hosts: files dns wins
|
Configurando CUPS
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
ServerAdmin root@PrintServer
AccessLog /var/log/cups/access_log
ErrorLog /var/log/cups/error_log
LogLevel debug
MaxClients 100
BrowseAddress @IF(eth0)
<Location />
Order Deny,Allow
Deny From All
Allow From 192.168.1.*
</Location>
<Location /admin>
AuthType Basic
AuthClass System
Allow From 192.168.1.*
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 |
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 |
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 |
# rc-update add cupsd default
# /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
# 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:
-
El nombre de la máquina dado como parámetro para -h y
-H (PrintServer) usualmente no es resuelto
correctamente y no identifica el servidor de impresión para la
interacción CUPS/Samba. Si un error como Warning: No PPD file
for printer "CUPS_PRINTER_NAME" - skipping! (Advertencia: No
hay archivo PPD para la impresora "CUPS_PRINTER_NAME" -
¡saltando!) ocurre, la primera cosa que debes hacer es sustituir
PrintServer con localhost e intentarlo nuevamente.
-
El comando falla con NT_STATUS_UNSUCCESSFUL. Este mensaje
de error es bastante común, pero puede ser activado por distintos
problemas. Es, desafortunadamente, de poca ayuda. Una cosa que
puedes intentar es definir temporalmente security = user en
tu smb.conf. Luego/Si la instalación se completa
exitosamente, debes redefinirlo a share, o al valor que tenía
anteriormente.
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.
Finalizando la instalación
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 |
# /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
...
...
|
Iniciando el servicio Samba
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
|
Revisando nuestro servicio
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:
|
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
|
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 |
# lpstat -a
HPDeskJet930C accepting requests since Jan 01 00:00
laser accepting requests since Jan 01 00:00
# lpoptions -d HPDeskJet930C
|
Listado de Código 5.3: Imprimiendo en *nix |
# lp -d HPDeskJet930C anything.txt
# 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 |
# mount -t cifs //PrintServer/public /mnt/public
# 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. :-)
6.
Notas Finales
Un Adiós
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!.
7.
Enlaces y Recursos
Enlaces
Aquí están algunos enlaces que te ayudarán a configurar y solucionar
problemas con tu instalación:
Solucionando Problemas
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
|