summaryrefslogtreecommitdiffstats
path: root/docs/htmldocs/printer_driver2.html
diff options
context:
space:
mode:
authorGerald Carter <jerry@samba.org>2001-04-24 19:09:42 +0000
committerGerald Carter <jerry@samba.org>2001-04-24 19:09:42 +0000
commitc8af938a0a7ec15c38076fc11d164f55737318f1 (patch)
tree20b734a400bfc37cbd7d648d0905e07a832e255d /docs/htmldocs/printer_driver2.html
parent55d0bdbf4a656fe457d180940ad0e700375ffc15 (diff)
downloadsamba-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.html527
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"
>&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
+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