Compartilhar Impressoras com Samba no Ubuntu

Compartilhe:

Notebook conectado a uma impressora e compartilhando a impressora com o samba no ubuntu

Acabou de instalar uma ou mais impressoras no ubuntu e precisa compartilha-las com outros computadores ?

Essa é uma necessidade constante de pequenos escritórios, laboratórios de informática ou até mesmo em redes domésticas para permitir que vários computadores utilizem a mesma impressora.

Neste artigo, você vai aprender como compartilhar impressoras com samba no ubuntu disponibilizando-a(s) através da rede.

Se seu objetivo é acessar a partir de clientes windows impressoras disponíveis no ubuntu linux, este guia vai ajudar bastante.

Pré-requisitos

Antes de prosseguir é necessário ter:

  • Ubuntu LTS versão 24.04 ou 26.04 instalado no computador.
  • Conexão com a internet.
  • Impressora instalada no ubuntu.
  • Acesso a conta de usuário root ou o comando sudo configurado para executar os comandos do artigo.

Com todos esses pré-requisitos você já pode colocar em prática o conhecimento técnico para compartilhar impressoras com samba no ubuntu.

Instalando o samba no ubuntu

Antes de configurar qualquer compartilhamento, o primeiro passo é instalar o samba no sistema a partir dos repositórios oficiais do ubuntu.

A instalação é feita executando os comandos:

Após instalar o samba, configure o sistema para iniciar o daemon smbd e habilitar sua inicialização durante o boot.

A opção --now do comando systemctl inicia a unit (smb.service) imediatamente.

Configurando firewall para autorizar acesso ao samba

Essa etapa somente é necessária se o serviço (ufw) de firewall do ubuntu estiver ativo. Para checar se está ativo ou não, execute:

Se a saída for “Estado: inativo”, o serviço está inativo e você não precisa executar os comandos a seguir.

Mas se a saída for “Estado: ativo”, adicione uma regra para autorizar o acesso as impressoras compartilhadas no ubuntu.

Para verificar se a regra foi adicionada execute o comando:

Adicionar usuário ao samba

Para os clientes acessarem aos compartilhamentos de impressoras do samba é necessário adicionar uma conta de usuário no samba que será usada para autenticação a partir do cliente.

Primeiro cadastre no linux o usuário, com o mesmo nome que será utilizado no samba, no exemplo do tutorial, o nome do usuário é dlncloud:

A opção -s define que o shell do usuário é /bin/false, a opção -M faz com que o diretório home não seja criado, como o usuário vai ser usado apenas para acessar o compartilhamento a partir de um cliente, então não precisa de shell e nem pasta pessoal.

Com o usuário cadastrado no sistema, adicione a mesma conta ao samba usando o comando smbpasswd com a opção -a.

O programa smbpasswd solicita a senha que o usuário do samba vai usar para se autenticar, digite a senha e confirme quando requerido.

Compartilhando impressoras com samba no ubuntu

Uma configuração bastante utilizada em desktops linux é compartilhar todas as impressoras instaladas no sistema para acesso pela rede para que outros computadores utilizem.

Para configurar os compartilhamentos é necessário editar o arquivo “/etc/samba/smb.conf” do samba. Mas antes faça o backup do mesmo.

Crie um novo arquivo de configuração do Samba:

Dentro do arquivo, inclua as seguintes configurações:

Explicação de cada parâmetro:

[global] → Seção global, recebe todas as configurações aplicadas ao samba e a todos os compartilhamentos. Qualquer seção abaixo é um compartilhamento, [printers] por exemplo é um compartilhamento.

workgroup → Recebe como valor o nome do grupo de trabalho, mas em ambientes do active directory é o nome netbios do domínio.

security → Nível de segurança, define como o samba vai autenticar os usuários conectados aos seus serviços, incluindo os compartilhamentos. O valor user, faz o samba tentar autenticar usando o banco de dados do próprio samba.

printing = cups → define o sistema de impressão que o samba vai se comunicar para obter a lista de impressoras que serão compartilhadas. No exemplo é o CUPS.

load printers = yes → carrega automaticamente as impressoras instaladas no linux.

Agora adicione a seção responsável pelo compartilhamento das impressoras:

Explicação dos parâmetros:

[printers] → Seção especial usada para compartilhar todas as impressoras instaladas no linux.

comment → É usado para adicionar um comentário que descreve o compartilhamento.

path → Diretório que será compartilhado, no exemplo, é o diretório que irá armazenar os trabalhos de impressão antes de ser enviado para a impressora.

printable → Define que o compartilhamento é uma impressora.

Para aprender mais sobre cada parâmetro é altamente recomendado a leitura do manual do arquivo smb.conf.

Salve as alterações e execute o comando a seguir para o daemon smbd relê o arquivo “/etc/samba/smb.conf” e aplicar as configurações:

A partir desse momento, qualquer impressora instalada no sistema será disponibilizada via Samba pela rede de computadores para outros computadores.

Problema: Windows não lista as impressoras compartilhadas

Ao compartilhar impressoras com samba no ubuntu através do compartilhamento “[printers]” você pode se deparar com o seguinte problema: As impressoras não são exibidas ao acessar o servidor através de clientes windows.

O samba tem um arquivo de banco de dados chamado “printer_list.tdb”, ele armazena em cache informações das impressoras compartilhadas pelo samba.

Nas versões atuais do samba, o problema ocorre por que ao se conectar ao smbd a partir do windows ou um programa cliente, como o “smbclient” (do linux), não gerado um fluxo de comunicação RPC para consultar o CUPS e atualizar printer_list.tdb.

Ao invés disso, é feita uma consulta ao estado atual do cache (vazio), logo não tem impressoras a serem exibidas pelo samba, mesmo estando instaladas no sistema.

Ao executar o comando “ rpcclient -U “” -N localhost -c “enumprinters” ” para enumerar impressoras, por exemplo, é gerado uma comunicação via RPC, assim:

  • O daemon smbd inicia processos (samba-dcerpcd e samba-bgqd).
  • samba-bgqd se comunica com cups.
  • Enumera as impressoras.
  • Gera ou atualiza o printers_list.tdb.

Tudo isso acontece em segundo plano, e após a conclusão desse processo, as consultas subsequentes passam a retornar as impressoras corretamente. Mas não é viável fazer isso manualmente concorda ?

A solução

Se o samba não inicia “samba-bgqd” quando um cliente (windows ou smbclient) se conecta, então vamos fazer isso e deixa-lo em execução.

1. Crie o seguinte arquivo “/etc/systemd/system/samba-printer.service”:

E adicione a seguinte configuração:

2. Salve as alterações e execute o comando a seguir para o systemd relê o arquivo que foi criado:

3. Habilite para iniciar durante o boot e startar a unit para samba-bgqd ficar em execução:

E a última etapa é alterar a configuração do samba para que o cache (printer_list.tdb) não demorar tanto para ser atualizado.

Edite o arquivo “/etc/samba/smb.conf”:

E adicione na seção “[global]” a seguinte configuração:

Salve alterações e reinicie a unit smbd.service:

O parâmetro printcap cache time recebe como valor um número em segundos que o samba vai esperar antes do subsistema de impressão (cups) ser consultado novamente.

Na prática quer dizer o seguinte: O samba vai esperar 60 segundos, após esse tempo o sistema de impressão (CUPS) é consultado para obter a lista de impressoras instaladas no sistema e em seguida o arquivo printer_list.tdb é atualizado.

Agora que o printer_list.tdb atualiza a cada 1 minuto, o windows vai receber a lista de impressoras do cache. Teste a conexão com o samba, o resultado esperado é mostrar todas as impressoras compartilhadas.

E lembre-se, após instalar ou remover impressoras do sistema, vai demorar 1 minuto para a lista aparecer atualizada para o cliente.

Para instalar uma das impressoras no windows, usando um usuário com permissão administrativa, dê dois cliques com o botão esquerdo do mouse na impressora e instale o driver.

Compartilhar somente uma impressora no ubuntu

Em algumas situações, em vez de compartilhar todas as impressoras configuradas no sistema você pode querer compartilhar somente uma impressora.

Para essa tarefa, primeiro é necessário saber o nome da impressora que será compartilhada. Verifique quais impressoras estão instaladas localmente utilizando o comando:

No exemplo do artigo, a impressora “HP-laserjet-5000” será compartilhada. Edite o arquivo de configuração do samba:

Altere na seção “[global]” o valor do parâmetro “load printers” para “no”:

O valor “no” para o parâmetro “load printers” informa ao samba que não é para disponibilizar automaticamente todas as impressoras conectadas ao ubuntu.

Em seguida, crie uma nova seção, que deve ter o mesmo nome da impressora como aparece no sistema. No exemplo do artigo, é a impressora “HP-Laserjet-5000”, então a seção (compartilhamento) vai se chamar “[HP-Laserjet-5000]”.

Após incluir essa configuração salve as alterações e reinicie o daemon smbd para aplicar as configurações.

Testando acesso a partir do cliente windows

Após concluir a configuração para compartilhar impressoras com samba no ubuntu, você pode testar a conexão a partir de um cliente windows.

Utilize uma conta de usuário com permissão administrativa no windows, em seguida acesse o compartilhamento: abra o gerenciador de arquivos do windows, e digite na barra de endereço:
\\IP_do_desktop_ubuntu.

No exemplo do tutorial, o IP da máquina com ubuntu é 192.168.213.194, então o endereço completo é: \\192.168.213.194.

O resultado esperado é aparecer a(s) impressora(s) compartilhada(s) no ubuntu. A última configuração feita somente a impressora “HP-Laserjet-5000” estava compartilhada, então somente ela apareceu.

Para instalar a impressora no windows, utilizando um usuário com privilégios, dê dois cliques com o botão esquerdo do mouse na impressora que será instalada e instale seu driver.

Conclusão

Ao longo deste artigo você aprendeu a instalar o Samba, compartilhar impressoras com samba no ubuntu e também realizar o processo de compartilhar impressora no ubuntu individualmente para cenários mais específicos.

Também foi ensinado a configurar o serviço de firewall ufw do ubuntu para autorizar somente acessos aos compartilhamentos do samba.

E para se aprofundar mais vale a pena conhecer o nosso guia completo de estudos sobre o Servidor Samba para que conheça outras funções do samba e saiba implementa-las.

Se este guia ajudou você a configurar seu ambiente, deixe seu comentário abaixo com dúvidas, sugestões ou até mesmo compartilhe sua experiência para ajudar outras pessoas.

Navegue por tópicos:

Foto de Edson Oliveira
Edson Oliveira

Especialista em Linux, trabalhando com TI tem experiência no gerenciamento, solução de problemas e suporte de servidores linux em ambientes corporativos.

Professor de cursos voltados a linux, tecnologias open source e certificações LPI. Possui as certificações LPIC-1, LPIC-2 e LPIC-3 (Mixed Environment).

Navegue por tópicos:

Você também pode gostar:

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Vá além de configurar compartilhamento.

Aprenda a gerenciar de forma avançada compartilhamentos do Samba, administrar um Servidor de arquivos profissional com permissões avançadas, ACLs, segurança, gerenciamento do AD e muito mais.

Valorizamos sua privacidade

Utilizamos cookies para aprimorar sua experiência de navegação, exibir anúncios ou conteúdo personalizado e analisar nosso tráfego. Ao clicar no botão “Aceitar todos”, você concorda com nosso uso de cookies.

Para mais informações leia nossa Política de Privacidade.