From c8af938a0a7ec15c38076fc11d164f55737318f1 Mon Sep 17 00:00:00 2001 From: Gerald Carter Date: Tue, 24 Apr 2001 19:09:42 +0000 Subject: syncing up changes in 2.2 (This used to be commit ffbbe67dbfde7f7ce4bb70becfc696c395dbf6b2) --- docs/htmldocs/printer_driver2.html | 527 +++++++++++++++++++++++-------------- 1 file changed, 336 insertions(+), 191 deletions(-) (limited to 'docs/htmldocs/printer_driver2.html') 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" >

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.

The additional functionality provided by the new - SPOOLSS support includes:

Configuration

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).

Warning

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.

WARNING!!! 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.

However, the initial implementation allowed for a - parameter named printer driver location - to be used on a per share basis to specify the location of - the driver files associated with that printer. Another - parameter named printer driver provided - a means of defining the printer driver name to be sent to - the client.

These parameters, including printer driver - file parameter, are being depreciated and should not - be used in new installations. For more information on this change, - you should refer to the Migration section - Migration section of this document.


Creating [print$]

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).

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):

[print$]
-	path = /usr/local/samba/printers
-	guest ok = yes
-	browseable = yes
-	read only = yes
-	write list = ntadmin
-	

The write listwrite list is used to allow administrative - level user accounts to have write access in order to update files - on the share. See the smb.conf(5) man pagesmb.conf(5) man page for more information on - configuring file shares.

The requirement for guest ok = yesguest ok = yes 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.

author's note: 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 Author's Note: 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 map to guest = Bad User - map to guest = Bad User in the [global] section as well. Make sure - you understand what this parameter does before using it - though. --jerry]

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.

Next create the directory tree below the [print$] share - for each architecture you wish to support.

	[print$]-----
-		|-W32X86		; "Windows NT x86"
-		|-WIN40			; "Windows 95/98"
-		|-W32ALPHA		; "Windows NT Alpha_AXP"
-		|-W32MIPS		; "Windows NT R4000"
-		|-W32PPC		; "Windows NT PowerPC"
-	
[print$]----- + |-W32X86 ; "Windows NT x86" + |-WIN40 ; "Windows 95/98" + |-W32ALPHA ; "Windows NT Alpha_AXP" + |-W32MIPS ; "Windows NT R4000" + |-W32PPC ; "Windows NT PowerPC"

WarningATTENTION! REQUIRED PERMISSIONS

ATTENTION! REQUIRED PERMISSIONS

In order to currently add a new driver to you Samba host, - one of two conditions must hold true:

  • The account used to connect to the Samba host - must have a uid of 0 (i.e. a root account)

  • The account used to connect to the Samba host - must be a member of the printer adminprinter + admin list.

Of course, the connected account must still possess access - to add files to the subdirectories beneath [print$].

Once you have created the required [print$] service and - associated subdirectories, simply log onto the Samba server using - a root (or printer admin) 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.


Setting Drivers for Existing Printers

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

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.

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.

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 - smb.conf.

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.


Support a large number of printers

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 rpcclient's - setdriver command can be used to set the driver - associated with an installed driver. The following is example - of how this could be accomplished:

 
-		$ 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]
 				  
-		$ 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:[]
 				  
-		$ rpcclient pogo -U root%bleaK.er \
-		>  -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.
-		


Adding New Printers via the Windows NT APW

By default, Samba offers all printer shares defined in smb.conf +in the "Printers..." folder. Also existing in this folder is the Windows NT +Add Printer Wizard icon. The APW will be show only if

In order to be able to use the APW to successfully add a printer to a Samba +server, the addprinter +command must have a defined value. The program +hook must successfully add the printer to the system (i.e. +/etc/printcap or appropriate files) and +smb.conf if necessary.

When using the APW from a client, if the named printer share does +not exist, smbd will execute the add printer +program and reparse to the smb.conf +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 +add printer program is executed undet the context +of the connected user, not necessarily a root account.

There is a complementing deleteprinter +command for removing entries from the "Printers..." +folder.


Samba and Printer Ports

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.

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.

If you require that multiple ports be defined for some reason, +smb.conf possesses a enumports +command which can be used to define an external program +that generates a listing of ports on a system.


The Imprints Toolset


What is Imprints?


Creating Printer Driver Packages


The Imprints server


The Installation Client

	
-		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
-		

One of the problems encountered when implementing @@ -615,7 +751,7 @@ CLASS="SECT1" >


WarningAchtung!

If you want to migrate an existing printers.def file into the new setup, the current only +>printers.def + 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 smbclient + and rpcclient. See the + Imprints installation client at Imprints insrallation client for an example. +>http://imprints.sourceforge.net/ + for an example.