diff options
author | Gerald Carter <jerry@samba.org> | 2001-04-24 19:09:42 +0000 |
---|---|---|
committer | Gerald Carter <jerry@samba.org> | 2001-04-24 19:09:42 +0000 |
commit | c8af938a0a7ec15c38076fc11d164f55737318f1 (patch) | |
tree | 20b734a400bfc37cbd7d648d0905e07a832e255d /docs/htmldocs/printer_driver2.html | |
parent | 55d0bdbf4a656fe457d180940ad0e700375ffc15 (diff) | |
download | samba-c8af938a0a7ec15c38076fc11d164f55737318f1.tar.gz samba-c8af938a0a7ec15c38076fc11d164f55737318f1.tar.xz samba-c8af938a0a7ec15c38076fc11d164f55737318f1.zip |
syncing up changes in 2.2
(This used to be commit ffbbe67dbfde7f7ce4bb70becfc696c395dbf6b2)
Diffstat (limited to 'docs/htmldocs/printer_driver2.html')
-rw-r--r-- | docs/htmldocs/printer_driver2.html | 527 |
1 files changed, 336 insertions, 191 deletions
diff --git a/docs/htmldocs/printer_driver2.html b/docs/htmldocs/printer_driver2.html index 34208f8fee..ac845b8433 100644 --- a/docs/htmldocs/printer_driver2.html +++ b/docs/htmldocs/printer_driver2.html @@ -33,53 +33,54 @@ NAME="AEN3" ></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 +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 +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 + 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 + Windows NT Add Printer Wizard (APW) or the + Imprints tool set (refer to <A HREF="http://imprints.sourceforge.net" TARGET="_top" ->Imprints tool set - </A -></P +>http://imprints.sourceforge.net</A +>). + </P ></LI ><LI ><P >Support for the native MS-RPC printing - calls such as StartDocPrinter, EnumJobs(), etc... (See - the <A + calls such as StartDocPrinter, EnumJobs(), etc... (See + the MSDN documentation at <A HREF="http://msdn.microsoft.com/" TARGET="_top" ->MSDN documentation - </A -> for more information on the Win32 printing API) - </P +>http://msdn.microsoft.com/</A +> + for more information on the Win32 printing API) + </P ></LI ><LI ><P >Support for NT Access Control Lists (ACL) - on printer objects</P + 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 + through the use of an internal databases for spooled job + information</P ></LI ></UL ></DIV @@ -92,88 +93,75 @@ 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 +><I +CLASS="EMPHASIS" +>WARNING!!!</I +> 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 +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 +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 +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 +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 +be used in new installations. For more information on this change, +you should refer to the <A HREF="#MIGRATION" ->Migration section - </A +>Migration section </A >of this document.</P -></TD -></TR -></TABLE -></DIV +><DIV +CLASS="SECT2" +><HR><H2 +CLASS="SECT2" +><A +NAME="AEN30" +>Creating [print$]</A +></H2 +><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 ><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 +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 + path = /usr/local/samba/printers + guest ok = yes + browseable = yes + read only = yes + write list = ntadmin</PRE ></P ><P >The <A @@ -182,70 +170,72 @@ TARGET="_top" ><TT CLASS="PARAMETER" ><I -> write list</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 +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 +>smb.conf(5) man page</A > for more information on - configuring file shares.</P +configuring file shares.</P ><P >The requirement for <A HREF="smb.conf.5.html#GUESTOK" TARGET="_top" ><B CLASS="COMMAND" -> guest ok = yes</B +>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 +site is configured. If users will be guaranteed to have +an account on the Samba host, then this is a non-issue.</P +><DIV +CLASS="NOTE" +><BLOCKQUOTE +CLASS="NOTE" ><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 +><B +>Author's Note: </B +>The non-issue is that if all your Windows NT users are guaranteed 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 +>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 +you understand what this parameter does before using it +though. --jerry</P +></BLOCKQUOTE +></DIV ><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 +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 +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 +>[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" @@ -259,38 +249,34 @@ WIDTH="100%" ><TD ALIGN="CENTER" ><B ->Warning</B +>ATTENTION! REQUIRED PERMISSIONS</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 + 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 + 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" + must be a member of the <A +HREF="smb.conf.5.html#PRINTERADMIN" TARGET="_top" ><TT CLASS="PARAMETER" ><I -> printer admin</I +>printer + admin</I ></TT ></A > list.</P @@ -298,97 +284,107 @@ CLASS="PARAMETER" ></UL ><P >Of course, the connected account must still possess access - to add files to the subdirectories beneath [print$].</P + 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 +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 +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 +></DIV +><DIV +CLASS="SECT2" +><HR><H2 +CLASS="SECT2" +><A +NAME="AEN65" +>Setting Drivers for Existing Printers</A +></H2 ><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 +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 + 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 + 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 +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 +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 +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 +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 ><DIV CLASS="SECT2" ><HR><H2 CLASS="SECT2" ><A -NAME="AEN74" +NAME="AEN78" >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 +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 +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 +associated with an installed driver. The following is example +of how this could be accomplished:</P ><P ><PRE CLASS="PROGRAMLISTING" > - <TT +<TT CLASS="PROMPT" >$ </TT >rpcclient pogo -U root%secret -c "enumdrivers" @@ -396,44 +392,185 @@ Domain=[NARNIA] OS=[Unix] Server=[Samba 2.2.0-alpha3] [Windows NT x86] Printer Driver Info 1: - Driver Name: [HP LaserJet 4000 Series PS] + Driver Name: [HP LaserJet 4000 Series PS] Printer Driver Info 1: - Driver Name: [HP LaserJet 2100 Series PS] + Driver Name: [HP LaserJet 2100 Series PS] Printer Driver Info 1: - Driver Name: [HP LaserJet 4Si/4SiMX PS] + Driver Name: [HP LaserJet 4Si/4SiMX PS] - <TT +<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:[] + flags:[0x800000] + name:[\\POGO\hp-print] + description:[POGO\\POGO\hp-print,NO DRIVER AVAILABLE FOR THIS PRINTER,] + comment:[] - <TT +<TT CLASS="PROMPT" >$ </TT >rpcclient pogo -U root%bleaK.er \ - <TT +<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 +Successfully set hp-print to driver HP LaserJet 4000 Series PS.</PRE ></P ></DIV +><DIV +CLASS="SECT2" +><HR><H2 +CLASS="SECT2" +><A +NAME="AEN89" +>Adding New Printers via the Windows NT APW</A +></H2 +><P +>By default, Samba offers all printer shares defined in <TT +CLASS="FILENAME" +>smb.conf</TT +> +in the "Printers..." folder. Also existing in this folder is the Windows NT +Add Printer Wizard icon. The APW will be show only if</P +><P +></P +><UL +><LI +><P +>The connected user is able to successfully + execute an OpenPrinterEx(\\server) with administrative + priviledges (i.e. root or <TT +CLASS="PARAMETER" +><I +>printer admin</I +></TT +>. + </P +></LI +><LI +><P +><A +HREF="smb.conf.5.html#SHOWADDPRINTERWIZARD" +TARGET="_top" +><TT +CLASS="PARAMETER" +><I +>show + add printer wizard = yes</I +></TT +></A +> (the default). + </P +></LI +></UL +><P +>In order to be able to use the APW to successfully add a printer to a Samba +server, the <A +HREF="smb.conf.5.html#ADDPRINTERCOMMAND" +TARGET="_top" +><TT +CLASS="PARAMETER" +><I +>addprinter +command</I +></TT +></A +> must have a defined value. The program +hook must successfully add the printer to the system (i.e. +<TT +CLASS="FILENAME" +>/etc/printcap</TT +> or appropriate files) and +<TT +CLASS="FILENAME" +>smb.conf</TT +> if necessary.</P +><P +>When using the APW from a client, if the named printer share does +not exist, <B +CLASS="COMMAND" +>smbd</B +> will execute the <TT +CLASS="PARAMETER" +><I +>add printer +program</I +></TT +> and reparse to the <TT +CLASS="FILENAME" +>smb.conf</TT +> +to attempt to locate the new printer share. If the share is still not defined, +an error of "Access Denied" is returned to the client. Note that the +<TT +CLASS="PARAMETER" +><I +>add printer program</I +></TT +> is executed undet the context +of the connected user, not necessarily a root account.</P +><P +>There is a complementing <A +HREF="smb.conf.5.html#DELETEPRINTERCOMMAND" +TARGET="_top" +><TT +CLASS="PARAMETER" +><I +>deleteprinter +command</I +></TT +></A +> for removing entries from the "Printers..." +folder.</P +></DIV +><DIV +CLASS="SECT2" +><HR><H2 +CLASS="SECT2" +><A +NAME="AEN114" +>Samba and Printer Ports</A +></H2 +><P +>Windows NT/2000 print servers associate a port with each printer. These normally +take the form of LPT1:, COM1:, FILE:, etc... Samba must also support the +concept of ports associated with a printer. By default, only one printer port, +named "Samba Printer Port", exists on a system. Samba does not really a port in +order to print, rather it is a requirement of Windows clients. </P +><P +>Note that Samba does not support the concept of "Printer Pooling" internally +either. This is when a logical printer is assigned to multiple ports as +a form of load balancing or fail over.</P +><P +>If you require that multiple ports be defined for some reason, +<TT +CLASS="FILENAME" +>smb.conf</TT +> possesses a <A +HREF="smb.conf.5.html#ENUMPORTSCOMMAND" +TARGET="_top" +><TT +CLASS="PARAMETER" +><I +>enumports +command</I +></TT +></A +> which can be used to define an external program +that generates a listing of ports on a system.</P +></DIV ></DIV ><DIV CLASS="SECT1" ><HR><H1 CLASS="SECT1" ><A -NAME="AEN85" +NAME="AEN122" >The Imprints Toolset</A ></H1 ><P @@ -451,7 +588,7 @@ CLASS="SECT2" ><HR><H2 CLASS="SECT2" ><A -NAME="AEN89" +NAME="AEN126" >What is Imprints?</A ></H2 ><P @@ -483,7 +620,7 @@ CLASS="SECT2" ><HR><H2 CLASS="SECT2" ><A -NAME="AEN99" +NAME="AEN136" >Creating Printer Driver Packages</A ></H2 ><P @@ -499,7 +636,7 @@ CLASS="SECT2" ><HR><H2 CLASS="SECT2" ><A -NAME="AEN102" +NAME="AEN139" >The Imprints server</A ></H2 ><P @@ -520,7 +657,7 @@ CLASS="SECT2" ><HR><H2 CLASS="SECT2" ><A -NAME="AEN106" +NAME="AEN143" >The Installation Client</A ></H2 ><P @@ -565,17 +702,16 @@ CLASS="COMMAND" ><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 - } +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 +4. rpcclient: Issue an AddPrinterEx() MS-RPC to actually + create the printer</PRE ></P ><P >One of the problems encountered when implementing @@ -615,7 +751,7 @@ CLASS="SECT1" ><HR><H1 CLASS="SECT1" ><A -NAME="AEN128" +NAME="AEN165" ><A NAME="MIGRATION" ></A @@ -639,7 +775,7 @@ WIDTH="100%" ><TD ALIGN="CENTER" ><B ->Warning</B +>Achtung!</B ></TD ></TR ><TR @@ -725,15 +861,24 @@ CLASS="COMMAND" ><P >If you want to migrate an existing <TT CLASS="FILENAME" -> printers.def</TT -> file into the new setup, the current only +>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 + and the 9x drivers. This can be scripted using <B +CLASS="COMMAND" +>smbclient</B +> + and <B +CLASS="COMMAND" +>rpcclient</B +>. See the + Imprints installation client at <A HREF="http://imprints.sourceforge.net/" TARGET="_top" -> Imprints insrallation client</A -> for an example. +>http://imprints.sourceforge.net/</A +> + for an example. </P ></LI ></UL |