Armazenar o driver de impressão do Windows no Samba para um servidor de impressão CUPS

3

Estou tentando configurar um servidor de impressão (Debian) para minhas estações de trabalho Windows e Linux (Ubuntu).

O que eu pretendo ter:

  • As impressoras são configuradas no CUPS do servidor de impressão. Fila são criadas e gerenciadas (pausa, transferência, etc.) aqui (id. A GUI da web).
  • As estações de trabalho Windows e Linux usam o servidor de impressão para imprimir: elas não precisam saber o endereço IP das impressoras.
  • As estações de trabalho do Windows podem definir configurações de impressão (duplex, cor, intercalação, grampeamento, livreto, furador etc.), pois poderiam ter instalado os drivers do Windows como "padrão" (clique duas vezes em .exe, direto comunicação com a impressora).
  • Os drivers de impressão são oferecidos às estações de trabalho do Windows pelo próprio servidor de impressão (o Samba chama isso de Point ' n'Print ).
  • Nenhuma senha de usuário (por enquanto, pode mudar no futuro).

Nota: a partir de agora, e a menos que especificado de outra forma, "CUPS" se referirá ao daemon do CUPS em execução no servidor de impressão que pretendo construir.

O que eu comecei a trabalhar atualmente:

  • As impressoras foram adicionadas ao CUPS usando ipp: // ou socket: // e os arquivos PPD do fabricante da impressora (ou HPLIP ). A impressão a partir do CUPS funciona (teste a página de impressão através da GUI da web).
  • A estação de trabalho Linux pode adicionar uma impressora localmente usando o assistente "adicionar impressora" do Ubuntu para procurar impressoras que são compartilhadas via CUPS: basta digitar o FQDN / IP do servidor de impressão.
  • As impressoras estão listadas em \ servidor de impressão \ navegadas a partir de uma estação de trabalho do Windows.
  • As impressoras são listadas por meio de smbclient -L print-server -N de uma estação de trabalho Linux.

Atualmente não está funcionando:

  • Não é possível adicionar o driver de impressora do Windows ao CUPS usando o MMC "printmanagement.msc" (recebo um erro "acesso negado"). Então O Point'n'Print do Samba não funcionará.

Eu entendo que há um problema na autenticação que impede o Windows de ler / gravar arquivos para instalar drivers no servidor Samba. Consegui fazer com que o Samba pedisse usuário / senha ao acessar o \ print-server \ a partir de uma estação de trabalho do Windows, mas nem a senha raiz do UNIX nem um usuário normal do UNIX funcionavam.

Atualmente trabalhando de forma estranha:

  • Se eu fornecer manualmente os drivers de impressora para a estação de trabalho Windows (já que o "Point'n'Print" não está funcionando) ao adicionar a impressora \ servidor_de impressão \, as configurações de impressão de usuário / estação de trabalho nem sempre serão consideradas.

    Parece que as opções padrão do CUPS interferem com as da estação de trabalho: Eu defino a impressão duplex desativada por padrão no CUPS, mas quero que funcione se o usuário marcar a caixa de seleção nas configurações de impressão.

    Onde devo ir para fazer o CUPS usar as configurações do usuário?

  • Tenho alguns problemas de codificação: algumas páginas impressas têm espaçamento entre letras incomum e aleatório.

    Existem algumas configurações que podem melhorar a compatibilidade de qualquer documento (PDF, Word, imagem, etc.)?

Ambiente:

  • Nenhum domínio do Windows envolvido: nenhum Active Directory, nenhum controlador de domínio primário / secundário do Microsoft / Samba.
  • Debian v8.2 "Jessie"
  • Samba v4.1 (nova instalação, sem outros compartilhamentos)
  • CUPS v1.7
  • Estações de trabalho do Windows: Windows 7 e amp; 8
  • Estações de trabalho Linux: Ubuntu 14.04
  • As impressoras são: Xerox e HP
  • HPLIP v3.14.6

smb.conf (todas as configurações padrão do pacote):

[global]
   workgroup = MYWORKGRP
   dns proxy = no
   log file = /var/log/samba/log.%m
   max log size = 1000
   syslog = 0
   panic action = /usr/share/samba/panic-action %d
   server role = standalone server
   passdb backend = tdbsam
   obey pam restrictions = yes
   unix password sync = yes
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
   pam password change = yes
   map to guest = bad user
   usershare allow guests = yes
[homes]
   comment = Home Directories
   browseable = no
   read only = yes
   create mask = 0700
   directory mask = 0700
   valid users = %S
[printers]
   comment = All Printers
   browseable = no
   path = /var/spool/samba
   printable = yes
   guest ok = no
   read only = yes
   create mask = 0700
[print$]
   comment = Printer Drivers
   path = /var/lib/samba/printers
   browseable = yes
   read only = yes
   guest ok = no

Pelo que li, muitos usam o Samba para compartilhar arquivos e impressoras em uma rede Windows, então tenho certeza de que estou perdendo algo em algum lugar ...

    
por CDuv 02.01.2016 / 02:52

1 resposta

1

1.

Então, o seu problema primeiro parece ser este:

Currently not working:

  • Cannot add the Windows printer driver to CUPS using the "printmanagement.msc" MMC (I get a "access denied" error). So Samba's Point'n'Print will not work.

Observe que os clientes Windows não recuperam seus drivers de impressora do CUPS , e o próprio CUPS não pode se comunicar diretamente com os clientes Windows.

Somente o Samba pode fazer isso, para que os clientes Windows recuperem seus drivers de impressora do Samba . O Samba se apresenta como um servidor de impressão do Windows para os clientes, e o Samba também fornecerá um compartilhamento especial (listado [print$] em smb.conf ) para que os clientes instalem automaticamente o drivers de. (Você deve tentar usar o caminho UNC de \myserver\print$ ou \myworkstation\print$ no Windows Explorer e ver os drivers de qualquer host que compartilhe uma impressora.)

Os usuários do Windows precisam de um privilégio especial para administrar impressoras e configurar / carregar drivers. Esse privilégio foi nomeado SePrintOperatorPrivilege pela Microsoft.

O Samba implementa o conjunto SMB de protocolos e procedimentos de rede do Windows para que os clientes Windows possam usar seus serviços.

Portanto, somente os usuários que têm esse privilégio concedido podem carregar e pré-configurar drivers de impressora em um servidor Samba, assim como seria o caso de um servidor de impressão do Windows.

Normalmente, você deve conceder o privilégio ao grupo Admins. do Domínio , além de talvez outro Grupo de Domínios que você possa ter chamado Nossos administradores de impressora . Presumo agora que o seu nome de domínio é MYDOMAIN .

Para conceder aos grupos de usuários nomeados esse direito, execute os seguintes comandos:

  net rpc rights grant "MYDOMAIN\Domain Admins" \
     SePrintOperatorPrivilege -U "MYDOMAIN\administrator"

  net rpc rights grant "MYDOMAIN\Our Printer Admins" \
     SePrintOperatorPrivilege -U "MYDOMAIN\administrator"

  net rpc rights grant "MYDOMAIN\User54321" \
     SePrintOperatorPrivilege -U "MYDOMAIN\administrator"

Em cada caso, você será solicitado a fornecer a senha de administrador do domínio:

  Enter MYDOMAIN\administrator's password:

Se você souber essa senha e tudo funcionar, você verá esta confirmação:

  Successfully granted rights.

Naturalmente, você pode conceder esse privilégio a um ou mais usuários de domínio individuais (exemplo acima: MYDOMAIN\User54321 ) também. Mas isso não é recomendado. Melhor conceder o privilégio a um grupo em vez de contas individuais. Isso permite adicionar e revogar o privilégio atualizando a associação ao grupo.

Para listar todos os usuários e grupos com o privilégio SePrintOperatorPrivilege concedido, insira:

  net rpc rights list privileges SePrintOperatorPrivilege\
     -U "MYDOMAIN\administrator"

Você deve ver a seguinte saída:

  SePrintOperatorPrivilege:
     BUILTIN\Administrators
     MYDOMAIN\Domain Admins
     MYDOMAIN\Our Printer Admins
     MYDOMAIN\User54321

Agora você criou a condição prévia que os usuários listados acima podem carregar e instalar drivers de impressora em seu servidor Samba.

( Atualização: Apenas observei mais de perto o smb.conf que você citou acima ... Substitua MYDOMAIN \ por MYWORKGRP \ pelos comandos que dei, ou pule-o completamente e apenas use um nome de usuário ou um nome de grupo conhecido pelo Samba.Você também pode tentar temporariamente guest ok = yes dentro da sub-rotina [print$] .Não se esqueça de configurá-lo de volta para no quando seus drivers estiverem no lugar ...)

2.

O seu problema segundo parece ser:

It seems CUPS default options interfere with the workstation's ones: I set duplex printing off by default on CUPS but want it to work if the user tick the checkbox on it's printing settings.

Where should I go to make CUPS use user's settings?

O

CUPS por padrão não "filtra" trabalhos de impressão que são entregues pelo Samba. Ele as processa como trabalhos "brutos" e apenas os passa para o dispositivo de hardware de impressão real.

Portanto, se o driver estiver instalado corretamente nos clientes de impressão do Windows, quaisquer opções de trabalho em que eles clicarem, devem ser respeitados pela impressora, independentemente das configurações padrão que podem ser configuradas no CUPS para impressão local do CUPS ...

Você não pode "fazer" o CUPS usar as configurações do usuário - o CUPS passará por elas.

    
por 03.04.2017 / 19:56