CUPS no FreeBSD

Chess Griffin

Nota Legal

FreeBSD is a registered trademark of the FreeBSD Foundation.

Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this document, and the FreeBSD Project was aware of the trademark claim, the designations have been followed by the “™” or the “®” symbol.

1. Uma introdução ao Common Unix Printing System (CUPS)

O CUPS, o Common UNIX Printing System, fornece uma camada de impressão portátil para sistemas operacionais baseados no UNIX®. Ele foi desenvolvido pela Easy Software Products para prover uma solução de impressão padrão para todos os fornecedores e usuários do UNIX®.

O CUPS usa o Internet Printing Protocol (IPP) como base para gerenciar trabalhos de impressão e filas. O Line Printer Daemon (LPD), os protocolos Server Message Block (SMB) e AppSocket (também conhecido como JetDirect) também são suportados com funcionalidade reduzida. O CUPS adiciona opções de impressão com base em impressoras de rede e de impressão PostScript (PPD) para oferecer suporte à impressão no mundo UNIX®. Como resultado, o CUPS é ideal para compartilhar e acessar impressoras em ambientes heterogêneos nos quais coexistem equipamentos rodando FreeBSD, Linux®, Mac OS® X, e Windows®.

O site do CUPS é http://www.cups.org/.

2. Instalando o CUPS Print Server

Para instalar o CUPS utilizando binários pré compilados, execute o seguinte comando como root a partir de um terminal:

# pkg install cups

Outros pacotes opcionais, mas recomendados, são o print/gutenprint e o print/hplip, ambos adicionam drivers e utilitários para uma variedade de impressoras. Uma vez instalados, os arquivos de configuração do CUPS podem ser encontrados no diretório /usr/local/etc/cups.

3. Configurando o CUPS Print Server

Após a instalação, alguns arquivos devem ser editados para configurar o servidor CUPS. Primeiro, crie ou modifique, conforme o caso, o arquivo /etc/devfs.rules e adicione as seguintes informações para definir as permissões adequadas em todos os dispositivos de impressora e para associar impressoras ao grupo de usuários do cups:

[system=10]
add path 'unlpt*' mode 0660 group cups
add path 'ulpt*' mode 0660 group cups
add path 'lpt*' mode 0660 group cups
add path 'usb/X.Y.Z' mode 0660 group cups

Observe que X, Y e Z devem ser substituídos pelo dispositivo USB de destino listado no diretório /dev/usb que corresponde à sua impressora. Para encontrar o dispositivo correto, examine a saída do comando dmesg(8), onde ugenX.Y lista o dispositivo de impressora, que é um link simbólico para um dispositivo USB em /dev/usb.

Em seguida, adicione as linhas abaixo no /etc/rc.conf conforme abaixo:

cupsd_enable="YES"
devfs_system_ruleset="system"

Essas duas entradas iniciarão o servidor de impressão do CUPS após o boot do sistema e carregará a regra do devfs local acima, respectivamente.

Para habilitar a impressão via CUPS em alguns clientes Microsoft® Windows® você deverá remover o comentário da linha abaixo nos arquivos /usr/local/etc/cups/mime.types e /usr/local/etc/cups/mime.convs:

application/octet-stream

Uma vez que estas alterações tenham sido feitas, os sistemas devfs(8) e CUPS deverão ser reiniciados, seja reiniciando o computador ou executando os dois comandos a seguir como root em um terminal:

# /etc/rc.d/devfs restart
# /usr/local/etc/rc.d/cupsd restart

4. Configurando Impressoras no CUPS Print Server

Depois que o sistema CUPS tiver sido instalado e configurado, o administrador poderá começar a configurar as impressoras locais conectadas ao servidor de impressão CUPS. Essa parte do processo é muito semelhante, se não idêntica, à configuração de impressoras CUPS em outros sistemas operacionais baseados em UNIX®, como o Linux®.

O principal meio para gerenciar e administrar o servidor CUPS é através da sua interface web, que pode ser acessada por meio de um navegador web, para isto execute o navegador e digite a URL http://localhost:631 na barra de endereços do navegador. Se o servidor CUPS estiver em outra máquina na rede, substitua o endereço IP local do servidor por localhost. A interface Web do CUPS é bastante autoexplicativa, pois há seções para gerenciar impressoras e trabalhos de impressão, autorizar usuários e muito mais. Além disso, no lado direito da tela de administração, existem várias caixas de seleção que permitem acesso fácil a configurações comumente alteradas, como compartilhar impressoras conectadas ao sistema, permitir a administração remota do servidor CUPS, e se deseja permitir aos usuários acesso adicional e privilégios para as impressoras e trabalhos de impressão.

Adicionar uma impressora geralmente é tão fácil quanto clicar em "Adicionar impressora" na tela Administração da interface Web do CUPS ou clicar em um dos botões "Novas impressoras encontradas" também na tela Administração. Quando for apresentada a caixa suspensa "Device", basta selecionar a impressora conectada localmente a qual você deseja utilizar e continuar o processo. Se você adicionou os aplicativos print/gutenprint-cups e/ou print/hplip via ports ou pacotes conforme mencionado acima, os drivers de impressão adicionais estarão disponíveis nas telas subsequentes, eles lhe fornecer mais estabilidade ou mais recursos.

5. Configurando clientes CUPS

Depois que o servidor CUPS tiver sido configurado e as impressoras tiverem sido adicionadas e publicadas na rede, a próxima etapa será configurar os clientes ou as máquinas que acessarão o servidor CUPS. Se alguém tiver uma única máquina desktop atuando como servidor e cliente, muitas dessas informações podem não ser necessárias.

5.1. Clientes UNIX®

O CUPS também precisará ser instalado em seus clientes UNIX®. Depois que o CUPS é instalado nos clientes, as impressoras CUPS compartilhadas na rede geralmente são descobertas automaticamente pelos gerenciadores de impressoras de vários ambientes de desktop, como GNOME ou KDE. Como alternativa, pode-se acessar a interface local do CUPS na máquina cliente em http://localhost:631 e clicar em em "Adicionar impressora" na seção Administração. Quando visualizar a caixa suspensa "Device", simplesmente selecione a impressora CUPS em rede, se ela foi descoberta automaticamente, ou selecione ipp ou http e digite o IPP ou HTTP URI da impressora CUPS em rede, geralmente em um das duas seguintes sintaxes:

ipp://server-name-or-ip/printers/printername
http://server-name-or-ip:631/printers/printername

Se os clientes CUPS tiverem dificuldade para localizar outras impressoras CUPS compartilhadas na rede, às vezes é útil adicionar ou criar um arquivo /usr/local/etc/cups/client.conf com uma única entrada da seguinte forma:

ServerName server-ip

Nesse caso, server-ip seria substituído pelo endereço IP local do servidor CUPS na rede.

5.2. Clientes Windows®

As versões do Windows® anteriores ao XP não tinham a capacidade utilizar impressoras em rede baseadas no protocolo IPP. No entanto, o Windows® XP e as versões posteriores têm essa capacidade. Portanto, adicionar uma impressora no CUPS nessas versões do Windows® é muito fácil. Geralmente, o administrador Windows® deverá executar o assistente do Windows® Adicionar impressora, e selecionar Impressora de rede e, em seguida, inserir o URI na seguinte sintaxe:

http://server-name-or-ip:631/printers/printername

Se alguém tiver uma versão mais antiga do Windows® sem suporte a impressão nativa IPP, o meio geral de se conectar a uma impressora no CUPS é usar o software net/samba410 e o CUPS juntos, o que é um tópico fora do escopo deste artigo.

6. Solução de problemas do CUPS

A maior parte dos problemas que ocorrem com o CUPS estão geralmente associados a problemas de permissão. Primeiro, verifique novamente as permissões do devfs(8) conforme descrito acima. Em seguida, verifique as permissões reais dos dispositivos criados no sistema de arquivos. Também é útil certificar-se de que seu usuário é membro do grupo cups. Se as caixas de seleção de permissões na seção Administração da interface Web do CUPS não estiverem funcionando, outra correção poderá ser o backup manual do arquivo de configuração principal do CUPS localizado em /usr/local/etc/cups/cupsd.conf e edite as várias opções de configuração e experimente diferentes combinações de opções de configuração. Um exemplo do /usr/local/etc/cups/cupsd.conf para testar está listado abaixo. Por favor note que este exemplo de arquivo cupsd.conf sacrifica a segurança para facilitar a configuração; Depois que o administrador se conectar com êxito ao servidor do CUPS e configurar os clientes, é aconselhável revisitar esse arquivo de configuração para começar a fechar o acesso.

# Log general information in error_log - change "info" to "debug" for
# troubleshooting...
LogLevel info

# Administrator user group...
SystemGroup wheel

# Listen for connections on Port 631.
Port 631
#Listen localhost:631
Listen /var/run/cups.sock

# Show shared printers on the local network.
Browsing On
BrowseOrder allow,deny
#BrowseAllow @LOCAL
BrowseAllow 192.168.1.* # change to local LAN settings
BrowseAddress 192.168.1.* # change to local LAN settings

# Default authentication type, when authentication is required...
DefaultAuthType Basic
DefaultEncryption Never # comment this line to allow encryption

# Allow access to the server from any machine on the LAN
<Location />
  Order allow,deny
  #Allow localhost
  Allow 192.168.1.* # change to local LAN settings
</Location>

# Allow access to the admin pages from any machine on the LAN
<Location /admin>
  #Encryption Required
  Order allow,deny
  #Allow localhost
  Allow 192.168.1.* # change to local LAN settings
</Location>

# Allow access to configuration files from any machine on the LAN
<Location /admin/conf>
  AuthType Basic
  Require user @SYSTEM
  Order allow,deny
  #Allow localhost
  Allow 192.168.1.* # change to local LAN settings
</Location>

# Set the default printer/job policies...
<Policy default>
  # Job-related operations must be done by the owner or an administrator...
  <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs \
Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription \
Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job \
CUPS-Move-Job>
    Require user @OWNER @SYSTEM
    Order deny,allow
  </Limit>

  # All administration operations require an administrator to authenticate...
  <Limit Pause-Printer Resume-Printer Set-Printer-Attributes Enable-Printer \
Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs \
Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer \
Promote-Job Schedule-Job-After CUPS-Add-Printer CUPS-Delete-Printer CUPS-Add-Class \
CUPS-Delete-Class CUPS-Accept-Jobs CUPS-Reject-Jobs CUPS-Set-Default>
    AuthType Basic
    Require user @SYSTEM
    Order deny,allow
  </Limit>

  # Only the owner or an administrator can cancel or authenticate a job...
  <Limit Cancel-Job CUPS-Authenticate-Job>
    Require user @OWNER @SYSTEM
    Order deny,allow
  </Limit>

  <Limit All>
    Order deny,allow
  </Limit>
</Policy>