Guía Gentoo Samba3/CUPS
1.
Introducción a esta guía
Propósito
Esta guía está diseñada para ayudarle 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 ayudarle a crear un ambiente de coexistencia de
distintas arquitecturas y tecnologías para que trabajen juntas de una
manera productiva.
Si sigue las líneas trazadas en esta guía, éstas deben ayudarle 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 los ajustes 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 CÓMO
publicado 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 de leer esta guía
Existen muchas otras guías para configurar CUPS y/o Samba. Por favor,
léalas también, ya que se muestran cuestiones que están fuera del
alcance 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
Después de presentar varios ajustes USE, la siguiente lista muestra
todos los títulos 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
- Acceder a la información compartida por Samba
Requerimientos
Necesitaremos lo siguiente:
- net-fs/samba
- net-print/cups (construido con el parámetro USE ppds)
- net-print/hplip (si posee 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á un núcleo con soporte para cifs activado, de manera que
pueda 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.
Conocer Samba
Los ajustes USE
Antes de instalar nada, echemos un vistazo a algunos de los
ajustes USE disponibles en Samba.
Listado de Código 2.1: Samba utiliza los siguientes ajustes USE: |
kerberos acl cups ldap pam readline python winbind
|
Dependiendo de la topología de red y de los requerimientos específicos
del servidor, los ajustes USE mostrados más abajo serán definidos
para incluir o no cierto soporte en el momento de instalar Samba.
| Ajuste 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. Revise 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 parcheada, 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 el ajuste 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 su servidor
Samba, que se requiere si los usuarios tienen que ingresar al
sistema de su servidor. Se recomienda utilizar conjuntamente el
ajuste USE kerberos.
|
| readline |
Enlaza Samba con libreadline. Es altamente recomendado y no
debería desactivarlo.
|
| python |
API para las llamadas en Python. Ofrece una API que permite a Python
interactuar con Samba.
|
| 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 vale la pena mencionar acerca de los ajustes
USE y las diferentes funcionalidades incluidas en Samba:
-
ACLS en ext2/3 se implementan 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 delc sistema de ficheros
que esté 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 encuentre útiles estos
enlaces en caso de que desee utilizarlas:
3.
Instalación del Software del Servidor
Haciendo emerge de Samba
Antes de nada: asegúrese de que todos los nombres de los anfitriones
(hostnames) sean resueltos de manera correcta, ya sea teniendo un
servidor de nombres de dominios (DNS) en su 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ía ser capaz de decir qué necesita exactamente de Samba
para su 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, los
ajustes USE son incluidos o excluidos específicamente.
Primero agregue ppds a los parámetros USE flags para asegurar
que CUPS se construya con el soporte apropiado para foomatic:
Listado de Código 3.1: Agregar 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
|
Esto instalará Samba y CUPS.
Haciendo emerge de net-print/hpijs
Solo necesitará este paquete si utiliza una impresora HP.
Listado de Código 3.3: Emerge hplip |
# emerge net-print/hplip
|
4.
Configuración del servidor
Configurar Samba
El archivo de configuración principal de Samba es
/etc/samba/smb.conf. Está dividido en secciones indicadas
por [nombresección]. 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 requiere más
detalles, mire 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 quiere utilizar la cuenta invitada de Samba para realizar todo lo
concerniente a la impresión desde los clientes Windows no defina
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.
Mire más abajo, también, cuando nos referimos a cupsaddsmb y
los problemas que pueden surgir. Utilice un usuario de impresión
dedicado, como printeruser o printer o printme o
cualquier otro. No hace ningún daño y de seguro le 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: Crear 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á actualizar /etc/nsswitch.conf para
que los sistemas Windows puedan ser encontrados fácilmente utilizando
NetBIOS:
Listado de Código 4.4: Editar /etc/nsswitch.conf |
# nano -w /etc/nsswitch.conf
hosts: files dns wins
|
Configurar 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 encuentre familiar. Resaltadas en el ejemplo
están las directivas que necesitará 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>
|
Edite /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
|
Edite /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: Configurar el servicio CUPS |
# rc-update add cupsd default
# /etc/init.d/cupsd restart
|
Instalar una impresora para y con CUPS
Antes de nada, vaya a LinuxPrinting.Org para buscar y
descargar el archivo PPD correcto para su impresora y CUPS. Para
hacerlo, haga clic en el enlace al listado impresoras (Printer
Listings) en la izquierda. Seleccione el fabricante de su impresora y
el modelo en el menú desplegable, por ejemplo, HP y DeskJet 930C. Haga
clic en "mostrar" (show). En la página que aparece haga clic en el
enlace de "manejador recomendado" (recommended driver), después de
haber leído las varias notas e información que brinda. Luego descargue
el archivo PPD de la página siguiente, después de haber leído nuevamente
las notas e información que da. Quizás tenga que seleccionar el
fabricante y el modelo de su impresora nuevamente. Leer la Guía de inicio
rápido de CUPS es también muy útil cuando se trabaja con CUPS.
Ahora tiene un archivo PPD para CUPS que trabaja con su
impresora. Colóquelo en /usr/share/cups/model. El PPD
para su HP DeskJet 930C ha sido nombrado
HP-DeskJet_930C-hpijs.ppd. Ahora debe instalar la
impresora. Esto se puede hacer 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 ser puede encontrar en
http://PrintServer:631.
Listado de Código 4.9: Instalar 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
|
Recuerde ajustarlo a su configuración. Asegúrese de tener el nombre
(el argumento -p) correcto (¡el nombre que definió durante la
configuración de Samba!) y colocar bien el usb:/dev/usb/blah,
parallel:/dev/blah o el dispositivo que utilice para su
impresora.
Ahora debe ser capaz de acceder a su impresora desde la interfaz web
y además deberá poder imprimir una página de prueba.
Instalar 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), haga clic derecho
en compartir impresora (printershare) y seleccione conectar (connect)
lo cual descargará mágicamente los manejadores adecuados 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. No parece haber diferencia entre la
funcionalidad de ambos, pero los controladores Adobe PS drivers
necesitan ser extraídos en un sistema Windows System ya que se
trata de un binario Windows. También el proceso completo de
encontrar y copiar los ficheros correctos es un poco más enrevesado.
Los controladores CUPS soportan algunas opciones que los de Adobe no
poseen.
Esta guía utiliza los manejadores CUPS para Windows. Instálelos
ejecutando la siguiente orden:
Listado de Código 4.10: Instalar los manejadores |
# emerge -av cups-windows
|
Ahora utilice el guión cupsaddsmb que viene junto con la
distribución de CUPS. Asegúrese de leer su página del manual (man
cupsaddsmb), ya que menciona qué manejadores Windows necesita
copiar al directorio apropiado de CUPS. Una vez que haya copiado los
manejadores, reinicie CUPS ejecutando /etc/init.d/cupsd
restart. Luego ejecute 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 esta orden es la causa común de la mayoría de los
problemas. Lea las entradas en
este hilo con 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 debe hacer es sustituir
PrintServer con localhost e intentarlo nuevamente.
-
La orden 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
puede intentar es definir temporalmente security = user en
su smb.conf. Luego/Si la instalación se completa
exitosamente, debe 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 tres archivos del manejador y el archivo PPD, renombrado
como ElNombreDeSuImpresora.ppd (el nombre que le asignó a su impresora
cuando la instaló).
Sin ningún otro error o complicación pendiente, sus manejadores deben
estar ahora instalados.
Finalizar 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
|
Probar 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: Ejecutar 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
...
...
|
Iniciar el servicio Samba
Ahora configuraremos Samba para que se inicie con el sistema; luego la
ejecutaremos.
Listado de Código 4.14: Configurar el servicio Samba |
# rc-update add samba default
# /etc/init.d/samba start
|
Revisar nuestro servicio
También sería prudente revisar nuestros registros al mismo tiempo.
De igual forma queremos echar un vistazo a lo que Samba está
compartiendo utilizando smbclient.
Listado de Código 4.15: Revisar 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. Haga lo mismo, o equivalente, en cualquier otro cliente
UNIX/Linux/BSD.
Listado de Código 5.1: Configurar un sistema Gentoo |
# emerge cups
# nano -w /etc/cups/client.conf
ServerName PrintServer
|
Eso debe ser todo. Nada más es necesario.
Si solo utiliza una impresora, la misma será su impresora por
defecto. Si su servidor de impresión maneja varias impresoras, su
administrador debe haber definido una impresora por defecto en el
servidor. Si quiere definir una impresora por defecto distinta,
utilice la orden lpoptions.
Listado de Código 5.2: Definiendo su 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
|
Solo apunte su navegador web a http://printserver:631 en el
cliente si desea manejar sus impresoras y sus trabajos desde una
interfaz web bonita. Reemplace printserver con el nombre de la
máquina que actúa como su servidor de impresión, no el nombre
que le dió al servidor de impresión cups si es que utilizó uno
distinto.
Montar ficheros compartidos por Windows o Samba en GNU/Linux
Nota:
No olvide instalar net-fs/samba en lo(s) cliente(s) que van a
acceder a los recursos compartidos.
|
Ahora es el momento 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, compile 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 haga una instalación del módulo; insertándolo con:
Listado de Código 5.5: Cargar 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. Utilice mount para lograrlo, como se
detalla aquí:
Listado de Código 5.6: Montar un compartido Windows/Samba |
# mount -t cifs //PrintServer/public /mnt/public
# mount -t cifs -o username=USERNAME,password=PASSWORD //PrintServer/public /mnt/public
|
Después de montar la información compartida, deberá poder acceder a
ella como si estuviese en un disco local.
Configuración de la impresora para los clientes Windows NT/2000/XP
Esto es solo un par clics. Navegue a \\PrintServer y haga
clic 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 debería 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 le ayudarán a configurar y solucionar
problemas con su instalación:
Solucionar Problemas
Revisa
esta página del manual de Kurt Pfeifle "Soporte de impresión en
Samba 3.0". ¡Hay mucho consejos útiles ahí! Asegúrese de revisar este
primero, ¡antes de hacer preguntas y solucionar problemas! Quizás la
solución que está buscando está ahí.
El contenido de este documento, a no ser que se especifique
expresamente, está registrado bajo los términos de la licencia
CC-BY-SA-2.5. Se aplican las
Pautas de
Utilización del logotipo y nombre de Gentoo.
|