Compartilhamento de Impressora: Ubuntu para ubuntu; Ubuntu para Windows

Iniciado por xluisfernando, 13 de Agosto de 2015, 18:52

tópico anterior - próximo tópico

xluisfernando

Apresentação

Embora exista uma infinidade de tutoriais tratando desse assunto, quando precisei fazer o procedimento verifiquei que a maioria deles não funcionou. Diante disso, pesquisando muito, encontrei uma solução satisfatória que permite o compartilhamento de impressora local instalada em máquina com Ubuntu, para outras máquinas clientes, com Ubuntu ou Windows.

O procedimento foi testado com Ubuntu 14.04LTS, compartilhando com Ubuntu 14.04LTS, 12.04LTS, Windows 7, Windows 8.1 e Windows 10.

Introdução

Uma situação comum. Você é um dos poucos que utiliza Linux e deseja utilizá-lo num escritório, onde todos usam Windows. Dependendo da situação, é cada um na sua, mas quando se precisa compartilhar as poucas impressoras disponíveis com os demais, a situação muda. Nem adianta demonstrar aos demais as vantagens do Ubuntu aos colegas se na hora de compartilhar a impressora a coisa aperta.

Então, como todo bom usuário Ubuntu, você procura tutoriais. A maioria diz que é simples, que basta abrir a configuração das impressoras e configurar o servidor de Impressão para publicar e permitir o acesso

Seria perfeito se fosse tão simples e se essa configuração, pela interface gráfica, funcionasse...

O fato é que para habilitar o compartilhamento de impressora local instalada em máquina como Ubuntu é preciso editar os arquivos de configuração do CUPS (Common Unix Printing System), para permitir que o sistema operacional funcione como um servidor de Impressão.

Configurando o servidor de impressão
Para tanto é preciso saber o endereço IP da máquina que vai compartilhar a Impressora. Rodando o terminal a partir dela:
Citarifconfig
Citarxluisfernando@ASUS-X550CA:~$ ifconfig
eth0       Encapsulamento do Link: Ethernet  Endereço de HW 00:40:F4:25:ED:AD
          inet end.: 192.168.0.3  Bcast:192.168.0.255  Masc:255.255.255.0
          endereço inet6: fe80::240:f4ff:fe25:edad/64 Escopo:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Métrica:1
          pacotes RX:6912 erros:0 descartados:0 excesso:0 quadro:0
          Pacotes TX:1389 erros:0 descartados:0 excesso:0 portadora:0
          colisões:0 txqueuelen:1000
          RX bytes:1928860 (1.8 MiB) TX bytes:272540 (266.1 KiB)
          IRQ:11 Endereço de E/S:0x4000

lo         Encapsulamento do Link: Loopback Local
          inet end.: 127.0.0.1  Masc:255.0.0.0
          endereço inet6: ::1/128 Escopo:Máquina
          UP LOOPBACK RUNNING  MTU:16436  Métrica:1
          pacotes RX:27174 erros:0 descartados:0 excesso:0 quadro:0
          Pacotes TX:27174 erros:0 descartados:0 excesso:0 portadora:0
          colisões:0 txqueuelen:0
          RX bytes:10998642 (10.4 MiB) TX bytes:10998642 (10.4 MiB)

Sabendo o IP, que no exemplo é o 192.168.0.3 numa conexão ethernet, temos a referência alvo para os computadores clientes.

Em seguida, editamos o arquivo /etc/cups/cupsd.conf
Citarsudo gedit /etc/cups/cupsd.conf
É preciso alterar o começo do arquivo e as referência Location, com atenção a linha Allow From 192.168.0.* que deve ser adequada ao endereço IP. O arquivo completo da configuração modificada é esse:
CitarDefaultCharset notused
LogLevel info
Printcap /var/run/cups/printcap
User cupsys
Group lpadmin
RunAsUser No
Port 631
Include cupsd-browsing.conf
BrowseAddress @LOCAL
SystemGroup lpadmin

<Location />
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
Allow From 192.168.0.*
</Location>

<Location /jobs>
AuthType Basic
AuthClass User
</Location>

<Location /admin>
AuthType Basic
AuthClass System
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
</Location>

<Policy default>
  JobPrivateAccess default
  JobPrivateValues default
  SubscriptionPrivateAccess default
  SubscriptionPrivateValues default
  <Limit Create-Job Print-Job Print-URI Validate-Job>
    Order deny,allow
  </Limit>
  <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 Cancel-My-Jobs Close-Job CUPS-Move-Job CUPS-Get-Document>
    Require user @OWNER @SYSTEM
    Order deny,allow
  </Limit>
  <Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default CUPS-Get-Devices>
    AuthType Default
    Require user @SYSTEM
    Order deny,allow
  </Limit>
  <Limit Pause-Printer Resume-Printer 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 Cancel-Jobs CUPS-Accept-Jobs CUPS-Reject-Jobs>
    AuthType Default
    Require user @SYSTEM
    Order deny,allow
  </Limit>
  <Limit CUPS-Authenticate-Job>
    Require user @OWNER @SYSTEM
    Order deny,allow
  </Limit>
  <Limit All>
    Order deny,allow
  </Limit>
</Policy>
<Policy authenticated>
  JobPrivateAccess default
  JobPrivateValues default
  SubscriptionPrivateAccess default
  SubscriptionPrivateValues default
  <Limit Create-Job Print-Job Print-URI Validate-Job>
    AuthType Default
    Order deny,allow
  </Limit>
  <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 Cancel-My-Jobs Close-Job CUPS-Move-Job CUPS-Get-Document>
    AuthType Default
    Require user @OWNER @SYSTEM
    Order deny,allow
  </Limit>
  <Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default>
    AuthType Default
    Require user @SYSTEM
    Order deny,allow
  </Limit>
  <Limit Pause-Printer Resume-Printer 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 Cancel-Jobs CUPS-Accept-Jobs CUPS-Reject-Jobs>
    AuthType Default
    Require user @SYSTEM
    Order deny,allow
  </Limit>
  <Limit Cancel-Job CUPS-Authenticate-Job>
    AuthType Default
    Require user @OWNER @SYSTEM
    Order deny,allow
  </Limit>
  <Limit All>
    Order deny,allow
  </Limit>
</Policy>

Após editar e salvar é preciso criar uma Impressora RAW, que será a compartilhada, editando o arquivo /etc/cups/printers.conf
Nessa edição é preciso copiar o conteúdo do arquivo da Impressora local e colá-lo na linha abaixo, alterando somente o nome da impressora para uma referência qualquer. No exemplo, o arquivo ficou assim:

Citarsudo gedit /etc/cups/printers.conf

Citar# Printer configuration file for CUPS v1.5.3
# Written by cupsd
# DO NOT EDIT THIS FILE WHEN CUPSD IS RUNNING

##Trecho  Original##
<Printer  HP-Deskjet-2050-J520-series>
UUID urn:uuid:111bf167-8925-3f42-5e06-76f3f9f17d55
Info HP-Deskjet-2050-J520-series
Location /usr/local/printerSpool
MakeModel HP Deskjet 2050 J520 series, hpcups 3.12.2
DeviceURI hp:/usb/HP-Deskjet-2050-J520-series?serial=BR725GR0D304KV
State Idle
StateTime 1439385310
Type 4
Accepting Yes
Shared Yes
JobSheets none none
QuotaPeriod 0
PageLimit 0
KLimit 0
OpPolicy default
ErrorPolicy retry-job
</Printer>

##Cópia editada##
<Printer  HP-Deskjet-2050-J520-Compartilhada>
UUID urn:uuid:111bf167-8925-3f42-5e06-76f3f9f17d55
Info HP-Deskjet-2050-J520-series
Location /usr/local/printerSpool
MakeModel HP Deskjet 2050 J520 series, hpcups 3.12.2
DeviceURI hp:/usb/HP-Deskjet-2050-J520-series?serial=BR725GR0D304KV
State Idle
StateTime 1439385310
Type 4
Accepting Yes
Shared Yes
JobSheets none none
QuotaPeriod 0
PageLimit 0
KLimit 0
OpPolicy default
ErrorPolicy retry-job
</Printer>

Feito isso, é preciso reiniciar o servidor de impressão CUPS
Citarsudo /etc/init.d/cups restart

Configuração nos clientes Ubuntu

A partir da máquina cliente,  abra o utilitário "Impressoras" digitando seu nome no Dash ou acessando o item "Configurações do sistema"



Clique em "Adicionar Impressora"



Clique na opção "Digite a URI"



Preencha o endereço da impressora na rede (IPP), coloando o IP da máquina do servidor / printers/ Impressora. No exemplo ficou assim:
Citaripp://192.168.0.3/printers/HP-Deskjet-2050-J520-Compartilhada

Escolha o drive adequado Impressora




Configuração nos clientes Windows


o método mais fácil de instalar a Impressora compartilhada pelo Ubuntu é localizar a máquina na rede, sem procurar pelo explorer.
Digitando a tecla Super (Logo Windows)+R para acessar executar um comando





Digita-se \\ e o IP do servidor de Impressão. No caso do exemplo:

Citar\\192.168.0.3

Isso fará com que o Windows Explorer abra uma janela com a conexão para a máquina do servidor. Nela, clica-se com o botão direito sobre o ícone da impressora e seleciona-se a opção "Conectar".



Com isso aparece uma caixa de diálogo para confirmação da instalação da Impressora e em seguida a janela para seleção do modelo.



Considerações Finais

Numa rede caseira clássica, com roteador DHCP ou mesmo ADSL, o provedor da Conexão atribui um endereço IP para a conexão externa (algo como 177.95.190.31), mas internamente, o roteador atribui endereços mais fixos, que permanecem até que o roteador seja reiniciado. Assim, no caso de queda de energia, por um tempo suficiente para que o roteador perdesse suas configurações, seria necessário repetir o procedimento.

Referências
http://wiki.ubuntu-br.org/Compartilhando_Impressora
http://www.edivaldobrito.com.br/como-compartilhar-uma-impressora-ubuntu-14-04/


Samsung Ativ Book i3 - Ubuntu 20.04LTS