summaryrefslogtreecommitdiff
path: root/docs/htmldocs/printer_driver2.html
diff options
context:
space:
mode:
Diffstat (limited to 'docs/htmldocs/printer_driver2.html')
-rw-r--r--docs/htmldocs/printer_driver2.html744
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"
+>&gt; </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