Artigo ultra-completo: Compartilhando impressoras no Samba

Iniciado por gabriel0085, 19 de Novembro de 2007, 09:51

tópico anterior - próximo tópico

gabriel0085


Autor: Carlos E. Morimoto

Fonte: http://www.guiadohardware.net/tutoriais/impressoras-samba/pagina2.html





Compartilhando impressoras no Samba
Carlos E. Morimoto 30/10/2007


Este é um tutorial detalhado de como compartilhar impressoras no Samba, incluindo o uso de permissões de acesso, acesso a partir de clientes Linux e Windows e o uso do point-and-print, onde os drivers de impressão são automaticamente fornecidos pelo servidor quando os clientes se conectam à impressora.

O Samba oferece suporte aos mais diferentes sistemas de impressão, incluindo o BSD, SYSV, AIX, HPUX, QNX, PLP e LPRNG. Antigamente, criar um simples compartilhamento de impressora no Samba era uma tarefa espinhosa, já que você precisava verificar qual era o sistema de impressão usado na instalação do sistema e especificar os comandos de impressão manualmente na configuração do Samba, adicionado opções como estas na seção [global], ou na seção referente a cada compartilhamento:

printing = bsd
print command = /usr/bin/lpr -P%p %s; /bin/rm %s
lpq command = /usr/bin/lpq -P%p
lprm command = /usr/bin/lprm -P%p %j
queue pause command = /usr/sbin/lpc stop %p
queue resume command = /usr/sbin/lpc start %p


Com a popularização do Cups, tudo se tornou muito mais simples, pois você precisa apenas adicionar as opções "printing = cups" e "load printers = yes" na seção [global] do smb.conf e nada mais:

printing = cups
load printers = yes


Na verdade, nas versões recentes do Samba estas linhas nem mesmo são obrigatórias, pois o Cups já é o sistema de impressão usado por padrão e as impressoras disponíveis são carregadas por padrão quando o Samba encontra uma configuração válida no arquivo.



De qualquer forma, se você está usando alguma distribuição antiga, pode checar se a versão do Samba instalada inclui suporte ao Cups usando o comando "smbd -b", como em:

# smbd -b | grep CUPS

Ele deve responder:

HAVE_CUPS

Continuando, o primeiro passo para compartilhar a impressora é instalá-la no servidor, o que pode ser feito da forma tradicional, utilizando utilitários como o kaddprinterwizard ou o gnome-cups-add, o que, desde que a impressora seja bem suportada, é bastante simples nas distribuições atuais:



Estas ferramentas de configuração estão fortemente atreladas às bibliotecas do KDE e do Gnome, de forma que elas não estarão disponíveis se você fizer uma instalação enxuta do sistema no servidor, sem instalar os ambientes gráficos.

Naturalmente, os desenvolvedores do Cups pensaram nessa possibilidade e adicionaram uma interface de administração via web, similar ao Swat, que pode ser usada até mesmo no caso de servidores sem interface gráfica, que você acessa remotamente:



A interface de administração fica acessível através da porta 631 (TCP) do servidor e pode ser acessada através do navegador, tanto localmente (através do endereço http://127.0.0.1:631) quanto remotamente (através do http://servidor:631). O grande problema é que você tem acesso às opções administrativas, como adicionar ou remover impressoras apenas ao acessar a interface localmente, o que é um problema quando você está configurando o servidor remotamente.

É possível alterar as permissões de acesso, de forma a liberar o acesso para o endereço IP do seu micro de forma simples editando o arquivo de configuração do Cups, o "/etc/cups/cupsd.conf". Procure a seção referente à pasta "/admin" (onde estão concentradas as opções administrativas) e adicione uma linha autorizando o endereço IP da sua máquina logo depois do "Allow localhost", como em:

<Location /admin>
Order allow,deny
Allow localhost
Allow 192.168.1.10
</Location>


Depois da alteração, reinicie o serviço e você poderá acessar a interface sem limitações e assim fazer toda a configuração da impressora:

# /etc/init.d/cupsys restart

Depois de instalar e testar a impressora no servidor, o próximo passo é compartilhá-la através do Samba.

A forma mais simples de fazer isso é adicionar o compartilhamento "[printers]" no arquivo de configuração. Ele é um serviço interno do Samba, similar ao "[homes]", que permite compartilhar de uma vez todas as impressoras disponíveis no servidor e replica as mudanças na configuração do Cups de forma automática.

O serviço "[printers]" pode ser inclusive usado em conjunto com o "[homes]", basta adicionar as duas seções no arquivo de configuração. A única observação ao usar os dois em conjunto é que você não pode ter um usuário e uma impressora com o mesmo nome, caso contrário o servidor não conseguirá compartilhar a impressora.

A principal vantagem de usar o "[printers]" é que você não precisa especificar manualmente quais impressoras deseja compartilhar, basta configurar as impressoras no Cups e incluir a seção referente ao compartilhamento no smb.conf:

[printers]
comment = Todas as Impressoras
print ok = yes
guest ok = yes
path = /var/spool/samba


Um exemplo de arquivo completo, incluindo o compartilhamento, seria:

[global]
workgroup = GRUPO
netbios name = Servidor
encrypt passwords = true
preferred master = yes
os level = 100
printing = cups
load printers = yes

[homes]
comment = Home Directories
create mask = 0700
directory mask = 0700
browseable = No

[arquivos]
path = /mnt/hda6
writable = no
write list = @arquivos

[printers]
comment = Todas as Impressoras
path = /var/spool/samba
guest ok = yes
browseable = yes


A opção "print ok" é similar à opção "available" que usamos nos compartilhamentos de pastas. Ao usar o "print ok = yes" a impressora fica disponível e, ao usar "print ok = no" o compartilhamento é desativado temporariamente. É obrigatório incluir esta opção no compartilhamento, pois é justamente ela que indica que trata-se de um compartilhamento de impressora.

A opção "guest ok = yes" indica que a impressora deve ficar disponível para o uso de qualquer um. Se preferir que ela fique disponível apenas para os usuários cadastrados no Samba, mude para "guest ok = no".

A opção "path" indica o diretório do sistema onde serão armazenados os trabalhos de impressão. A pasta "/var/spool/samba" é usada por padrão e deve ter sido criada automaticamente durante a instalação do Samba. De qualquer forma, se mais para a frente você não conseguir imprimir, recebendo mensagens de "disco cheio" ou "acesso negado" a partir dos clientes, verifique se a pasta realmente existe e se as permissões estão corretas:

# ls -l /var/spool/ | grep samba

Ele deve responder algo como:

drwxrwxrwt 2 root root 4096 2008-01-24 15:37 samba

O drwxrwxrwt indica as permissões da pasta, no caso uma pasta pública onde todos os usuários podem ler e gravar arquivos. O último "t" indica o uso do sticky bit, uma precaução de segurança, que faz com que cada usuário possa alterar apenas seus próprios arquivos. Isso evita que algum engraçadinho consiga corromper trabalhos de impressão enviados por outros usuários.

Se você precisar criar manualmente a pasta, o comando para setar as permissões corretamente é:

# chmod 1777 /var/spool/samba/

(note o uso do "1", que ativa o stick bit)

Continuando, depois de reiniciar o Samba, ou aguardar o tempo de atualização as impressoras passarão a aparecer no ambiente de redes, com os mesmos nomes que foram definidos ao instalar as impressoras no servidor.

O Samba pode inclusive ser usado para centralizar as impressoras da rede, recompartilhando impressoras disponibilizadas por outros micros, desde que você as configure corretamente no Cups. Nesse screenshot, por exemplo, temos duas impressoras. A "E230" está instalada diretamente no servidor, enquanto a "Optra-E+" é uma impressora disponibilizada por outro micro. Como pode ver, o cliente pode visualizar e imprimir em ambas:


É possível também especificar individualmente o compartilhamento de cada impressora, o que é útil quando o servidor compartilha várias impressoras diferentes e você precisa especificar as permissões individualmente. A configuração a adicionar no arquivo de configuração é praticamente a mesma. A principal diferença é que agora você deve especificar o nome da impressora no nome do compartilhamento, ao invés de usar a string "printers", como em:

[E230]
print ok = yes
guest ok = yes
path = /var/spool/samba


Assim como no caso dos compartilhamentos de arquivos, você pode limitar o acesso à impressora com base nos endereços IP ou nomes das máquinas, com base nos logins de usuário, ou através de uma combinação de ambos, através das opções "hosts allow", "hosts deny", "valid users" e "invalid users". Estas opções podem ser usados tanto ao ativar o serviço [printers] quanto ao compartilhar as impressoras individualmente.

Para permitir que que a impressora seja usada por apenas alguns endereços específicos você usaria:

[E230]
print ok = yes
guest ok = yes
path = /var/spool/samba
hosts allow = 192.168.1.3, 192.168.1.4, 192.168.1.65


Você pode também usar os nomes das máquinas dentro da rede windows no lugar dos endereços IP, como em:

[E230]
print ok = yes
guest ok = yes
path = /var/spool/samba
hosts allow = micro1, micro2, micro3


Para bloquear o acesso à impressora para os usuários "joao" e "maria":

[E230]
print ok = yes
guest ok = no
path = /var/spool/samba
invalid users = joao, maria


Para inverter a lógica, permitindo que apenas os dois usem a impressora:

[E230]
print ok = yes
guest ok = no
path = /var/spool/samba
valid users = joao, maria


Para combinar as duas coisas, permitindo que a impressora seja usada apenas pelos dos usuários e, além disso apenas a partir de dois endereços específicos:

[E230]
print ok = yes
guest ok = no
path = /var/spool/samba
valid users = joao, maria
hosts allow = 192.168.1.3, 192.168.1.4


Continuando, a impressora pode ser instalada nos clientes Windows através do "Painel de Controle > Impressora > Adicionar Impressora > Impressora de rede" ou simplesmente clicando sobre ela no ambiente de rede. O Samba não se preocupa com o driver de impressão, apenas disponibiliza um spool remoto no qual os clientes podem colocar os trabalhos de impressão. Devido a isso, é necessário instalar os drivers de impressão nos clientes, da mesma forma que você faria ao instalar uma impressora local.

Inicialmente, você receberá uma mensagem de erro ao instalar a impressora nos clientes, avisando que o servidor não possui o driver instalado:



Esta mensagem se refere a outro recurso suportado por servidores Windows, onde você pode fazer o upload dos drivers de impressão para o servidor, de forma que os clientes possam obtê-los automaticamente ao se conectarem à impressora. Por enquanto ainda não configuramos isso, de forma que é preciso instalar a impressora da forma tradicional, fornecendo os drivers manualmente no cliente:


Naturalmente, as impressoras compartilhadas através do Samba podem também ser usadas a partir dos clientes Linux, que precisam apenas ter instalado o Cups e o cliente Samba. Ao instalar a impressora nos clientes, procure pela opção de instalar uma impressora Windows ou SMB, que é suportada pela maioria das ferramentas de configuração. No caso do kaddprinterwizard você usaria a opção "Impressora SMB compartilhada (Windows)" e no gnome-cups-add a opção "Impressora Windows (SMB)":





É possível também instalar as impressoras nos clientes Linux diretamente via linha de comando usando o comando "lpadmin", como em:

# lpadmin -p E230 -E -v smb://192.168.1.254/E230


O parâmetro "-p" especifica o nome da impressora, conforme será instalada no cliente (não precisa necessariamente ser o mesmo nome usado pelo servidor). O "-v" indica a localização da impressora (endereço IP ou nome do servidor e o nome do compartilhamento), nesse caso estamos instalando a impressora "E230" compartilhada pelo servidor disponível no endereço 192.168.1.254.

Se o compartilhamento no servidor incluir a opção "guest ok = yes" você conseguirá acessar a impressora diretamente, caso contrário você precisará especificar o login e senha ao instalá-la. Nesse caso, o comando ficaria:

# lpadmin -p E230 -E -v smb://gdh:12345@192.168.1.254/E230

Veja que o login e senha são especificados diretamente no comando, entre o "smb://" e o endereço do servidor, que é agora separado por um "@".




Veja também: Disponibilizando drivers de impressão para os clientes


ucastrobr

#2
A quanto tempo, Gabriel. Muito bom este tutorial, aliás o Carlos Morimoto manja muito. Está usando outra S.O de linux. Está estudando ainda Gabriel?
Mas não vai demorar para o Clcampos perceber que algumas imagens estão maiores que 40k de tamanho. Vai vir bufando.
Brincadeira Clcampos.
Spock – "After a time, you may find that having is not so pleasing a thing, after all, as wanting. It is not logical, but it is often true."
("Depois um de tempo você vai perceber que ter algo pode não ser tão prazeroso quanto deseja-lo. Isto não é lógico, mas frequentemente é verdade.")