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
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
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 smb.conf.

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 (usado nas distribuições com o KDE) o gnome-cups-add (o utilitário equivalente no Gnome) ou o system-config-printer (usado no Fedora e no CentOS) o que, desde que a impressora seja bem suportada pelo sistema, é bastante simples nas distribuições atuais:

Configurando a impressora pelo gnome-cups-add 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 do Cups
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ê só tem acesso às opções administrativas (como adicionar ou remover impressoras) ao acessar a interface usando um navegador rodando no servidor, 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>
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
Compartilhando a impressora no Samba
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
comment = Todas as Impressoras
print ok = yes
guest ok = yes
path = /var/spool/samba
Aqui, temos um exemplo de arquivo completo, incluindo o compartilhamento:
[global]
netbios name = Hades
workgroup = Grupo
server string = Servidor
encrypt passwords = true
preferred master = yes
os level = 100
preferred master = yes
wins support = yesprinting = cups
load printers = yes<
netbios name = Hades
workgroup = Grupo
server string = Servidor
encrypt passwords = true
preferred master = yes
os level = 100
preferred master = yes
wins support = yesprinting = cups
load printers = yes<
[homes]
valid users = %S
create mask = 0700
directory mask = 0700
browseable = no
valid users = %S
create mask = 0700
directory mask = 0700
browseable = no
[arquivos]
path = /mnt/hda6
writable = no
write list = +arquivos
path = /mnt/hda6
writable = no
write list = +arquivos
[printers]
comment = Todas as Impressoras
path = /var/spool/samba
print ok = yes
guest ok = yes
browseable = yes
comment = Todas as Impressoras
path = /var/spool/samba
print ok = yes
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)
(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
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 nos 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 usadas tanto ao ativar o serviço [printers] quanto ao compartilhar as impressoras individualmente. Para permitir 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
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
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", utilizaríamos a opção "invalid users", assim como em um compartilhamento de arquivos:
[E230]
print ok = yes
guest ok = no
path = /var/spool/samba
invalid users = joao, maria
print ok = yes
guest ok = no
path = /var/spool/samba
invalid users = joao, maria
Similarmente, para inverter a lógica, permitindo que apenas os dois usem a impressora, usaríamos a opção "valid users":
[E230]
print ok = yes
guest ok = no
path = /var/spool/samba
valid users = joao, maria
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 dois usuários e, além disso, apenas a partir de dois endereços específicos, você usaria:
[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
print ok = yes
guest ok = no
path = /var/spool/samba
valid users = joao, maria
hosts allow = 192.168.1.3, 192.168.1.4
Configuração nos clientes
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), enquanto o "-v" indica a localização da impressora (endereço IP ou nome do servidor, seguido pelo nome do compartilhamento). Nesse exemplo, 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 a senha são especificados diretamente no comando, entre o "smb://" e o endereço do servidor, que é agora separado por um "@".
Disponibilizando drivers de impressão para os clientes
Em uma pequena rede, instalar os drivers manualmente ao configurar a impressora nos clientes não seria um grande problema, já que você poderia simplesmente carregar o CD de instalação, ou mesmo criar um compartilhamento de rede contendo os arquivos e fazer a instalação manualmente em cada um. Entretanto, em uma grande rede isso pode ser bastante tedioso. Chegamos então ao recurso de upload de drivers de impressão que, naturalmente, também é suportado pelo Samba. Ele consiste em um compartilhamento oculto, chamado "print$", que contém os drivers que serão fornecidos aos clientes. Depois de configurar o recurso, o uso das impressoras nos clientes torna-se muito mais simples, pois você precisa apenas clicar sobre o ícone da impressora no "Meus locais de rede" para instalá-la, recurso chamado de "point and print" ou "p-n-p" (diferente do PnP, de "plug-and-play"). O Windows exibe um aviso, confirmando a instalação do driver e em seguida, a impressora é instalada automaticamente:

Configurar este recurso é um pouco trabalhoso, mas não chega a ser difícil. Vamos lá :).
O primeiro passo é criar um usuário administrativo, que você usará para acessar o servidor a partir dos clientes Windows e assim poder dar o upload dos drivers. Comece criando o usuário no servidor e cadastrando-o no Samba da forma tradicional:
# adduser gdh
# smbpasswd -a gdh
# smbpasswd -a gdh
O próximo passo é ativar o uso de privilégios (que vamos usar mais adiante) no Samba e criar um compartilhamento chamado "print$", o compartilhamento oculto onde irão os drivers de impressão. Para isso, precisaremos fazer duas alterações no arquivo "/etc/samba/smb.conf". A primeira é adicionar a linha "enable privileges = yes" no final da seção "[global]", sem alterar as demais, como em:
[global]
workgroup = GRUPO
netbios name = Asus server
string = Servidor
encrypt passwords = true
wins support = yes
preferred master = yes
# invalid users = root
os level = 100enable privileges = yes
workgroup = GRUPO
netbios name = Asus server
string = Servidor
encrypt passwords = true
wins support = yes
preferred master = yes
# invalid users = root
os level = 100enable privileges = yes
Se você usou o Swat para configurar o arquivo, muito provavelmente ele conterá a linha "invalid users = root". É importante que esta linha seja removida ou comentada (como no meu exemplo), caso contrário você não conseguirá atribuir os privilégios para o usuário, como faremos em seguida. O próximo passo é incluir as linhas referentes ao compartilhamento "[printer$]", que é um pouco diferente de um compartilhamento normal:
[print$]
comment = Drivers de impressão para os clientes Windows
path = /var/smb/printers
read only = yes
write list = gdh
inherit permissions = yes
comment = Drivers de impressão para os clientes Windows
path = /var/smb/printers
read only = yes
write list = gdh
inherit permissions = yes
A opção "path" diz qual a pasta do servidor onde serão colocados os drivers. Aqui estou usando a pasta "/var/smb/printers", mas você pode usar outra pasta se quiser. Em seguida, usamos a opção "read only = yes" para que o compartilhamento seja somente-leitura e usamos a opção "write list" para criar uma exceção, permitindo que o usuário administrativo que criamos na etapa anterior possa gravar no compartilhamento. A segurança é importante, pois os drivers são baixados automaticamente para os clientes Windows, de forma que alguém mal intencionado que pudesse alterar o conteúdo da pasta poderia muito bem usar o serviço como um vetor para transmitir vírus e spywares para os clientes Windows da rede. Você pode também usar um grupo, como em "write list = +ntadmin" ou uma lista de usuários, como em "write list = gdh, admin"; o importante é limitar o acesso apenas às pessoas autorizadas. Não se esqueça de reiniciar o Samba ou aguardar alguns minutos para que as alterações entrem em vigor. O próximo passo é criar a pasta onde ficarão os drivers de impressão, criar as subpastas WIN40 (drivers para estações 95/98/ME) e W32X86 (estações com o NT/2000/XP) dentro dela e ajustar as permissões, de forma que o usuário criado tenha permissão para alterar o conteúdo da pasta e os demais possam apenas ler:
# mkdir -p /var/smb/printers
# cd /var/smb/printers
# mkdir WIN40 W32X86
# chown gdh WIN40 W32X86
# chmod 2775 WIN40 W32X86
# cd /var/smb/printers
# mkdir WIN40 W32X86
# chown gdh WIN40 W32X86
# chmod 2775 WIN40 W32X86
Falta agora uma etapa importante, que é transformar o usuário em um administrador de impressão no Samba, pois, sem isso, ele terá acesso ao compartilhamento mas não conseguirá dar upload dos drivers a partir dos clientes, usando o procedimento que veremos a seguir. Isso é feito usando o comando "net", usado para ajustar os privilégios dos usuários do Samba, que deve ser executado no servidor, como root. Se o servidor se chama "asus" e o usuário se chama "gdh", o comando seria:
# net -S localhost -U root -W ASUS rpc rights grant 'ASUSgdh' SePrintOperatorPrivilege
A opção "-S localhost -U root" diz que o comando net deve se conectar ao servidor Samba rodando na máquina local, usando a conta de root. A opção "-W ASUS" especifica o nome do servidor (como definido na configuração do Samba) e o "grant 'ASUSgdh' SePrintOperatorPrivilege" adiciona os privilégios para o usuário "gdh" do servidor "asus". Ele vai pedir a senha de root e, em seguida, exibir uma mensagem de confirmação:
Password:
Successfully granted rights.
Successfully granted rights.
Se nesse ponto você receber uma mensagem de erro, dizendo que não é possível se logar no servidor, muito provavelmente você esqueceu de comentar a linha "invalid users = root", esqueceu de adicionar a linha "enable privileges = yes" ou as alterações no arquivo ainda não entraram em vigor (nesse caso, experimente reiniciar o Samba manualmente, usando o "/etc/init.d/samba restart" ou o "service smb restart"). Com isso, concluímos a configuração no servidor. Os passos seguintes são feitos a partir de um cliente Windows da rede. O primeiro passo é se logar no cliente usando o mesmo login (gdh no exemplo) que foi criado no servidor, já que apenas ele possui as permissões necessárias para atualizar os drivers. Caso necessário, adicione o usuário na estação usando o "Painel de Controle > Contas de usuário". Acesse o servidor através do "Meus locais de rede", acesse a pasta "Impressoras e aparelhos de fax" e clique na opção "Arquivo > Propriedades do servidor" na janela principal do Explorer:

Na janela de propriedades, acesse a aba "drivers", que mostra os drivers disponíveis no servidor. Originalmente ela estará vazia; use o botão "Adicionar" para instalar os drivers de impressão desejados:

Se nesse ponto as opções não estiverem disponíveis, provavelmente você não adicionou o privilégio "SePrintOperatorPrivilege" para o usuário administrativo, ou não se logou usando o login correto na estação Windows. Clicando no "adicionar" é aberta a tela padrão de seleção do driver, onde você pode usar um dos drivers do Windows ou especificar a localização de um driver. Entretanto, diferente do que teríamos normalmente, os drivers não são propriamente instalados, mas apenas copiados para o compartilhamento "print$" do servidor. A idéia da ferramenta é justamente permitir que você adicione vários drivers diferentes, que atendam clientes rodando diferentes versões do Windows, por isso, a cada driver, é aberta uma nova janela de seleção, que pergunta a que versões do Windows o driver é destinado. Na lista, "Intel" corresponde a máquinas rodando as versões de 32 bits do Windows, enquanto "x64" corresponde a máquinas rodando as versões de 64 bits do sistema:

Dessa forma, você pode cadastrar um driver para máquinas com o Windows XP ou 2000, outra para os clientes com o 98/ME, outro para os com o XP de 64 bits e assim por diante. Se o servidor tiver mais de uma impressora instalada, você pode aproveitar para carregar os drivers das outras impressoras:

Nesse ponto, você verá que foram criadas subpastas dentro das pastas "/var/smb/printers/W32X86" e "/var/smb/printers/WIN40" do servidor, referentes aos drivers carregados. Por enquanto, os drivers foram apenas copiados para o servidor. É preciso ainda associar a impressora com o driver correspondente, para que o servidor passe a fornecê-lo para os clientes. Ainda logado com o usuário administrativo, clique com o botão direito sobre a impressora e acesse as propriedades:

Você receberá a mesma mensagem exibida ao instalar a impressora nos clientes, dizendo que o servidor não possui o driver de impressão (é justamente isso que estamos corrigindo, afinal :).

Nesse ponto, a resposta natural seria clicar no "OK", mas, se você fizer isso, vai abrir a tela de seleção do driver e acabar fazendo uma instalação local dos drivers da impressora que não é o que queremos. Por estranho que possa parecer, a resposta correta aqui é o botão "Cancelar", o que o levará às propriedades da impressora:

Dentro do menu de propriedades, acesse aba "Avançado" e especifique o driver que será usado na opção "Driver", que originalmente estará em branco. Com isso, o driver é associado com a impressora, fazendo com que o servidor passe a fornecê-lo para os clientes que se conectarem a ela, concluindo a configuração. Se o servidor tiver outras impressoras compartilhadas, faça o mesmo para as demais. Estes passos parecem estranhos e pouco intuitivos, mas são os mesmos passos que você usaria para instalar os drivers em um servidor de impressão Windows. O Samba simplesmente implementa as mesmas funções. Uma observação é que ativar o upload de drivers faz com que as impressoras compartilhadas, disponíveis na pasta "Impressoras e aparelhos de fax" sejam renomeadas para o nome "oficial" fornecido pelo driver. É por isso que a minha "E230" foi renomeada para "Lexmark Optra E+ (MS)". Se você não quiser que isso aconteça, adicione a opção "force printername = yes" na seção referente à impressora (ou na seção [printers]) do smb.conf, como em:
[E230]
print ok = yes
guest ok = yes
path = /var/spool/sambaforce printername = yes
print ok = yes
guest ok = yes
path = /var/spool/sambaforce printername = yes
Depois que a alteração é aplicada, a impressora volta a ser compartilhada com o nome definido por você. Vamos então a mais um exemplo de configuração, desta vez bem mais incrementado, incluindo o compartilhamento de impressoras, o compartilhamento para os drivers Windows, lixeira e outros recursos que vimos até aqui:
[global]
netbios name = Cartago
server string = Servidor
workgroup = Grupo
local master = yes
os level = 100
preferred master = yes
wins support = yes
map to guest = bad user
guest account = guest
vfs objects = recycle
recycle:keeptree = yes
recycle:versions = yes
recycle:repository = /mnt/sda2/trash/%U
recycle:exclude = *.tmp, *.log, *.obj, ~*.*, *.bak, *.iso recycle:exclude_dir = tmp, cache
printing = cups
load printers = yes
enable privileges = yes
netbios name = Cartago
server string = Servidor
workgroup = Grupo
local master = yes
os level = 100
preferred master = yes
wins support = yes
map to guest = bad user
guest account = guest
vfs objects = recycle
recycle:keeptree = yes
recycle:versions = yes
recycle:repository = /mnt/sda2/trash/%U
recycle:exclude = *.tmp, *.log, *.obj, ~*.*, *.bak, *.iso recycle:exclude_dir = tmp, cache
printing = cups
load printers = yes
enable privileges = yes
[lixeira]
path = /mnt/sda2/trash/%U
writable = yes
path = /mnt/sda2/trash/%U
writable = yes
[printers]
path = /var/spool/samba
print ok = yes
guest ok = yes
browseable = yes
path = /var/spool/samba
print ok = yes
guest ok = yes
browseable = yes
[print$]
path = /var/smb/printers
read only = yes
write list = gdh
inherit permissions = yes
path = /var/smb/printers
read only = yes
write list = gdh
inherit permissions = yes
[arquivos]
path = /mnt/hda2
writable = no
write list = +arquivos
path = /mnt/hda2
writable = no
write list = +arquivos
[engenharia]
path = /mnt/sda1/engenharia
writable = yes
valid users = +engenheiros
browseable = no
path = /mnt/sda1/engenharia
writable = yes
valid users = +engenheiros
browseable = no
[gerencia]
path = /mnt/sda1/gerencia
writable = yes
valid users = joao, maria
hosts allow = 192.168.1.2, 192.168.1.32
browseable = no
path = /mnt/sda1/gerencia
writable = yes
valid users = joao, maria
hosts allow = 192.168.1.2, 192.168.1.32
browseable = no
[publico]
path = /mnt/sda2/publico
writable = yes
guest ok = yes
path = /mnt/sda2/publico
writable = yes
guest ok = yes
[backup]
path = /mnt/sda2/backup/%U
writable = yes
valid users = %U
writable = yes
guest ok = no
path = /mnt/sda2/backup/%U
writable = yes
valid users = %U
writable = yes
guest ok = no
Este exemplo de configuração exige alguns passos adicionais para ser usado, incluindo a configuração das impressoras e a instalação dos drivers de impressão a partir dos clientes Windows, como vimos até aqui; ele não poderia ser usado diretamente em um servidor que você acabou de instalar. Ele inclui também o uso da lixeira para todos os compartilhamentos e o uso de 5 compartilhamentos de arquivos. Um deles é o compartilhamento "arquivos", que já utilizei em exemplos anteriores, onde os arquivos ficam disponíveis para todos os usuários, mas apenas os usuários cadastrados no grupo "arquivos" podem fazer alterações. Continuando, temos os compartilhamentos "engenharia" e "gerencia", que são um pouco mais seguros, acessíveis apenas para alguns usuários. Eles são também protegidos pela opção "browseable = no", que, como vimos, faz com que eles não sejam listados no ambiente de redes. Os três são complementados pelo compartilhamento "publico", que fica acessível para todos os usuários através do uso da conta "guest". Este exemplo não inclui o [homes], que substituí por um compartilhamento para armazenamento de backups. Ele utiliza a variável "%U" (nome do usuário) para criar pastas particulares, onde cada usuário pode armazenar seus backups. Para usá-lo, seria necessário criar diversas subpastas dentro da pasta "/mnt/sda2/backup", uma com o nome de cada usuário, e ajustar as permissões para que o usuário tenha acesso apenas à sua própria pasta, como em:
# mkdir /mnt/sda2/backup/joao
# chown joao:joao /mnt/sda2/backup/joao
# chown joao:joao /mnt/sda2/backup/joao
Todos os usuários verão o compartilhamento "backup" ao acessarem o servidor, mas devido ao uso da variável, cada um verá apenas sua própria pasta ao acessá-lo.
Compartilhando impressoras através do Cups
Ao compartilhar impressoras, o Samba atua mais como um spool de impressão do que como um servidor propriamente dito, já que o trabalho pesado é na verdade feito pelo servidor Cups rodando abaixo dele. O Samba se limita a receber os trabalhos de impressão enviados pelos clientes e repassá-los ao servidor de impressão. Se você está configurando um servidor Samba, é natural usá-lo para compartilhar também as impressoras, já que o Samba oferece diversas opções de controle de acesso e outras opções avançadas. Entretanto, o próprio Cups possui um recurso nativo de compartilhamento de impressoras, que além de atender outras máquinas Linux (como seria de se esperar) permite que as impressoras sejam usadas também pelos clientes Windows, de uma forma bastante simples. Para habilitar o compartilhamento, edite o arquivo "/etc/cups/cupsd.conf" (no servidor), deixando-o com o seguinte conteúdo:
Port 631
Listen 631
Browsing On
BrowseAllow All
BrowseInterval 30
BrowseAddress @LOCAL
BrowseInterval 30
Listen 631
Browsing On
BrowseAllow All
BrowseInterval 30
BrowseAddress @LOCAL
BrowseInterval 30
<Location />
Order allow,deny
Allow all
</Location>
Order allow,deny
Allow all
</Location>
<Location /printers>
Order allow,deny
Allow all
</Location>
Order allow,deny
Allow all
</Location>
<Location /admin>
Encryption Required
Order allow,deny
Allow localhost
</Location>
Order allow,deny
Allow localhost
</Location>
<Location /admin/conf>
AuthType Basic
Require user @SYSTEM
Order allow,deny
Allow localhost
</Location>
AuthType Basic
Require user @SYSTEM
Order allow,deny
Allow localhost
</Location>
Veja que a seção "<Location /printers>" dentro do arquivo (que define as permissões de acesso às impressoras) fica com permissão de acesso para todo mundo, enquanto o utilitário de administração do Cups (<Location /admin>) continua acessível apenas localmente, através do endereço http://127.0.0.1:631. No caso do Ubuntu e do Kubuntu é necessário um passo adicional. Os desenvolvedores optaram por mudar a configuração padrão, mantendo a porta utilizada pelo servidor Cups aberta apenas para o localhost, de forma que precisamos abrí-la para que os demais hosts da rede possam imprimir. A configuração de portas vai num arquivo separado, o "/etc/cups/cups.d/ports.conf". Edite-o, substituindo a linha:
Listen localhost:631
Por:
Listen 631
Até aqui, não estamos impondo nenhum tipo de restrição, por isso contamos com o firewall para bloquear qualquer tentativa de impressão proveniente de micros da Internet. Você pode também fazer o compartilhamento de uma forma mais segura, especificando manualmente a faixa de endereços da rede local, ou mesmo especificando individualmente os endereços IP que poderão imprimir. Neste caso, as seções <Location /> (onde vai a configuração que permite aos clientes verem as impressoras disponíveis) e <Location /printers> ficaria:
<Location />
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
Allow From 192.168.1.*
</Location>
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
Allow From 192.168.1.*
</Location>
<Location /printers>
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
Allow From 192.168.1.*
</Location>
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
Allow From 192.168.1.*
</Location>
Não se esqueça de incluir o endereço "127.0.0.1" na lista. Caso contrário, todo mundo vai imprimir na impressora, menos você mesmo. :)
Configuração das impressoras nos clientes
Além da configuração mais simples, outra vantagem de compartilhar através do Cups é que as impressoras podem ser configuradas automaticamente nos clientes Linux, sem necessidade de qualquer configuração manual. Basta manter a opção "browsing" ativa na configuração do Cups (/etc/cups/cupsd.conf) nos clientes, como em:
LogLevel warning
SystemGroup lpadmin
Listen localhost:631
Listen /var/run/cups/cups.sock Browsing On
BrowseOrder allow,deny
BrowseAllow @LOCAL
BrowseAddress @LOCAL
SystemGroup lpadmin
Listen localhost:631
Listen /var/run/cups/cups.sock Browsing On
BrowseOrder allow,deny
BrowseAllow @LOCAL
BrowseAddress @LOCAL
A opção "browsing" faz com que os clientes Linux da rede reconheçam automaticamente a impressora compartilhada e a configurem automaticamente durante o boot, sem necessidade de nenhuma intervenção manual. É um recurso bastante interessante: você dá boot usando uma distribuição Live-CD no cliente, manda imprimir qualquer coisa e o trabalho é direcionado de forma automática para a impressora compartilhada no servidor, sem que você precise fazer nada para configurá-la. Funciona mais ou menos assim: durante o boot, o cliente manda um broadcast para a rede, perguntando se alguém está compartilhando impressoras. O servidor responde que está compartilhando a "e230" e aproveita para transmitir detalhes, como o modelo e driver usado pela impressora, configuração de impressão, etc. Como ambos estão rodando o Cups, significa que o cliente usa o mesmo conjunto de drivers de impressão do servidor; isso permite que ele simplesmente configure a impressora usando as informações recebidas, sem precisar perguntar nada ao usuário. O pacote de broadcast é reenviado periodicamente pelo cliente, permitindo que impressoras recentemente compartilhadas sejam descobertas. Caso existam mais impressoras na rede, você pode escolher qual usar nas preferências de impressão do cliente. É um recurso que funciona surpreendentemente bem.

Caso você precise adicionar a impressora manualmente, abra o kaddprinterwizard (ou outro utilitário de configuração disponível no cliente) e selecione a opção "Remote Cups Server". Forneça o endereço IP do servidor na rede local (ex: 192.168.1.10) e a porta onde o Cups está escutando, que por padrão é a 631. Isso mostrará uma lista das impressoras disponíveis no servidor. Basta escolher a que será usada, apontar o driver que será usado e configurar as opções da impressora (papel, qualidade de impressão, etc.).

Nos clientes Windows, a configuração é semelhante. Eles não suportam o recurso de configuração automática, por isso é preciso adicionar a impressora manualmente através do "Painel de Controle > Impressoras" e fornecer o CD com os drivers. Vamos por passos. Comece abrindo o navegador e acessando a página de administração do Cups no servidor. Ela fica disponível através do http://ip-do-servidor:631. Dentro da interface, acesse a opção "Manage Printers" e clique no link da impressora que será usada. Você verá um endereço, como "http://192.168.1.1:631/printers/e230", na barra do navegador. Este é o endereço "completo" da sua impressora, que vamos usar na instalação. De volta ao "Painel de Controle > Impressora", clique no "Adicionar Impressora" e marque a opção "Impressora de rede". Selecione a opção "Conectar-se a uma impressora na internet ou na intranet" e preencha o campo "URL" com o endereço completo da impressora (o "http://192.168.1.1:631/printers/e230" que anotamos no passo acima). Se você estiver usando o Windows 2000 sem o Service Pack 2 ou o XP sem atualizações, ele vai mostrar um erro estúpido, dizendo que não é possível se conectar à impressora, mas isso é esperado. Dê ok e volte à tela inicial. Marque agora a opção "Impressora local" e deixe marcado o "Detectar e instalar automaticamente impressora Plug and Play". Ele dará outro erro, simplesmente confirme e diga que quer indicar a impressora manualmente. Você verá que, apesar dos erros, a impressora aparecerá disponível no final da lista. Basta selecioná-la e continuar com o processo normal de instalação da impressora, fornecendo o CD de drivers, etc. Se você tem um servidor de impressão problemático na sua rede, que precisa ser reiniciado várias vezes ao dia, etc., recomendo que experimente substituí-lo por um servidor de impressão Linux. O Cups é um servidor de impressão bastante sólido e que utiliza poucos recursos da máquina. Isso permite que você utilize até mesmo uma máquina antiga como servidor de impressão. Lembre-se de que qualquer tipo de compartilhamento de rede é sempre um risco potencial de segurança. Se você for ativá-lo em um micro simultaneamente conectado à internet e à rede local, não se esqueça de habilitar o firewall, abrindo apenas para os endereços da rede local. O suporte a impressoras de rede compartilhadas no Cups foi incluído apenas a partir do Windows 2000. Para usar este recurso no Windows 95, 98 ou ME, você deve instalar o "Internet Printer Services", uma atualização disponibilizada pela Microsoft, que você pode baixar em:http://www.microsoft.com/windows98/downloads/contents/WUPreviews/IPP/Default.asp Depois de reiniciar, acesse o "Painel de Controle > Impressora", clique no "Adicionar Impressora" e marque a opção "Impressora de rede". Coloque o endereço da impressora (http://192.168.1.1:631/printers/e230, por exemplo) no lugar do caminho para a impressora e forneça o driver.
Fonte: www.guiadohardware.net/tutoriais/impressoras-samba/
Autor: Carlos E. Morimoto
Autor: Carlos E. Morimoto
Nenhum comentário:
Postar um comentário