---
authors:
  - 
    author: 'Chess Griffin'
    email: chess@chessgriffin.com
description: 'Como instalar e usar o CUPS no FreeBSD'
tags: ["CUPS", "FreeBSD", "Guide", "configuration", "introduction"]
title: 'CUPS no FreeBSD'
trademarks: ["freebsd", "general"]
---

= CUPS no FreeBSD
:doctype: article
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:source-highlighter: rouge
:experimental:
:images-path: articles/cups/

ifdef::env-beastie[]
ifdef::backend-html5[]
include::shared/authors.adoc[]
include::shared/mirrors.adoc[]
include::shared/releases.adoc[]
include::shared/attributes/attributes-{{% lang %}}.adoc[]
include::shared/{{% lang %}}/teams.adoc[]
include::shared/{{% lang %}}/mailing-lists.adoc[]
include::shared/{{% lang %}}/urls.adoc[]
:imagesdir: ../../../images/{images-path}
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]

ifndef::env-beastie[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]

[.abstract-title]
Resumo

Um artigo sobre como configurar o CUPS no FreeBSD.

'''

toc::[]

[[printing-cups]]
== 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 em UNIX(R). Ele foi desenvolvido pela Easy Software Products para promover uma solução padrão de impressão para todos os fornecedores e usuários de UNIX(R).

O CUPS utiliza o Protocolo de Impressão pela Internet (IPP) como base para gerenciar trabalhos e filas de impressão. Os protocolos Line Printer Daemon (LPD), Server Message Block (SMB) e AppSocket (também conhecido como JetDirect) também são suportados, porém com funcionalidade reduzida. O CUPS adiciona opções de visualização de impressoras em rede e impressão baseada em PostScript Printer Description (PPD) para suportar as necessidades de impressão do mundo real no ambiente UNIX(R). Como resultado, o CUPS é ideal para compartilhar e acessar impressoras em ambientes mistos de FreeBSD, Linux(R), Mac OS(R) X ou Windows(R).

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

[[printing-cups-install]]
== Instalando o CUPS Print Server

Para instalar o CUPS usando um binário pré-compilado, execute o seguinte comando em um terminal como root:

[source, shell]
....
# pkg install cups
....

Outros pacotes opcionais, mas recomendados, são o package:print/gutenprint[] e o package:print/hplip[], ambos adicionando drivers e utilitários para uma variedade de impressoras. Após a instalação, os arquivos de configuração do CUPS podem ser encontrados no diretório [.filename]#/usr/local/etc/cups#.

[[printing-cups-configuring-server]]
== Configurando o CUPS Print Server

Depois da instalação, alguns arquivos devem ser editados para configurar o servidor CUPS. Primeiramente, crie ou edite, caso necessário, o arquivo [.filename]#/etc/devfs.rules# e adicione a seguinte informação para definir as permissões apropriadas em todos os dispositivos de impressora potenciais e associar as impressoras ao grupo de usuários `cups`:

[.programlisting]
....
[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
....

[NOTE]
====
Observe que _X_, _Y_ e _Z_ devem ser substituídos pelo dispositivo USB de destino listado no diretório [.filename]#/dev/usb# que corresponde à impressora. Para encontrar o dispositivo correto, examine a saída do man:dmesg[8], onde [.filename]#ugenX.Y# lista o dispositivo da impressora, que é um link simbólico para um dispositivo USB em [.filename]#/dev/usb#.
====

Em seguida, adicione duas linhas no arquivo [.filename]#/etc/rc.conf# da seguinte maneira:

[.programlisting]
....
cupsd_enable="YES"
devfs_system_ruleset="system"
....

Essas duas entradas irão iniciar o servidor de impressão CUPS na inicialização e invocar a regra local do devfs criada acima, respectivamente.

Para habilitar a impressão CUPS em determinados clientes Microsoft(R) Windows(R), a linha abaixo deve ser descomentada nos arquivos [.filename]#/usr/local/etc/cups/mime.types# e [.filename]#/usr/local/etc/cups/mime.convs#:

[.programlisting]
....
application/octet-stream
....

Uma vez que as alterações tenham sido feitas, os sistemas man:devfs[8] e CUPS devem ser reiniciados, seja reiniciando o computador ou executando os seguintes dois comandos em um terminal root:

[source, shell]
....
# service devfs restart
# service cupsd restart
....

[[printing-cups-configuring-printers]]
== Configurando Impressoras no CUPS Print Server

Depois que o sistema CUPS foi instalado e configurado, o administrador pode começar a configurar as impressoras locais conectadas ao servidor de impressão CUPS. Esta parte do processo é muito semelhante, senão idêntica, à configuração de impressoras CUPS em outros sistemas operacionais baseados em UNIX(R), como uma distribuição Linux(R).

O principal meio para gerenciar e administrar o servidor CUPS é através da interface baseada na web, que pode ser encontrada ao iniciar um navegador e inserir o endereço http://localhost:631[http://localhost:631] na barra de endereço 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 há várias caixas de seleção que permitem fácil acesso às configurações comumente alteradas, como compartilhar impressoras conectadas ao sistema, permitir a administração remota do servidor CUPS e permitir que os usuários tenham acesso e privilégios adicionais às impressoras e trabalhos de impressão.

Adicionar uma impressora geralmente é tão fácil quanto clicar em "Adicionar Impressora" na tela de Administração da interface web do CUPS, ou clicar em um dos botões "Novas Impressoras Encontradas" também na tela de Administração. Quando for exibida a caixa de seleção "Dispositivo", simplesmente selecione a impressora local desejada e continue o processo. Se você tiver adicionado os pacotes package:print/gutenprint-cups[] ou package:print/hplip[], conforme referido acima, drivers de impressão adicionais estarão disponíveis nas telas subsequentes que podem fornecer mais estabilidade ou recursos.

[[printing-cups-clients]]
== Configurando clientes CUPS

Depois de configurar o servidor CUPS e adicionar as impressoras e publicá-las na rede, o próximo passo é configurar os clientes, ou seja, as máquinas que vão acessar o servidor CUPS. Se você tem um único desktop que atua como servidor e cliente, muitas dessas informações podem não ser necessárias.

[[printing-cups-clients-unix]]
=== UNIX(R) Clients

O CUPS também precisará ser instalado em seus clientes UNIX(R). Uma vez que o CUPS está instalado nos clientes, as impressoras CUPS compartilhadas na rede muitas vezes são automaticamente descobertas pelos gerenciadores de impressoras de vários ambientes de desktops, como o GNOME ou o KDE. Alternativamente, é possível acessar a interface CUPS local na máquina cliente em http://localhost:631[http://localhost:631] e clicar em "Adicionar Impressora" na seção de Administração. Ao ser apresentado com a caixa de seleção "Dispositivo", basta selecionar a impressora CUPS em rede, se ela foi descoberta automaticamente, ou selecionar `ipp` ou `http` e inserir o URI IPP ou HTTP da impressora CUPS em rede, geralmente em uma das duas seguintes sintaxes:

[.programlisting]
....
ipp://server-name-or-ip/printers/printername
....

[.programlisting]
....
http://server-name-or-ip:631/printers/printername
....

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

[.programlisting]
....
ServerName server-ip
....

Nesse caso, o _server-ip_ deve ser substituído pelo endereço IP local do servidor CUPS na rede.

[[printing-cups-clients-windows]]
=== Windows(R) Clients

Versões do Windows(R) anteriores ao XP não tinham a capacidade de se conectar em rede com impressoras baseadas em IPP. No entanto, as versões do Windows(R) XP e posteriores têm essa capacidade. Portanto, adicionar uma impressora CUPS nessas versões do Windows(R) é bastante fácil. Geralmente, o administrador do Windows(R) executa o `assistente de adição de impressora` do Windows(R), seleciona `Impressora de rede` e, em seguida, insere a URI no seguinte formato:

[.programlisting]
....
http://server-name-or-ip:631/printers/printername
....

Se você tiver uma versão mais antiga do Windows(R) sem suporte nativo de impressão IPP, o meio geral de conexão com uma impressora CUPS é usar o package:net/samba416[] e CUPS juntos, o que é um tópico fora do escopo deste capítulo.

[[printing-cups-troubleshooting]]
== Resolução de Problemas do CUPS

As dificuldades com o CUPS geralmente estão relacionadas a permissões. Primeiro, verifique novamente as permissões do man:devfs[8] conforme descrito acima. Em seguida, verifique as permissões reais dos dispositivos criados no sistema de arquivos. Também é útil garantir que seu usuário seja um membro do grupo `cups`. Se as caixas de seleção de permissões na seção de Administração da interface web do CUPS não parecerem estar funcionando, outra solução pode ser fazer backup manualmente do arquivo de configuração principal do CUPS localizado em [.filename]#/usr/local/etc/cups/cupsd.conf# e editar as várias opções de configuração e experimentar diferentes combinações de opções de configuração. Um exemplo de arquivo [.filename]#/usr/local/etc/cups/cupsd.conf# para teste é listado abaixo. Observe que este arquivo de exemplo [.filename]#cupsd.conf# sacrifica a segurança para facilitar a configuração; assim que o administrador se conectar com sucesso ao servidor CUPS e configurar os clientes, é aconselhável revisar este arquivo de configuração e começar a restringir o acesso.

[.programlisting]
....
# 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>
....
