Univention Bugzilla – Bug 27340
Über Windows7 kann nicht aus dem notepad bzw. wordpad heraus gedruckt werden
Last modified: 2013-06-03 23:54:36 CEST
Ich habe ein Samba4 DC Slave (amd64) und ein in dessen Domäne gejointes Windows7 (amd64). Auf dem Slave wurden zwei Drucker eingerichtet (PDF Drucker und HPTechnik). Auf beiden kann ich mind. über acroread, notepad und wordpad nicht drucken. Über den IE funktioniert es jedoch. Im Anhang zwei mal die log.samba (debug/level=4) für je einen erfolgreichen Versuch (IE) und einen Fehlschlag (notpad) beim Drucken.
Created attachment 4407 [details] log.samba.fail
Created attachment 4408 [details] log.samba.ok
Acroread funktioniert.
UCS 3.1 will be the next release.
Das Problem tritt bei solchen Druckern auf, für die keine Treiber am Print-Share hinterlegt sind. Wenn das serverseitige Hinterlegen von Druckertreibern keine Option ist, dann man als Workaround für jeden Drucker dieser Art jeweils zwei Zeilen in /etc/samba/local.conf eintragen: [speziellerdruckername] use client driver = Yes und danach ucr commit /etc/samba/smb.conf; /etc/init.d/samba restart; ausführen. Einen wichtigen Hinweis gibt die smb.conf Manpage dazu: Man darf bei jedem Drucker anscheinend nur das eine oder das andere tun: Entweder "use client driver" oder einen serverseitig hinterlegten Druckertreiber mit dem Drucker *verknüpfen*. Das bedeutet, dass der Admin die Drucker an den Clients einheitlich eingebunden haben muss (!). ============================================================================== use client driver (S) This parameter applies only to Windows NT/2000 clients. It has no effect on Windows 95/98/ME clients. When serving a printer to Windows NT/2000 clients without first installing a valid printer driver on the Samba host, the client will be required to install a local printer driver. From this point on, the client will treat the printer as a local printer and not a network printer connection. This is much the same behavior that will occur when disable spoolss = yes. The differentiating factor is that under normal circumstances, the NT/2000 client will attempt to open the network printer using MS-RPC. The problem is that because the client considers the printer to be local, it will attempt to issue the OpenPrinterEx() call requesting access rights associated with the logged on user. If the user possesses local administator rights but not root privilege on the Samba host (often the case), the OpenPrinterEx() call will fail. The result is that the client will now display an "Access Denied; Unable to connect" message in the printer queue window (even though jobs may successfully be printed). If this parameter is enabled for a printer, then any attempt to open the printer with the PRINTER_ACCESS_ADMINISTER right is mapped to PRINTER_ACCESS_USE instead. Thus allowing the OpenPrinterEx() call to succeed. This parameter MUST not be enabled on a print share which has valid print driver installed on the Samba server. Default: use client driver = no ============================================================================== Anmerkung: Bei Windows 7 Druck aus Notepad erhält man keine Fehlermeldung und der Druckjob ist nicht erfolgreich sondern "versackt". PS: Kurze Notiz zum Thema Druckertreiber hochladen, was insbesondere von Windows 7 x64-Systemen aus nicht gut dokumentiert ist: * Die generelle Anleitung für Windows XP http://www.samba.org/samba/docs/man/Samba-Guide/happy.html#id2582657 gilt für x64 (Windows 7) Systeme in etwas modifizierter Form: 1. Druckertreiber x64 und x86 (!) downloaden. 2. Explorer > Netwerkumgebung > UCS-Server [click] 3. In der oberen Menüleiste "Remotedrucker anzeigen" auswählen 4. Rechtsclick auf die freie Fläche "Servereigenschaften...", Reiter "Teiber" > Hinzufügen > Weiter > x86 und x64 auswählen > Datenträger > .inf Datei aus den heruntergeladenen x64-Treibern auswählen. > Ok > Fertig stellen Dann werden die x64-Treiber zum Print-Share des Servers hochgeladen. Bei der folgenden Rückfrage nach x86-Treiber Speicherort der .inf Datei für x86 auswählen, Dann werden die x86-Treiber hochgeladen. Nun sind die Treiber auf dem Server hinterlegt (/var/lib/samba/printers). Dialog Schließen. 5. Dann geht's weiter nach der oben verlinkten Web-Anleitung für XP, nur kann man dann den Treiber aus einem Dropdown wählen. Also im Detail: Links-Klick auf den Drucker, dann Rechts-Klick > Eigenschaften Reiter "Erweitert" > Treiber aus Dropdown auswählen > OK/Übernehmen Wichtig: Popupdialog erscheint "Vertrauen Sie diesem Drucker?" Antwort: "Treiber installieren". Jetzt werden die auf dem Server hinterlegten Treiber für die lokale Architektur *heruntergeladen*. Wenn man Schritt 4 auslässt, kann man in Schritt 5 nur x86-Treiber uploaden, die dann aber später für den lokalen Client nicht verwendbar sind. Der Dowload entfällt somit und Windows hat dann weiterhin keinen Treiber für den Drucker installiert, sprich er ist nicht nutzbar.
Ich denke wir sollten das dem Admin transparent in dem UDM Modul anzeigen und dann über das Listener Modul in die Config schreiben. Ich glaube sonst wird das immer wieder zu Anfragen und Problemen führen. Der Default sollte IMHO pro Drucker dann "use client driver = yes" sein.
Das UDM Modul shares/printer bietet jetzt eine Option "Clientseitigen Windows Treiber verwenden" ("Use Windows client driver"), die auf das LDAP-Attribut univentionPrinterUseClientCriver abgebildet und durch den cups-printers.py Listener ausgewertet wird.
OK, die Konfigurationen werden richtig geschrieben. Drucken ist möglich. Changelog OK
Ich finde den Namen irreführend (sie stammt aus dem ebenso irreführenden Samba-Optionsnamen). Ich glaube "Druckertreiber-Einrichtung auf Windows-Clients erlauben" trifft es besser.
Hmm ggf. "Ohne serverseitig hinterlegte Druckertreiber"
UCS 3.1-0 has been released: http://forum.univention.de/viewtopic.php?f=54&t=2125 If this error occurs again, please use "Clone This Bug".