From d41db5dcf9a4e73241e2dd01a51606d63f0519ca Mon Sep 17 00:00:00 2001 From: Gerald Carter Date: Thu, 14 Sep 2000 16:40:51 +0000 Subject: First draft of new printing doc describing the SPOOLSS support in the upcoming 2.2.0 release. Needs some other eyes to review it. :-) jerry (This used to be commit c9a76a2e10fd14fc1c63184afcda986163912b06) --- docs/textdocs/PRINTER_DRIVER2.txt | 290 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 290 insertions(+) create mode 100644 docs/textdocs/PRINTER_DRIVER2.txt diff --git a/docs/textdocs/PRINTER_DRIVER2.txt b/docs/textdocs/PRINTER_DRIVER2.txt new file mode 100644 index 0000000000..f522942b07 --- /dev/null +++ b/docs/textdocs/PRINTER_DRIVER2.txt @@ -0,0 +1,290 @@ + +!== +!== PRINTER_DRIVER.txt for Samba release 2.2.0 14 Sep 2000 +!== +========================================================================== + Gerald Carter 14 Sep 2000 +=========================================================================== + +Introduction +============ +Beginning with the 2.2.0 release, Samba now supports the native Windows +NT printing mechanisms implemented via MS-RPC (i.e. the SPOOLSS named +pipe). Previous versions of Samba only supported the LanMan printing +calls. + +The additional functionality provided by the new SPOOLSS support +includes: + + o Support for downloading printer driver files to + Windows 95/98/NT/2000 clients upon demand. + o Uploading of printer drivers via the Windows NT + Add Printer Wizard (APW) or the Imprints tool set + o Support for the native MS-RPC printing calls such + as StartDocPrinter, EnumJobs(), etc... (See the MSDN + documentation for more information on the Win32 + printing API) + o Support for NT Access Control Lists (ACL) on + printer objects + o Improved support for printer queue manipulation through + the use of an internal database for spooled job information. + + +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. + + + +You should modify the server's smb.conf file to create the +following 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 requirement for 'guest 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. + +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" + + +These directories should be owned by an administrative account. +Currently this must initially be an "root" account (uid = 0). + +!== The Windows NT APW + +Once you have created the required [print$] service and associated +subdirectories, simply log onto the Samba server using a root 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. + + + +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 + + o Use the "New Driver..." button to install a new printer + driver, or + o Select a driver from the popup list of installed drivers. + Initially this list will be empty. + +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. + + +!== Imprints + +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 http://imprints.sourceforge.net/ +This section will only provide a brief introduction to the features +of Imprints. + +What is Imprints? + + Imprints is a collection of tools for supporting the goals of + + o Providing a central repository information regarding + Windows NT and 95/98 printer driver packages + o Providing the tools necessary for creating the Imprints + printer driver packages. + o Providing an installation client which will obtain + and install printer drivers on remote Samba and Windows + NT 4 print servers. + + +Creating Printer Driver Packages + + 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. + +The Imprints server + + 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 + **not** recommended that this security check be disabled. + +The Installation Client + + The Imprints installation client comes in two forms. + + o a set of command line Perl scripts + o a GTK+ based graphical interface to the command + line perl scripts + + 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. + + The basic installation process is in four steps and perl code + is wrapped around smbclient and rpcclient. + + 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 + + +!== The printer driver name space problem + + 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 calls + its version of this driver "Apple LaserWriter II NTX" + + 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 system registry at + + HKLM\System\CurrentControlSet\Control\Print\Environment + + 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? + + 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. + + +Migration to 2.2.x +============================= + +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. + + + The following smb.conf parameters are considered to be + depreciated and will be removed soon. Do not use them + in new installations + + 'printer driver file' (G) + 'printer driver' (S) + 'printer driver location' (S) + + + +Here are the possible scenarios for supporting migration: + + o If you does not desire the new Windows NT + print driver support, nothing needs to be done. + All existing parameters work the same. + + o If you want to take advantage of NT printer + driver support but does 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 make_printerdef tool + will also remain for backwards compatibility but will + be moved to the "this tool is the old way of doing it" + pile. + + o If you instal 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). + + o If you want to migrate an existing 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. (comment: this could possibly be scripted using + smbclient and rpcclient, but I haven't had time --jerry) + + + + +!== end of PRINTER_DRIVER2.txt ======================================= +!===================================================================== -- cgit