diff options
Diffstat (limited to 'docs/htmldocs/printer_driver2.html')
-rw-r--r-- | docs/htmldocs/printer_driver2.html | 744 |
1 files changed, 744 insertions, 0 deletions
diff --git a/docs/htmldocs/printer_driver2.html b/docs/htmldocs/printer_driver2.html new file mode 100644 index 0000000000..34208f8fee --- /dev/null +++ b/docs/htmldocs/printer_driver2.html @@ -0,0 +1,744 @@ +<HTML +><HEAD +><TITLE +>Printing Support in Samba 2.2.x</TITLE +><META +NAME="GENERATOR" +CONTENT="Modular DocBook HTML Stylesheet Version 1.57"></HEAD +><BODY +CLASS="ARTICLE" +BGCOLOR="#FFFFFF" +TEXT="#000000" +LINK="#0000FF" +VLINK="#840084" +ALINK="#0000FF" +><DIV +CLASS="ARTICLE" +><DIV +CLASS="TITLEPAGE" +><H1 +CLASS="TITLE" +><A +NAME="AEN1" +>Printing Support in Samba 2.2.x</A +></H1 +><HR></DIV +><DIV +CLASS="SECT1" +><H1 +CLASS="SECT1" +><A +NAME="AEN3" +>Introduction</A +></H1 +><P +>Beginning with the 2.2.0 release, Samba supports + the native Windows NT printing mechanisms implemented via + MS-RPC (i.e. the SPOOLSS named pipe). Previous versions of + Samba only supported LanMan printing calls.</P +><P +>The additional functionality provided by the new + SPOOLSS support includes:</P +><P +></P +><UL +><LI +><P +>Support for downloading printer driver + files to Windows 95/98/NT/2000 clients upon demand. + </P +></LI +><LI +><P +>Uploading of printer drivers via the + Windows NT Add Printer Wizard (APW) or the <A +HREF="http://imprints.sourceforge.net" +TARGET="_top" +>Imprints tool set + </A +></P +></LI +><LI +><P +>Support for the native MS-RPC printing + calls such as StartDocPrinter, EnumJobs(), etc... (See + the <A +HREF="http://msdn.microsoft.com/" +TARGET="_top" +>MSDN documentation + </A +> for more information on the Win32 printing API) + </P +></LI +><LI +><P +>Support for NT Access Control Lists (ACL) + on printer objects</P +></LI +><LI +><P +>Improved support for printer queue manipulation + through the use of an internal databases for spooled job + information</P +></LI +></UL +></DIV +><DIV +CLASS="SECT1" +><HR><H1 +CLASS="SECT1" +><A +NAME="AEN20" +>Configuration</A +></H1 +><P +>In order to support the uploading of printer driver + files, you must first configure a file share named [print$]. + The name of this share is hard coded in Samba's internals so + the name is very important (print$ is the service used by + Windows NT print servers to provide support for printer driver + download).</P +><DIV +CLASS="WARNING" +><P +></P +><TABLE +CLASS="WARNING" +BORDER="1" +WIDTH="100%" +><TR +><TD +ALIGN="CENTER" +><B +>Warning</B +></TD +></TR +><TR +><TD +ALIGN="LEFT" +><P +>Previous versions of Samba recommended using + a share named [printer$]. This name was taken from the + printer$ service created by Windows 9x clients when a + printer was shared. Windows 9x printer servers always have + a printer$ service which provides read-only access via no + password in order to support printer driver downloads.</P +><P +>However, the initial implementation allowed for a + parameter named <TT +CLASS="PARAMETER" +><I +>printer driver location</I +></TT +> + to be used on a per share basis to specify the location of + the driver files associated with that printer. Another + parameter named <TT +CLASS="PARAMETER" +><I +>printer driver</I +></TT +> provided + a means of defining the printer driver name to be sent to + the client.</P +><P +>These parameters, including <TT +CLASS="PARAMETER" +><I +>printer driver + file</I +></TT +> parameter, are being depreciated and should not + be used in new installations. For more information on this change, + you should refer to the <A +HREF="#MIGRATION" +>Migration section + </A +>of this document.</P +></TD +></TR +></TABLE +></DIV +><P +>You should modify the server's smb.conf file to create the + following file share (of course, some of the parameter values, + such as 'path' are arbitrary and should be replaced with + appropriate values for your site):</P +><P +><PRE +CLASS="PROGRAMLISTING" +>[print$] + path = /usr/local/samba/printers + guest ok = yes + browseable = yes + read only = yes + write list = ntadmin + </PRE +></P +><P +>The <A +HREF="smb.conf.5.html#WRITELIST" +TARGET="_top" +><TT +CLASS="PARAMETER" +><I +> write list</I +></TT +></A +> is used to allow administrative + level user accounts to have write access in order to update files + on the share. See the <A +HREF="smb./conf.5.html" +TARGET="_top" +> smb.conf(5) man page</A +> for more information on + configuring file shares.</P +><P +>The requirement for <A +HREF="smb.conf.5.html#GUESTOK" +TARGET="_top" +><B +CLASS="COMMAND" +> guest ok = yes</B +></A +> depends upon how your + site is configured. If users will be guaranteed to have + an account on the Samba host, then this is a non-issue.</P +><P +><I +CLASS="EMPHASIS" +>author's note: </I +>The non-issue is that + if all your Windows NT users are guarenteed to be authenticated + by the Samba server (such as a domain member server and the NT + user has already been validated by the Domain Controller in + order to logon to the Windows NT console), then guest access + is not necessary. Of course, in a workgroup environment where + you just want to be able to print without worrying about + silly accounts and security, then configure the share for + guest access. You'll probably want to add <A +HREF="smb.conf.5.html#MAPTOGUEST" +TARGET="_top" +><B +CLASS="COMMAND" +>map to guest = Bad User + </B +></A +> in the [global] section as well. Make sure + you understand what this parameter does before using it + though. --jerry]</P +><P +>In order for a Windows NT print server to support + the downloading of driver files by multiple client architectures, + it must create subdirectories within the [print$] service + which correspond to each of the supported client architectures. + Samba follows this model as well.</P +><P +>Next create the directory tree below the [print$] share + for each architecture you wish to support.</P +><P +><PRE +CLASS="PROGRAMLISTING" +> [print$]----- + |-W32X86 ; "Windows NT x86" + |-WIN40 ; "Windows 95/98" + |-W32ALPHA ; "Windows NT Alpha_AXP" + |-W32MIPS ; "Windows NT R4000" + |-W32PPC ; "Windows NT PowerPC" + </PRE +></P +><DIV +CLASS="WARNING" +><P +></P +><TABLE +CLASS="WARNING" +BORDER="1" +WIDTH="100%" +><TR +><TD +ALIGN="CENTER" +><B +>Warning</B +></TD +></TR +><TR +><TD +ALIGN="LEFT" +><P +><I +CLASS="EMPHASIS" +>ATTENTION! REQUIRED PERMISSIONS</I +></P +><P +>In order to currently add a new driver to you Samba host, + one of two conditions must hold true:</P +><P +></P +><UL +><LI +><P +>The account used to connect to the Samba host + must have a uid of 0 (i.e. a root account)</P +></LI +><LI +><P +>The account used to connect to the Samba host + must be a member of the <A +HREF="smb.conf.5.html" +TARGET="_top" +><TT +CLASS="PARAMETER" +><I +> printer admin</I +></TT +></A +> list.</P +></LI +></UL +><P +>Of course, the connected account must still possess access + to add files to the subdirectories beneath [print$].</P +></TD +></TR +></TABLE +></DIV +><P +>Once you have created the required [print$] service and + associated subdirectories, simply log onto the Samba server using + a root (or <TT +CLASS="PARAMETER" +><I +>printer admin</I +></TT +>) account + from a Windows NT 4.0 client. Navigate to the "Printers" folder + on the Samba server. You should see an initial listing of printers + that matches the printer shares defined on your Samba host.</P +><P +>The initial listing of printers in the Samba host's + Printers folder will have no printer driver assigned to them. + The way assign a driver to a printer is to view the Properties + of the printer and either</P +><P +></P +><UL +><LI +><P +>Use the "New Driver..." button to install + a new printer driver, or</P +></LI +><LI +><P +>Select a driver from the popup list of + installed drivers. Initially this list will be empty.</P +></LI +></UL +><P +>If you wish to install printer drivers for client + operating systems other than "Windows NT x86", you will need + to use the "Sharing" tab of the printer properties dialog.</P +><P +>Assuming you have connected with a root account, you + will also be able modify other printer properties such as + ACLs and device settings using this dialog box.</P +><P +>A few closing comments for this section, it is possible + on a Windows NT print server to have printers + listed in the Printers folder which are not shared. Samba does + not make this distinction. By definition, the only printers of + which Samba is aware are those which are specified as shares in + <TT +CLASS="FILENAME" +>smb.conf</TT +>.</P +><P +>Another interesting side note is that Windows NT clients do + not use the SMB printer share, but rather can print directly + to any printer on another Windows NT host using MS-RPC. This + of course assumes that the printing client has the necessary + privileges on the remote host serving the printer. The default + permissions assigned by Windows NT to a printer gives the "Print" + permissions to the "Everyone" well-known group.</P +><DIV +CLASS="SECT2" +><HR><H2 +CLASS="SECT2" +><A +NAME="AEN74" +>Support a large number of printers</A +></H2 +><P +>One issue that has arisen during the development + phase of Samba 2.2 is the need to support driver downloads for + 100's of printers. Using the Windows NT APW is somewhat + awkward to say the list. If more than one printer are using the + same driver, the <A +HREF="rpcclient.1.html" +TARGET="_top" +><B +CLASS="COMMAND" +>rpcclient's + setdriver command</B +></A +> can be used to set the driver + associated with an installed driver. The following is example + of how this could be accomplished:</P +><P +><PRE +CLASS="PROGRAMLISTING" +> + <TT +CLASS="PROMPT" +>$ </TT +>rpcclient pogo -U root%secret -c "enumdrivers" +Domain=[NARNIA] OS=[Unix] Server=[Samba 2.2.0-alpha3] + +[Windows NT x86] +Printer Driver Info 1: + Driver Name: [HP LaserJet 4000 Series PS] + +Printer Driver Info 1: + Driver Name: [HP LaserJet 2100 Series PS] + +Printer Driver Info 1: + Driver Name: [HP LaserJet 4Si/4SiMX PS] + + <TT +CLASS="PROMPT" +>$ </TT +>rpcclient pogo -U root%secret -c "enumprinters" +Domain=[NARNIA] OS=[Unix] Server=[Samba 2.2.0-alpha3] + flags:[0x800000] + name:[\\POGO\hp-print] + description:[POGO\\POGO\hp-print,NO DRIVER AVAILABLE FOR THIS PRINTER,] + comment:[] + + <TT +CLASS="PROMPT" +>$ </TT +>rpcclient pogo -U root%bleaK.er \ + <TT +CLASS="PROMPT" +>> </TT +> -c "setdriver hp-print \"HP LaserJet 4000 Series PS\"" +Domain=[NARNIA] OS=[Unix] Server=[Samba 2.2.0-alpha3] +Succesfully set hp-print to driver HP LaserJet 4000 Series PS. + </PRE +></P +></DIV +></DIV +><DIV +CLASS="SECT1" +><HR><H1 +CLASS="SECT1" +><A +NAME="AEN85" +>The Imprints Toolset</A +></H1 +><P +>The Imprints tool set provides a UNIX equivalent of the + Windows NT Add Printer Wizard. For complete information, please + refer to the Imprints web site at <A +HREF="http://imprints.sourceforge.net/" +TARGET="_top" +> http://imprints.sourceforge.net/</A +> as well as the documentation + included with the imprints source distribution. This section will + only provide a brief introduction to the features of Imprints.</P +><DIV +CLASS="SECT2" +><HR><H2 +CLASS="SECT2" +><A +NAME="AEN89" +>What is Imprints?</A +></H2 +><P +>Imprints is a collection of tools for supporting the goals + of</P +><P +></P +><UL +><LI +><P +>Providing a central repository information + regarding Windows NT and 95/98 printer driver packages</P +></LI +><LI +><P +>Providing the tools necessary for creating + the Imprints printer driver packages.</P +></LI +><LI +><P +>Providing an installation client which + will obtain and install printer drivers on remote Samba + and Windows NT 4 print servers.</P +></LI +></UL +></DIV +><DIV +CLASS="SECT2" +><HR><H2 +CLASS="SECT2" +><A +NAME="AEN99" +>Creating Printer Driver Packages</A +></H2 +><P +>The process of creating printer driver packages is beyond + the scope of this document (refer to Imprints.txt also included + with the Samba distribution for more information). In short, + an Imprints driver package is a gzipped tarball containing the + driver files, related INF files, and a control file needed by the + installation client.</P +></DIV +><DIV +CLASS="SECT2" +><HR><H2 +CLASS="SECT2" +><A +NAME="AEN102" +>The Imprints server</A +></H2 +><P +>The Imprints server is really a database server that + may be queried via standard HTTP mechanisms. Each printer + entry in the database has an associated URL for the actual + downloading of the package. Each package is digitally signed + via GnuPG which can be used to verify that package downloaded + is actually the one referred in the Imprints database. It is + <I +CLASS="EMPHASIS" +>not</I +> recommended that this security check + be disabled.</P +></DIV +><DIV +CLASS="SECT2" +><HR><H2 +CLASS="SECT2" +><A +NAME="AEN106" +>The Installation Client</A +></H2 +><P +>More information regarding the Imprints installation client + is available in the <TT +CLASS="FILENAME" +>Imprints-Client-HOWTO.ps</TT +> + file included with the imprints source package.</P +><P +>The Imprints installation client comes in two forms.</P +><P +></P +><UL +><LI +><P +>a set of command line Perl scripts</P +></LI +><LI +><P +>a GTK+ based graphical interface to + the command line perl scripts</P +></LI +></UL +><P +>The installation client (in both forms) provides a means + of querying the Imprints database server for a matching + list of known printer model names as well as a means to + download and install the drivers on remote Samba and Windows + NT print servers.</P +><P +>The basic installation process is in four steps and + perl code is wrapped around <B +CLASS="COMMAND" +>smbclient</B +> + and <B +CLASS="COMMAND" +>rpcclient</B +>.</P +><P +><PRE +CLASS="PROGRAMLISTING" +> + foreach (supported architecture for a given driver) + { + 1. rpcclient: Get the appropriate upload directory + on the remote server + 2. smbclient: Upload the driver files + 3. rpcclient: Issues an AddPrinterDriver() MS-RPC + } + + 4. rpcclient: Issue an AddPrinterEx() MS-RPC to actually + create the printer + </PRE +></P +><P +>One of the problems encountered when implementing + the Imprints tool set was the name space issues between + various supported client architectures. For example, Windows + NT includes a driver named "Apple LaserWriter II NTX v51.8" + and Windows 95 callsits version of this driver "Apple + LaserWriter II NTX"</P +><P +>The problem is how to know what client drivers have + been uploaded for a printer. As astute reader will remember + that the Windows NT Printer Properties dialog only includes + space for one printer driver name. A quick look in the + Windows NT 4.0 system registry at</P +><P +><TT +CLASS="FILENAME" +>HKLM\System\CurrentControlSet\Control\Print\Environment + </TT +></P +><P +>will reveal that Windows NT always uses the NT driver + name. The is ok as Windows NT always requires that at least + the Windows NT version of the printer driver is present. + However, Samba does not have the requirement internally. + Therefore, how can you use the NT driver name if is has not + already been installed?</P +><P +>The way of sidestepping this limitation is to require + that all Imprints printer driver packages include both the Intel + Windows NT and 95/98 printer drivers and that NT driver is + installed first.</P +></DIV +></DIV +><DIV +CLASS="SECT1" +><HR><H1 +CLASS="SECT1" +><A +NAME="AEN128" +><A +NAME="MIGRATION" +></A +>Migration to from Samba 2.0.x to + 2.2.x</A +></H1 +><P +>Given that printer driver management has changed + (we hope improved :) ) in 2.2.0 over prior releases, + migration from an existing setup to 2.2.0 can follow + several paths.</P +><DIV +CLASS="WARNING" +><P +></P +><TABLE +CLASS="WARNING" +BORDER="1" +WIDTH="100%" +><TR +><TD +ALIGN="CENTER" +><B +>Warning</B +></TD +></TR +><TR +><TD +ALIGN="LEFT" +><P +>The following smb.conf parameters are considered to be + depreciated and will be removed soon. Do not use them + in new installations</P +><P +></P +><UL +><LI +><P +><TT +CLASS="PARAMETER" +><I +>printer driver file (G)</I +></TT +> + </P +></LI +><LI +><P +><TT +CLASS="PARAMETER" +><I +>printer driver (S)</I +></TT +> + </P +></LI +><LI +><P +><TT +CLASS="PARAMETER" +><I +>printer driver location (S)</I +></TT +> + </P +></LI +></UL +></TD +></TR +></TABLE +></DIV +><P +>Here are the possible scenarios for supporting migration:</P +><P +></P +><UL +><LI +><P +>If you do not desire the new Windows NT + print driver support, nothing needs to be done. + All existing parameters work the same.</P +></LI +><LI +><P +>If you want to take advantage of NT printer + driver support but do not want to migrate the + 9x drivers to the new setup, the leave the existing + printers.def file. When smbd attempts to locate a + 9x driver for the printer in the TDB and fails it + will drop down to using the printers.def (and all + associated parameters). The <B +CLASS="COMMAND" +>make_printerdef</B +> + tool will also remain for backwards compatibility but will + be moved to the "this tool is the old way of doing it" + pile.</P +></LI +><LI +><P +>If you install a Windows 9x driver for a printer + on your Samba host (in the printing TDB), this information will + take precedence and the three old printing parameters + will be ignored (including print driver location).</P +></LI +><LI +><P +>If you want to migrate an existing <TT +CLASS="FILENAME" +> printers.def</TT +> file into the new setup, the current only + solution is to use the Windows NT APW to install the NT drivers + and the 9x drivers. This can be scripted using smbclient and + rpcclient. See the <A +HREF="http://imprints.sourceforge.net/" +TARGET="_top" +> Imprints insrallation client</A +> for an example. + </P +></LI +></UL +></DIV +></DIV +></BODY +></HTML +>
\ No newline at end of file |