From 99bde6889d3d8b7a9e950c86c30e82662e1dacdd Mon Sep 17 00:00:00 2001 From: Gerald Carter Date: Tue, 9 Sep 2003 02:58:53 +0000 Subject: syncing files from 3.0 into HEAD again (This used to be commit bca0bba209255d0effbae6a3d3b6d298f0952c3a) --- docs/docbook/projdoc/printer_driver2.xml | 964 ++++++++++++++----------------- 1 file changed, 432 insertions(+), 532 deletions(-) (limited to 'docs/docbook/projdoc/printer_driver2.xml') diff --git a/docs/docbook/projdoc/printer_driver2.xml b/docs/docbook/projdoc/printer_driver2.xml index 11231e6c9a..0d0dbb0188 100644 --- a/docs/docbook/projdoc/printer_driver2.xml +++ b/docs/docbook/projdoc/printer_driver2.xml @@ -9,7 +9,7 @@ &author.jerry; - May 32, 2003 + May 31, 2003 Classical Printing Support @@ -24,7 +24,7 @@ consisting of Windows workstations. -A Samba-3.0 print service may be run on a Standalone or a Domain +A Samba print service may be run on a Standalone or a Domain member server, side by side with file serving functions, or on a dedicated print server. It can be made as tight or as loosely secured as needs dictate. Configurations may be simple or complex. Available @@ -50,7 +50,7 @@ implemented by the more traditional UNIX (BSD- and System V-style) printing systems. Many things apply to CUPS, the newer Common UNIX Printing System, too; so if you use CUPS, you might be tempted to jump to the next chapter -- but you will certainly miss a few things if you -do so. Better read this chapter too. +do so. Better to read this chapter too. @@ -70,15 +70,15 @@ again. Samba's printing support always relies on the installed print -subsystem of the Unix OS it runs on. Samba is a "middleman". It takes +subsystem of the UNIX OS it runs on. Samba is a "middleman". It takes printfiles from Windows (or other SMB) clients and passes them to the real printing system for further processing. Therefore it needs to -"talk" to two sides: to the Windows print clients and to the Unix +"talk" to two sides: to the Windows print clients and to the UNIX printing system. Hence we must differentiate between the various client OS types each of which behave differently, as well as the various UNIX print subsystems, which themselves have different features and are accessed differently. This part of the Samba HOWTO -Collection deals with the "traditional" way of Unix printing first; +Collection deals with the "traditional" way of UNIX printing first; the next chapter covers in great detail the more modern Common UNIX Printing System (CUPS). @@ -98,7 +98,7 @@ stages: -Windows opens a connection to the printershare +Windows opens a connection to the printer share Samba must authenticate the user @@ -110,7 +110,7 @@ into Samba's spooling area Samba invokes the print command to hand the file over to the UNIX print subsystem's spooling area -The Unix print subsystem processes the print +The UNIX print subsystem processes the print job The printfile may need to be explicitly deleted @@ -134,8 +134,8 @@ Service Level ("S") parameters. Service Level Parameters These may go into the -[global] section of -. In this case they define the default +[global] section of &smb.conf;. +In this case they define the default behaviour of all individual or service level shares (provided those don't have a different setting defined for the same parameter, thus overriding the global default). @@ -153,47 +153,40 @@ this (if you run it) and tell you so. Parameters Recommended for Use The following &smb.conf; parameters directly -related to printing are used in Samba-3. See also the +related to printing are used in Samba. See also the &smb.conf; man page for detailed explanations: - - List of printing related parameters in Samba-3 - -Global level parameters: -addprinter command (G) -deleteprinter command (G) -disable spoolss (G) -enumports command (G) -load printers (G) -lpq cache time (G) -os2 driver map (G) -printcap name (G), printcap (G) -show add printer wizard (G) -total print jobs (G) -use client driver (G) - - -Service level parameters: -hosts allow (S) -hosts deny (S) -lppause command (S) -lpq command (S) -lpresume command (S) -lprm command (S) -max print jobs (S) -min print space (S) -print command (S) -printable (S), print ok (S) -printer name (S), printer (S) -printer admin (S) -printing = [cups|bsd|lprng...] (S) -queuepause command (S) -queueresume command (S) -total print jobs (S) - +Global level parameters: addprinter command, +deleteprinter command, +disable spoolss, +enumports command, +load printers, +lpq cache time, +os2 driver map, +printcap name, printcap, +show add printer wizard, +total print jobs, +use client driver. + + +Service level parameters: hosts allow, +hosts deny, +lppause command, +lpq command, +lpresume command, +lprm command, +max print jobs, +min print space, +print command, +printable, print ok , +printer name, printer, +printer admin, +printing[cups|bsd|lprng...], +queuepause command, +queueresume command, +total print jobs. - Samba's printing support implements the Microsoft Remote Procedure @@ -204,110 +197,43 @@ follow further beneath. - -Parameters for Backwards Compatibility - - -Two new parameters that were added in Samba 2.2.2, are still present -in Samba-3.0. Both of these options are described in the -&smb.conf; man page and are disabled by -default. Use them with caution! - - - -disable spoolss(G) - This is -provided for better support of Samba 2.0.x backwards capability. It -will disable Samba's support for MS-RPC printing and yield identical -printing behaviour to Samba 2.0.x. - - -use client driver (G) - was provided -for using local printer drivers on Windows NT/2000 clients. It does -not apply to Windows 95/98/ME clients. - - - - -Parameters "for backward compatibility only", use with caution - - - -disable spoolss (G) - -use client driver (S) - - - - - - - -Parameters no longer in use - - -Samba users upgrading from 2.2.x to 3.0 need to be aware that some -previously available settings are no longer supported (as was -announced some time ago). Here is a list of them: - - - -"old" parameters, removed in Samba-3 - - -The following &smb.conf; parameters have been -deprecated already in Samba 2.2 and are now completely removed from -Samba-3. You cannot use them in new 3.0 installations: - - -printer driver file (G) -total print jobs (G) -postscript (S) -printer driver (S) -printer driver location (S) - - - - - - -A simple Configuration to Print with Samba-3 +A simple Configuration to Print Here is a very simple example configuration for print related settings -in the file. If you compare it with your -own system's , you probably find some +in the file. If you compare it with your own system's , you probably find some additional parameters included there (as pre-configured by your OS vendor). Further below is a discussion and explanation of the parameters. Note, that this example doesn't use many parameters. However, in many environments these are enough to provide a valid - which enables all clients to print. +&smb.conf; file which enables all clients to print. - - [global] - printing = bsd - load printers = yes + + Simple configuration with BSD printing +[global] +printingbsd +load printersyes - [printers] - path = /var/spool/samba - printable = yes - public = yes - writable = no - +[printers] +path/var/spool/samba +printableyes +publicyes +writableno + -This is only an example configuration. Many settings, if not -explicitly set to a specific value, are used and set by Samba -implicitly to its own default, because these have been compiled in. -To see all settings, let root use the testparm -utility. testparm also gives warnings if you have -mis-configured certain things. Its complete output is easily 340 lines -and more. You may want to pipe it through a pager program. +This is only an example configuration. Samba assigns default values to all +configuration parameters. On the whole the defaults are conservative and +sensible. When a parameter is specified in the &smb.conf; file this overwrites +the default value. The testparm utility when run as root +is capable of reporting all setting, both default as well as &smb.conf; file +settings. Testparm gives warnings for all mis-configured +settings. The complete output is easily 340 lines and more, so you may want +to pipe it through a pager program. @@ -380,7 +306,7 @@ default behaviour. Don't forget about this point: it may be important in your future dealings with Samba. - testparm in Samba-3.0 behaves differently from 2.2.x: used + testparm in samba 3 behaves differently from 2.2.x: used without the "-v" switch it only shows you the settings actually written into ! To see the complete configuration used, add the "-v" parameter to testparm. @@ -394,15 +320,15 @@ configuration used, add the "-v" parameter to testparm. Should you need to troubleshoot at any stage, please always come back to this point first and verify if "testparm" shows the parameters you expect! To give you an example from personal experience as a warning, -try to just "comment out" the load printers" +try to just "comment out" the load printers" parameter. If your 2.2.x system behaves like mine, you'll see this: &rootprompt;grep "load printers" /etc/samba/smb.conf # load printers = Yes - # This setting is commented ooouuuuut!! - + # This setting is commented ooouuuuut!! + &rootprompt;testparm -v /etc/samba/smb.conf | egrep "(load printers)" load printers = Yes @@ -429,7 +355,7 @@ any more... at least not by this ;-) Only when setting the parameter explicitly to -"load printers = No" +"load printersNo" would Samba recognize my intentions. So my strong advice is: @@ -472,7 +398,7 @@ would be, if you used this minimalistic file as your real -&rootprompt; testparm -v /etc/samba/smb.conf-minimal | egrep "(print|lpq|spool|driver|ports|[)" +&rootprompt;testparm -v smb.conf-minimal | egrep "(print|lpq|spool|driver|ports|[)" Processing section "[printers]" WARNING: [printers] service MUST be printable! No path in service printers - using /tmp @@ -507,7 +433,7 @@ testparm issued 2 warnings: because we didn't specify the -[printers] section as printable, +[printers] section as printable, and because we didn't tell it which spool directory to @@ -516,8 +442,8 @@ use. -However, this was not fatal, and Samba-3.0 will default to values that -will work here. But, please!, don't rely on this and don't use this +However, this was not fatal, and samba will default to values that +will work here. Please, don't rely on this and don't use this example! This was only meant to make you careful to design and specify your setup to be what you really want it to be. The outcome on your system may vary for some parameters, since you may have a Samba built @@ -531,9 +457,10 @@ in a parameter value is retained verbatim. This means that a line consisting of, for example, - -printing = lprng #This defines LPRng as the printing system" - + +This defines LPRng as the printing system" +printinglprng + will regard the whole of the string after the "=" @@ -544,61 +471,52 @@ that will be ignored, and a default value used instead.] -Extended Sample Configuration to Print with Samba-3 +Extended Sample Configuration to Print -Here we show a more verbose example configuration for print related -settings in an . Below is a discussion + In the extended BSD configuration example we show a more verbose example configuration for print related + settings in BSD-printing style environment . Below is a discussion and explanation of the various parameters. We chose to use BSD-style printing here, because we guess it is still the most commonly used system on legacy Linux installations (new installs now predominantly have CUPS, which is discussed entirely in the next chapter of this document). Note, that this example explicitly names many parameters -which don't need to be stated because they are set by default. You -might be able to do with a leaner . - - -if you read access it with the Samba Web Administration Tool (SWAT), -and then write it to disk again, it will be optimized in a way such -that it doesn't contain any superfluous parameters and comments. SWAT -organizes the file for best performance. Remember that each smbd -re-reads the Samba configuration once a minute, and that each -connection spawns an smbd process of its own, so it is not a bad idea -to optimize the in environments with -hundreds or thousands of clients. - - - [global] - printing = bsd - load printers = yes - show add printer wizard = yes - printcap name = /etc/printcap - printer admin = @ntadmin, root - total print jobs = 100 - lpq cache time = 20 - use client driver = no - - [printers] - comment = All Printers - printable = yes - path = /var/spool/samba - browseable = no - guest ok = yes - public = yes - read only = yes - writable = no - - [my_printer_name] - comment = Printer with Restricted Access - path = /var/spool/samba_my_printer - printer admin = kurt - browseable = yes - printable = yes - writeable = no - hosts allow = 0.0.0.0 - hosts deny = turbo_xp, 10.160.50.23, 10.160.51.60 - guest ok = no - +which don't need to be specified because they are set by default. You +might be able to do with a leaner &smb.conf; file. + + + Extended configuration with BSD printing + [global] +printingbsd +load printersyes +show add printer wizardyes +printcap name/etc/printcap +printer admin@ntadmin, root +total print jobs100 +lpq cache time20 +use client driverno + +[printers] +commentAll Printers +printableyes +path/var/spool/samba +browseableno +guest okyes +publicyes +read onlyyes +writableno + +[my_printer_name] +commentPrinter with Restricted Access +path/var/spool/samba_my_printer +printer adminkurt +browseableyes +printableyes +writeableno +hosts allow0.0.0.0 +hosts denyturbo_xp, 10.160.50.23, 10.160.51.60 +guest okno + This also is only an example configuration. You @@ -624,13 +542,13 @@ Following is a discussion of the settings from above shown example. The [global] Section -The [global] section is one of 4 special -sections (along with [[homes], -[printers] and -[print$]...) It contains all parameters which +The [global] section is one of 4 special +sections (along with [[homes], +[printers] and +[print$]...) It contains all parameters which apply to the server as a whole. It is the place for parameters which -have only a "global" meaning (G). It may also contain service level -parameters (S) which then define default settings for all other +have only a "global" meaning. It may also contain service level +parameters which then define default settings for all other sections and shares. This way you can simplify the configuration and avoid setting the same value repeatedly. (Within each individual section or share you may however override these globally set "share @@ -638,35 +556,34 @@ level" settings and specify other values). -printing = bsd +printingbsd this causes Samba to use default print commands applicable for the BSD (a.k.a. RFC 1179 style or LPR/LPD) printing system. In general, the "printing" parameter informs Samba about the print subsystem it should expect. Samba supports CUPS, LPD, LPRNG, SYSV, HPUX, AIX, QNX and PLP. Each of these systems defaults to a -different print command (and other queue control +different print command (and other queue control commands). -The printing parameter is +The printing parameter is normally a service level parameter. Since it is included here in the -[global] section, it will take effect for all -printer shares that are not defined differently. Samba-3.0 no longer +[global] section, it will take effect for all +printer shares that are not defined differently. Samba 3 no longer supports the SOFTQ printing system. -load printers = yes +load printersyes this tells Samba to create automatically all available printer shares. "Available" printer shares are discovered by scanning the printcap file. All created printer shares are also loaded for browsing. If you use this parameter, you do not need to specify separate shares for each printer. Each automatically created printer share will clone the configuration options found in the -[printers] section. (A load printers +[printers] section. (A load printers = no setting will allow you to specify each UNIX printer you want to share separately, leaving out some you don't want to be publicly visible and available). -show add printer wizard = -yes this setting is normally +show add printer wizardyes this setting is normally enabled by default (even if the parameter is not written into the ). It makes the Add Printer Wizard icon show up in the Printers folder of the Samba host's @@ -674,12 +591,12 @@ share listing (as shown in Network Neighbourhood or by the net view command). To disable it, you need to explicitly set it to no (commenting it out will not suffice!). The Add Printer Wizard lets you upload printer -drivers to the [print$] share and associate it +drivers to the [print$] share and associate it with a printer (if the respective queue exists there before the action), or exchange a printer's driver against any other previously uploaded driver. -total print jobs = 100 +total print jobs100 this setting sets the upper limit to 100 print jobs being active on the Samba server at any one time. Should a client submit a job which exceeds this number, a no more space @@ -688,7 +605,7 @@ Samba to the client. A setting of "0" (the default) means there is no limit at all! -printcap name = /etc/printcap +printcap name/etc/printcap this tells Samba where to look for a list of available printer names. (If you use CUPS, make sure that a printcap @@ -696,27 +613,27 @@ file is written: this is controlled by the "Printcap" directive of cupsd.conf). -printer admin = @ntadmin +printer admin@ntadmin members of the ntadmin group should be able to add drivers and set printer properties ("ntadmin" is only an example name, it needs to be a valid UNIX group name); root is implicitly always a -printer admin. The "@" sign precedes group names in +printer admin. The "@" sign precedes group names in . A printer admin can do anything to printers via the remote administration interfaces offered by MS-RPC -(see below). Note that the printer admin +(see below). Note that the printer admin parameter is normally a share level parameter, so you may associate different groups to different printer shares in larger installations, -if you use the printer admin parameter on the +if you use the printer admin parameter on the share levels). -lpq cache time = 20 +lpq cache time20 this controls the cache time for the results of the lpq command. It prevents the lpq command being called too often and reduces load on a heavily used print server. -use client driver = no +use client driverno if set to yes, this setting only takes effect for Win NT/2k/XP clients (and not for Win 95/98/ME). Its default value is No (or False). @@ -742,28 +659,28 @@ section as a general convenience shortcut to share all printers with minimal configuration. It is also a container for settings which should apply as default to all printers. (For more details see the &smb.conf; man page.) Settings inside this -container must be share level parameters (S). +container must be share level parameters. -comment = All printers - the comment is shown next to +commentAll printers + the comment is shown next to the share if a client queries the server, either via Network Neighbourhood or with the net view command to list available shares. -printable = yes +printableyes please note well, that the -[printers] service must be +[printers] service must be declared as printable. If you specify otherwise, smbd will refuse to load at startup. This parameter allows connected clients to open, write to and submit spool files into the -directory specified with the path parameter for +directory specified with the path parameter for this service. It is used by Samba to differentiate printer shares from file shares. -path = /var/spool/samba +path/var/spool/samba this must point to a directory used by Samba to spool incoming print files. It must not be the same as the spool directory specified in the configuration of your UNIX print @@ -771,21 +688,21 @@ subsystem! The path would typically point to a directory which is world writeable, with the "sticky" bit set to it. -browseable = no +browseableno this is always set to no if -printable = yes. It makes the -[printer] share itself invisible in the +printableyes. It makes the +[printer] share itself invisible in the list of available shares in a net view command or in the Explorer browse list. (Note that you will of course see the individual printers). -guest ok = yes +guest okyes if set to yes, then no password is required to connect to the printers service. Access will be granted with the -privileges of the guest account. On many systems the +privileges of the guest account. On many systems the guest account will map to a user named "nobody". This user is in the UNIX passwd file with an empty password, but with no valid UNIX login. (Note: on some systems the guest account might not have the @@ -798,9 +715,8 @@ command like -public = yes - this is a synonym for guest ok = -yes. Since we have guest ok = yes, +publicyes + this is a synonym for guest okyes. Since we have guest okyes, it really doesn't need to be here! (This leads to the interesting question: What, if I by accident have to contradictory settings for the same share? The answer is: the last one encountered by @@ -811,7 +727,7 @@ account" parameter with different usernames, and then run testparm to see which one is actually used by Samba.) -read only = yes +read onlyyes this normally (for other types of shares) prevents users creating or modifying files in the service's directory. However, in a "printable" service, it is always allowed to @@ -819,9 +735,9 @@ write to the directory (if user privileges allow the connection), but only via print spooling operations. "Normal" write operations are not allowed. -writeable = no +writeableno -synonym for read only = yes +synonym for read onlyyes @@ -831,7 +747,7 @@ synonym for read only = yes If a section appears in the , which is -tagged as printable = yes, Samba presents it as +tagged as printableyes, Samba presents it as a printer share to its clients. Note, that Win95/98/ME clients may have problems with connecting or loading printer drivers if the share name has more than 8 characters! Also be very careful if you give a @@ -843,54 +759,53 @@ the same name! -comment = Printer with Restricted Access +commentPrinter with Restricted Access the comment says it all. -path = /var/spool/samba_my_printer +path/var/spool/samba_my_printer here we set the spooling area for this printer to another directory than the default. It is not a requirement to set it differently, but the option is available. -printer admin = kurt +printer adminkurt the printer admin definition is different for this explicitly defined printer share from the general -[printers] share. It is not a requirement; we +[printers] share. It is not a requirement; we did it to show that it is possible if you want it. -browseable = yes +browseableyes we also made this printer browseable (so that the clients may conveniently find it when browsing the Network Neighbourhood). -printable = yes +printableyes see explanation in last subsection. -writeable = no +writeableno see explanation in last subsection. -hosts allow = 10.160.50.,10.160.51. +hosts allow10.160.50.,10.160.51. here we exercise a certain degree of access control -by using the hosts allow and hosts deny parameters. Note, that +by using the hosts allow and hosts deny parameters. Note, that this is not by any means a safe bet. It is not a way to secure your printers. This line accepts all clients from a certain subnet in a first evaluation of access control -hosts deny = turbo_xp,10.160.50.23,10.160.51.60 - +hosts denyturbo_xp,10.160.50.23,10.160.51.60 all listed hosts are not allowed here (even if they belong to the "allowed subnets"). As you can see, you could name IP addresses as well as NetBIOS hostnames here. -guest ok = no +guest okno this printer is not open for the guest account! @@ -902,11 +817,11 @@ here. In each section defining a printer (or in the -[printers] section), a print +[printers] section), a print command parameter may be defined. It sets a command to process the files which have been placed into the Samba print spool directory for that printer. (That spool directory was, if you -remember, set up with the path +remember, set up with the path parameter). Typically, this command will submit the spool file to the Samba host's print subsystem, using the suitable system print command. But there is no requirement that this needs to be the @@ -922,14 +837,14 @@ shortage of free space. -Default Print Commands for various Unix Print Subsystems +Default Print Commands for various UNIX Print Subsystems You learned earlier on, that Samba in most cases uses its built-in settings for many parameters if it can not find an explicitly stated one in its configuration file. The same is true for the -print command. The default print command varies -depending on the printing =... parameter +print command. The default print command varies +depending on the printing parameter setting. In the commands listed below, you will notice some parameters of the form %X where X is p, s, J etc. These letters stand for @@ -948,63 +863,63 @@ the special case of CUPS, which is discussed in the next chapter): -printing = bsd|aix|lprng|plp +printingbsd|aix|lprng|plp print command is lpr -r -P%p %s -printing = sysv|hpux +printingsysv|hpux print command is lp -c -P%p %s; rm %s - printing = qnx + printingqnx print command is lp -r -P%p -s %s -printing = bsd|aix|lprng|plp +printingbsd|aix|lprng|plp lpq command is lpq -P%p -printing = sysv|hpux +printingsysv|hpux lpq command is lpstat -o%p -printing = qnx +printingqnx lpq command is lpq -P%p -printing = bsd|aix|lprng|plp +printingbsd|aix|lprng|plp lprm command is lprm -P%p %j -printing = sysv|hpux +printingsysv|hpux lprm command is cancel %p-%j -printing = qnx +printingqnx lprm command is cancel %p-%j -printing = bsd|aix|lprng|plp +printingbsd|aix|lprng|plp lppause command is lp -i %p-%j -H hold -printing = sysv|hpux +printingsysv|hpux lppause command (...is empty) -printing = qnx +printingqnx lppause command (...is empty) -printing = bsd|aix|lprng|plp +printingbsd|aix|lprng|plp lpresume command is lp -i %p-%j -H resume -printing = sysv|hpux +printingsysv|hpux lpresume command (...is empty) -printing = qnx +printingqnx lpresume command (...is empty) @@ -1016,7 +931,7 @@ We excluded the special CUPS case here, because it is discussed in the next chapter. Just a short summary. For printing = CUPS: If SAMBA is compiled against libcups, it uses the CUPS API to submit jobs, etc. (It is a good idea also to set -printcap = cups in case your +printcapcups in case your cupsd.conf is set to write its autogenerated printcap file to an unusual place). Otherwise Samba maps to the System V printing commands with the -oraw option for printing, i.e. it uses @@ -1050,7 +965,7 @@ way you want them to work and not rely on any built-in defaults. After a print job has finished spooling to a service, the -print command will be used by Samba via a +print command will be used by Samba via a system() call to process the spool file. Usually the command specified will submit the spool file to the host's printing subsystem. But there is no requirement at all that this must @@ -1102,7 +1017,7 @@ command. In this case the job is sent to the default printer. -If specified in the [global] section, the print +If specified in the [global] section, the print command given will be used for any printable service that does not have its own print command specified. If there is neither a specified print command for a printable service nor a global print command, @@ -1115,7 +1030,7 @@ hard disk. Note that printing may fail on some UNIXes from the "nobody" account. If this happens, create an alternative guest account and supply it with the privilege to print. Set up this guest account in -the [global] section with the guest +the [global] section with the guest account parameter. @@ -1126,28 +1041,26 @@ expand the included environment variables as usual. (The syntax to include a UNIX environment variable $variable in or in the Samba print command is %$variable.) To give you a working -print command example, the following will log a +print command example, the following will log a print job to /tmp/print.log, print the file, then remove it. Note that ';' is the usual separator for commands in shell scripts: - -> /tmp/print.log; lpr -P %p %s; rm %s -]]> - + +print commandecho Printing %s >> /tmp/print.log; lpr -P %p %s; rm %s + You may have to vary your own command considerably from this example depending on how you normally print files on your system. The default -for the print command parameter varies depending on the setting of -the printing parameter. Another example is: +for the print command parameter varies depending on the setting of +the printing parameter. Another example is: - - print command = /usr/local/samba/bin/myprintscript %p %s - + +print command/usr/local/samba/bin/myprintscript %p %s + @@ -1176,15 +1089,11 @@ The additional functionality provided by the new SPOOLSS support includes: Uploading of printer drivers via the Windows NT Add Printer Wizard (APW) or the -Imprints tool set (refer to http://imprints.sourceforge.net); +Imprints tool set. Support for the native MS-RPC printing calls such as -StartDocPrinter, EnumJobs(), etc... (See the MSDN documentation -at http://msdn.microsoft.com/ -for more information on the Win32 printing API); + StartDocPrinter, EnumJobs(), etc... (See the MSDN documentation for more information on the Win32 printing API); Support for NT Access Control Lists (ACL) on printer objects; @@ -1197,7 +1106,7 @@ files). -One other benefit of an update is this: Samba-3 is able to publish +One other benefit of an update is this: Samba 3 is able to publish all its printers in Active Directory (or LDAP)! @@ -1238,12 +1147,12 @@ possess a valid driver for the printer. This was fixed in Samba But it is a new option to install the printer -drivers into the [print$] share of the Samba +drivers into the [print$] share of the Samba server, and a big convenience too. Then all clients (including 95/98/ME) get the driver installed when they first connect to this printer share. The uploading or depositing of the driver into this -[print$] share, and the following binding of +[print$] share, and the following binding of this driver to an existing Samba printer share can be achieved by different means: @@ -1271,17 +1180,17 @@ does not use these uploaded drivers in any way to process spooled files. Drivers are utilized entirely by the clients, who download and install them via the "Point'n'Print" mechanism supported by Samba. The clients use these drivers to generate print files in the -format the printer (or the Unix print system) requires. Print files -received by Samba are handed over to the Unix printing system, which +format the printer (or the UNIX print system) requires. Print files +received by Samba are handed over to the UNIX printing system, which is responsible for all further processing, if needed. -The [printer$] Section is removed from Samba-3 +The [printer$] Section is removed from Samba 3 -<parameter>[print$]</parameter> vs. <parameter>[printer$]</parameter> +<smbconfsection>[print$]</smbconfsection> vs. <smbconfsection>[printer$]</smbconfsection> @@ -1289,7 +1198,7 @@ Versions of Samba prior to 2.2 made it possible to use a share named [printer$]. This name was taken from the same named service created by Windows 9x clients when a printer was shared by them. Windows 9x printer servers always have a -[printer$] service which provides read-only +[printer$] service which provides read-only access (with no password required) in order to support printer driver downloads. However, Samba's initial implementation allowed for a parameter named printer driver location to be @@ -1298,16 +1207,16 @@ 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 the printer driver file parameter, -are now removed and can not be used in installations of Samba-3.0. -Now the share name [print$] is used for the +are now removed and can not be used in installations of samba-3. +Now the share name [print$] is used for the location of downloadable printer drivers. It is taken from the -[print$] service created by Windows NT PCs when +[print$] service created by Windows NT PCs when a printer is shared by them. Windows NT print servers always have a -[print$] service which provides read-write +[print$] service which provides read-write access (in the context of its ACLs) in order to support printer driver down- and uploads. Don't fear -- this does not mean Windows 9x clients are thrown aside now. They can use Samba's -[print$] share support just fine. +[print$] share support just fine. @@ -1317,7 +1226,7 @@ clients are thrown aside now. They can use Samba's In order to support the up- and downloading of printer driver files, you must first configure a file share named -[print$]. The "public" name of this share is +[print$]. The "public" name of this share is hard coded in Samba's internals (because it is hard coded in the MS Windows clients too). It cannot be renamed since Windows clients are programmed to search for a service of exactly this name if they want @@ -1327,33 +1236,33 @@ to retrieve printer driver files. You should modify the server's file to add the global parameters and create the -[print$] file share (of course, some of the +[print$] file share (of course, some of the parameter values, such as 'path' are arbitrary and should be replaced with appropriate values for your site): - - [global] - ; members of the ntadmin group should be able to add drivers and set - ; printer properties. root is implicitly always a 'printer admin'. - printer admin = @ntadmin - [....] + + [print\$] example + [global] + members of the ntadmin group should be able to add drivers and set + printer properties. root is implicitly always a 'printer admin'. + printer admin@ntadmin + ... + [printers] + ... - [printers] - [....] - - [print$] - comment = Printer Driver Download Area - path = /etc/samba/drivers - browseable = yes - guest ok = yes - read only = yes - write list = @ntadmin, root - + [print$] +commentPrinter Driver Download Area +path/etc/samba/drivers +browseableyes +guest okyes +read onlyyes +write list@ntadmin, root + Of course, you also need to ensure that the directory named by the -path parameter exists on the Unix file system. +path parameter exists on the UNIX file system. @@ -1362,33 +1271,33 @@ Of course, you also need to ensure that the directory named by the Parameters in the [print$] Section -[print$] is a special section in +[print$] is a special section in . It contains settings relevant to potential printer driver download and local installation by clients. -comment = Printer Driver -Download Area + commentPrinter Driver + Download Area the comment appears next to the share name if it is listed in a share list (usually Windows clients won't see it often but it will also appear up in a smbclient -L sambaserver output). -path = /etc/samba/printers +path/etc/samba/printers this is the path to the location of the Windows driver file deposit from the UNIX point of view. -browseable = no - this makes the [print$] share +browseableno + this makes the [print$] share "invisible" in Network Neighbourhood to clients. However, you can still "mount" it from any client using the net use g:\\sambaserver\print$ command in a "DOS box" or the "Connect network drive" menu from Windows Explorer. -guest ok = yes +guest okyes this gives read only access to this share for all guest users. Access may be used to download and install printer drivers on clients. The requirement for guest ok = @@ -1404,19 +1313,19 @@ validated by the Domain Controller in order to logon to the Windows NT session), 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 in the [global] section +for guest access. You'll probably want to add map to guestBad User in the +[global] section as well. Make sure you understand what this parameter does before using it. -read only = yes +read onlyyes as we don't want everybody to upload driver files (or even change driver settings) we tagged this share as not writeable. -write list = @ntadmin,root -since the [print$] was made +write list@ntadmin,root +since the [print$] was made read only by the previous setting, we need to create a "write list" also. UNIX groups (denoted with a leading "@" character) and users listed here are allowed write access (as an exception to the general @@ -1425,7 +1334,7 @@ share. Normally you will want to only name administrative level user accounts in this setting. Check the file system permissions to make sure these accounts can copy files to the share. If this is a non-root account, then the account should also be mentioned in the global -printer admin parameter. See the +printer admin parameter. See the man page for more information on configuring file shares. @@ -1439,18 +1348,18 @@ configuring file shares. In order for a Windows NT print server to support the downloading of driver files by multiple client architectures, you must create several -subdirectories within the [print$] service -(i.e. the Unix directory named by the path +subdirectories within the [print$] service +(i.e. the UNIX directory named by the path parameter). These correspond to each of the supported client architectures. Samba follows this model as well. Just like the name of -the [print$] share itself, the subdirectories +the [print$] share itself, the subdirectories *must* be exactly the names listed below (you may leave out the subdirectories of architectures you don't want to support). Therefore, create a directory tree below the -[print$] share for each architecture you wish +[print$] share for each architecture you wish to support. @@ -1483,13 +1392,13 @@ named in the printer adminlist. Of course, the connected account must still possess access to add files to the subdirectories beneath -[print$]. Remember that all file shares are set +[print$]. Remember that all file shares are set to 'read only' by default. -Once you have created the required [print$] +Once you have created the required [print$] service and associated subdirectories, go to a Windows NT 4.0/2k/XP client workstation. Open Network Neighbourhood or My Network Places and browse for the Samba host. @@ -1504,7 +1413,7 @@ that matches the printer shares defined on your Samba host. Installing Drivers into [print$] -You have successfully created the [print$] +You have successfully created the [print$] share in ? And Samba has re-read its configuration? Good. But you are not yet ready to take off. The driver files need to be present in this share, @@ -1512,7 +1421,7 @@ too! So far it is still an empty share. Unfortunately, it is not enough to just copy the driver files over. They need to be set up too. And that is a bit tricky, to say the least. We will now discuss two alternative ways to install the drivers into -[print$]: +[print$]: @@ -1539,8 +1448,8 @@ entrance to this realm seems a little bit weird at first). The initial listing of printers in the Samba host's Printers folder accessed from a client's Explorer -will have no real printer driver assigned to them. By default, in -Samba-3 (as in 2.2.1 and later) this driver name is set to a NULL +will have no real printer driver assigned to them. By default +this driver name is set to a NULL string. This must be changed now. The local Add Printer Wizard, run from NT/2000/XP clients, will help us in this task. @@ -1585,7 +1494,7 @@ Once the APW is started, the procedure is exactly the same as the one you are familiar with in Windows (we assume here that you are familiar with the printer driver installations procedure on Windows NT). Make sure your connection is in fact setup as a user with -printer admin privileges (if in doubt, use +printer admin privileges (if in doubt, use smbstatus to check for this). If you wish to install printer drivers for client operating systems other than Windows NT x86, you will need to use the @@ -1594,7 +1503,7 @@ install printer drivers for client operating systems other than Assuming you have connected with an administrative (or root) account -(as named by the printer admin parameter), +(as named by the printer admin parameter), you will also be able to modify other printer properties such as ACLs and default device settings using this dialog. For the default device settings, please consider the advice given further below. @@ -1607,7 +1516,7 @@ settings, please consider the advice given further below. The second way to install printer drivers into -[print$] and set them up in a valid way can be +[print$] and set them up in a valid way can be done from the UNIX command line. This involves four distinct steps: @@ -1616,7 +1525,7 @@ done from the UNIX command line. This involves four distinct steps: and collecting the files together; deposit the driver files into the -[print$] share's correct subdirectories +[print$] share's correct subdirectories (possibly by using smbclient); running the rpcclient @@ -1692,35 +1601,35 @@ different spaces in between words: -&rootprompt;rpcclient -U'Danka%xxxx' -c 'getdriver "Heidelberg Digimaster 9110 (PS)" 3' TURBO_XP - cmd = getdriver "Heidelberg Digimaster 9110 (PS)" 3 - - [Windows NT x86] - Printer Driver Info 3: - Version: [2] - Driver Name: [Heidelberg Digimaster 9110 (PS)] - Architecture: [Windows NT x86] - Driver Path: [C:\WINNT\System32\spool\DRIVERS\W32X86\2\HDNIS01_de.DLL] - Datafile: [C:\WINNT\System32\spool\DRIVERS\W32X86\2\Hddm91c1_de.ppd] - Configfile: [C:\WINNT\System32\spool\DRIVERS\W32X86\2\HDNIS01U_de.DLL] - Helpfile: [C:\WINNT\System32\spool\DRIVERS\W32X86\2\HDNIS01U_de.HLP] +&rootprompt;rpcclient -U'Danka%xxxx' -c \ + 'getdriver "Heidelberg Digimaster 9110 (PS)" 3' TURBO_XP +cmd = getdriver "Heidelberg Digimaster 9110 (PS)" 3 + +[Windows NT x86] +Printer Driver Info 3: + Version: [2] + Driver Name: [Heidelberg Digimaster 9110 (PS)] + Architecture: [Windows NT x86] + Driver Path: [C:\WINNT\System32\spool\DRIVERS\W32X86\2\HDNIS01_de.DLL] + Datafile: [C:\WINNT\System32\spool\DRIVERS\W32X86\2\Hddm91c1_de.ppd] + Configfile: [C:\WINNT\System32\spool\DRIVERS\W32X86\2\HDNIS01U_de.DLL] + Helpfile: [C:\WINNT\System32\spool\DRIVERS\W32X86\2\HDNIS01U_de.HLP] - Dependentfiles: [C:\WINNT\System32\spool\DRIVERS\W32X86\2\Hddm91c1_de.DLL] - Dependentfiles: [C:\WINNT\System32\spool\DRIVERS\W32X86\2\Hddm91c1_de.INI] - Dependentfiles: [C:\WINNT\System32\spool\DRIVERS\W32X86\2\Hddm91c1KMMin.DLL] - Dependentfiles: [C:\WINNT\System32\spool\DRIVERS\W32X86\2\Hddm91c1_de.dat] - Dependentfiles: [C:\WINNT\System32\spool\DRIVERS\W32X86\2\Hddm91c1_de.cat] - Dependentfiles: [C:\WINNT\System32\spool\DRIVERS\W32X86\2\Hddm91c1_de.def] - Dependentfiles: [C:\WINNT\System32\spool\DRIVERS\W32X86\2\Hddm91c1_de.hre] - Dependentfiles: [C:\WINNT\System32\spool\DRIVERS\W32X86\2\Hddm91c1_de.vnd] - Dependentfiles: [C:\WINNT\System32\spool\DRIVERS\W32X86\2\Hddm91c1_de.hlp] - Dependentfiles: [C:\WINNT\System32\spool\DRIVERS\W32X86\2\Hddm91c1_de_reg.HLP] - Dependentfiles: [C:\WINNT\System32\spool\DRIVERS\W32X86\2\HDNIS01Aux.dll] - Dependentfiles: [C:\WINNT\System32\spool\DRIVERS\W32X86\2\HDNIS01_de.NTF] + Dependentfiles: [C:\WINNT\System32\spool\DRIVERS\W32X86\2\Hddm91c1_de.DLL] + Dependentfiles: [C:\WINNT\System32\spool\DRIVERS\W32X86\2\Hddm91c1_de.INI] + Dependentfiles: [C:\WINNT\System32\spool\DRIVERS\W32X86\2\Hddm91c1KMMin.DLL] + Dependentfiles: [C:\WINNT\System32\spool\DRIVERS\W32X86\2\Hddm91c1_de.dat] + Dependentfiles: [C:\WINNT\System32\spool\DRIVERS\W32X86\2\Hddm91c1_de.cat] + Dependentfiles: [C:\WINNT\System32\spool\DRIVERS\W32X86\2\Hddm91c1_de.def] + Dependentfiles: [C:\WINNT\System32\spool\DRIVERS\W32X86\2\Hddm91c1_de.hre] + Dependentfiles: [C:\WINNT\System32\spool\DRIVERS\W32X86\2\Hddm91c1_de.vnd] + Dependentfiles: [C:\WINNT\System32\spool\DRIVERS\W32X86\2\Hddm91c1_de.hlp] + Dependentfiles: [C:\WINNT\System32\spool\DRIVERS\W32X86\2\Hddm91c1_de_reg.HLP] + Dependentfiles: [C:\WINNT\System32\spool\DRIVERS\W32X86\2\HDNIS01Aux.dll] + Dependentfiles: [C:\WINNT\System32\spool\DRIVERS\W32X86\2\HDNIS01_de.NTF] - Monitorname: [] - Defaultdatatype: [] - + Monitorname: [] + Defaultdatatype: [] @@ -1738,7 +1647,7 @@ can also host the Win9x drivers, even if itself runs on Windows NT, -Since the [print$] share is usually accessible +Since the [print$] share is usually accessible through the Network Neighbourhood, you can also use the UNC notation from Windows Explorer to poke at it. The Win9x driver files will end up in subdirectory "0" of the "WIN40" directory. The full path to @@ -1763,7 +1672,7 @@ this. These type of drivers install into the "3" subdirectory. Now we need to collect all the driver files we identified. in our previous step. Where do we get them from? Well, why not retrieve them -from the very PC and the same [print$] share +from the very PC and the same [print$] share which we investigated in our last step to identify the files? We can use smbclient to do this. We will use the paths and names which were leaked to us by getdriver. The @@ -1774,15 +1683,15 @@ listing is edited to include linebreaks for readability: &rootprompt;smbclient //TURBO_XP/print\$ -U'Danka%xxxx' \ -c 'cd W32X86/2;mget HD*_de.* \ hd*ppd Hd*_de.* Hddm*dll HDN*Aux.DLL' - added interface ip=10.160.51.60 bcast=10.160.51.255 nmask=255.255.252.0 - Got a positive name query response from 10.160.50.8 ( 10.160.50.8 ) - Domain=[DEVELOPMENT] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager] - Get file Hddm91c1_de.ABD? n - Get file Hddm91c1_de.def? y - getting file \W32X86\2\Hddm91c1_de.def of size 428 as Hddm91c1_de.def (22.0 kb/s) (average 22.0 kb/s) - Get file Hddm91c1_de.DLL? y - getting file \W32X86\2\Hddm91c1_de.DLL of size 876544 as Hddm91c1_de.DLL (737.3 kb/s) (average 737.3 kb/s) - [...] +added interface ip=10.160.51.60 bcast=10.160.51.255 nmask=255.255.252.0 +Got a positive name query response from 10.160.50.8 ( 10.160.50.8 ) +Domain=[DEVELOPMENT] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager] +Get file Hddm91c1_de.ABD? n +Get file Hddm91c1_de.def? y +getting file \W32X86\2\Hddm91c1_de.def of size 428 as Hddm91c1_de.def +Get file Hddm91c1_de.DLL? y +getting file \W32X86\2\Hddm91c1_de.DLL of size 876544 as Hddm91c1_de.DLL +[...] @@ -1800,7 +1709,7 @@ architecture should you need to support Win95/98/XP clients. Remember, the files for these architectures are in the WIN40/0/ subdir. Once we are complete, we can run smbclient ... put to store the collected files on the Samba server's -[print$] share. +[print$] share. @@ -1809,11 +1718,11 @@ the collected files on the Samba server's So, now we are going to put the driver files into the -[print$] share. Remember, the UNIX path to this +[print$] share. Remember, the UNIX path to this share has been defined previously in your . You also have created subdirectories for the different Windows client types you want to support. Supposing -your [print$] share maps to the UNIX path +your [print$] share maps to the UNIX path /etc/samba/drivers/, your driver files should now go here: @@ -1834,11 +1743,12 @@ network. We specify the same files and paths as were leaked to us by running getdriver against the original Windows install. However, now we are going to store the files into a Samba/UNIX print server's -[print$] share... +[print$] share... -&rootprompt;smbclient //SAMBA-CUPS/print\$ -U'root%xxxx' -c 'cd W32X86; put HDNIS01_de.DLL; \ + &rootprompt;smbclient //SAMBA-CUPS/print\$ -U'root%xxxx' -c \ + 'cd W32X86; put HDNIS01_de.DLL; \ put Hddm91c1_de.ppd; put HDNIS01U_de.DLL; \ put HDNIS01U_de.HLP; put Hddm91c1_de.DLL; \ put Hddm91c1_de.INI; put Hddm91c1KMMin.DLL; \ @@ -1847,26 +1757,25 @@ store the files into a Samba/UNIX print server's put Hddm91c1_de.vnd; put Hddm91c1_de.hlp; \ put Hddm91c1_de_reg.HLP; put HDNIS01Aux.dll; \ put HDNIS01_de.NTF' - added interface ip=10.160.51.60 bcast=10.160.51.255 nmask=255.255.252.0 - Got a positive name query response from 10.160.51.162 ( 10.160.51.162 ) - Domain=[CUPS-PRINT] OS=[Unix] Server=[Samba 2.2.7a] - putting file HDNIS01_de.DLL as \W32X86\HDNIS01_de.DLL (4465.5 kb/s) (average 4465.5 kb/s) - putting file Hddm91c1_de.ppd as \W32X86\Hddm91c1_de.ppd (12876.8 kb/s) (average 4638.9 kb/s) - putting file HDNIS01U_de.DLL as \W32X86\HDNIS01U_de.DLL (20249.8 kb/s) (average 5828.3 kb/s) - putting file HDNIS01U_de.HLP as \W32X86\HDNIS01U_de.HLP (9652.8 kb/s) (average 5899.8 kb/s) - putting file Hddm91c1_de.DLL as \W32X86\Hddm91c1_de.DLL (23777.7 kb/s) (average 10400.6 kb/s) - putting file Hddm91c1_de.INI as \W32X86\Hddm91c1_de.INI (98.6 kb/s) (average 10329.0 kb/s) - putting file Hddm91c1KMMin.DLL as \W32X86\Hddm91c1KMMin.DLL (22931.5 kb/s) (average 10501.7 kb/s) - putting file Hddm91c1_de.dat as \W32X86\Hddm91c1_de.dat (2462.8 kb/s) (average 10393.0 kb/s) - putting file Hddm91c1_de.dat as \W32X86\Hddm91c1_de.dat (4925.3 kb/s) (average 10356.3 kb/s) - putting file Hddm91c1_de.def as \W32X86\Hddm91c1_de.def (417.9 kb/s) (average 10290.1 kb/s) - putting file Hddm91c1_de.hre as \W32X86\Hddm91c1_de.hre (22571.3 kb/s) (average 11338.5 kb/s) - putting file Hddm91c1_de.vnd as \W32X86\Hddm91c1_de.vnd (3384.6 kb/s) (average 10754.3 kb/s) - putting file Hddm91c1_de.hlp as \W32X86\Hddm91c1_de.hlp (18406.8 kb/s) (average 10839.8 kb/s) - putting file Hddm91c1_de_reg.HLP as \W32X86\Hddm91c1_de_reg.HLP (20278.3 kb/s) (average 11386.3 kb/s) - putting file HDNIS01Aux.dll as \W32X86\HDNIS01Aux.dll (14994.6 kb/s) (average 11405.2 kb/s) - putting file HDNIS01_de.NTF as \W32X86\HDNIS01_de.NTF (23390.2 kb/s) (average 13170.8 kb/s) - +added interface ip=10.160.51.60 bcast=10.160.51.255 nmask=255.255.252.0 +Got a positive name query response from 10.160.51.162 ( 10.160.51.162 ) +Domain=[CUPS-PRINT] OS=[UNIX] Server=[Samba 2.2.7a] +putting file HDNIS01_de.DLL as \W32X86\HDNIS01_de.DLL +putting file Hddm91c1_de.ppd as \W32X86\Hddm91c1_de.ppd +putting file HDNIS01U_de.DLL as \W32X86\HDNIS01U_de.DLL +putting file HDNIS01U_de.HLP as \W32X86\HDNIS01U_de.HLP +putting file Hddm91c1_de.DLL as \W32X86\Hddm91c1_de.DLL +putting file Hddm91c1_de.INI as \W32X86\Hddm91c1_de.INI +putting file Hddm91c1KMMin.DLL as \W32X86\Hddm91c1KMMin.DLL +putting file Hddm91c1_de.dat as \W32X86\Hddm91c1_de.dat +putting file Hddm91c1_de.dat as \W32X86\Hddm91c1_de.dat +putting file Hddm91c1_de.def as \W32X86\Hddm91c1_de.def +putting file Hddm91c1_de.hre as \W32X86\Hddm91c1_de.hre +putting file Hddm91c1_de.vnd as \W32X86\Hddm91c1_de.vnd +putting file Hddm91c1_de.hlp as \W32X86\Hddm91c1_de.hlp +putting file Hddm91c1_de_reg.HLP as \W32X86\Hddm91c1_de_reg.HLP +putting file HDNIS01Aux.dll as \W32X86\HDNIS01Aux.dll +putting file HDNIS01_de.NTF as \W32X86\HDNIS01_de.NTF @@ -1893,42 +1802,42 @@ also and do this through a standard UNIX shell access too): -&rootprompt;smbclient //SAMBA-CUPS/print\$ -U 'root%xxxx' -c 'cd W32X86; pwd; dir; cd 2; pwd; dir' +&rootprompt;smbclient //SAMBA-CUPS/print\$ -U 'root%xxxx' \ + -c 'cd W32X86; pwd; dir; cd 2; pwd; dir' added interface ip=10.160.51.60 bcast=10.160.51.255 nmask=255.255.252.0 - Got a positive name query response from 10.160.51.162 ( 10.160.51.162 ) - Domain=[CUPS-PRINT] OS=[Unix] Server=[Samba 2.2.7a] - - Current directory is \\SAMBA-CUPS\print$\W32X86\ - . D 0 Sun May 4 03:56:35 2003 - .. D 0 Thu Apr 10 23:47:40 2003 - 2 D 0 Sun May 4 03:56:18 2003 - HDNIS01Aux.dll A 15356 Sun May 4 03:58:59 2003 - Hddm91c1KMMin.DLL A 46966 Sun May 4 03:58:59 2003 - HDNIS01_de.DLL A 434400 Sun May 4 03:58:59 2003 - HDNIS01_de.NTF A 790404 Sun May 4 03:56:35 2003 - Hddm91c1_de.DLL A 876544 Sun May 4 03:58:59 2003 - Hddm91c1_de.INI A 101 Sun May 4 03:58:59 2003 - Hddm91c1_de.dat A 5044 Sun May 4 03:58:59 2003 - Hddm91c1_de.def A 428 Sun May 4 03:58:59 2003 - Hddm91c1_de.hlp A 37699 Sun May 4 03:58:59 2003 - Hddm91c1_de.hre A 323584 Sun May 4 03:58:59 2003 - Hddm91c1_de.ppd A 26373 Sun May 4 03:58:59 2003 - Hddm91c1_de.vnd A 45056 Sun May 4 03:58:59 2003 - HDNIS01U_de.DLL A 165888 Sun May 4 03:58:59 2003 - HDNIS01U_de.HLP A 19770 Sun May 4 03:58:59 2003 - Hddm91c1_de_reg.HLP A 228417 Sun May 4 03:58:59 2003 - 40976 blocks of size 262144. 709 blocks available - - Current directory is \\SAMBA-CUPS\print$\W32X86\2\ - . D 0 Sun May 4 03:56:18 2003 - .. D 0 Sun May 4 03:56:35 2003 - ADOBEPS5.DLL A 434400 Sat May 3 23:18:45 2003 - laserjet4.ppd A 9639 Thu Apr 24 01:05:32 2003 - ADOBEPSU.DLL A 109568 Sat May 3 23:18:45 2003 - ADOBEPSU.HLP A 18082 Sat May 3 23:18:45 2003 - PDFcreator2.PPD A 15746 Sun Apr 20 22:24:07 2003 - 40976 blocks of size 262144. 709 blocks available - +Got a positive name query response from 10.160.51.162 ( 10.160.51.162 ) +Domain=[CUPS-PRINT] OS=[UNIX] Server=[Samba 2.2.7a] + +Current directory is \\SAMBA-CUPS\print$\W32X86\ +. D 0 Sun May 4 03:56:35 2003 +.. D 0 Thu Apr 10 23:47:40 2003 +2 D 0 Sun May 4 03:56:18 2003 +HDNIS01Aux.dll A 15356 Sun May 4 03:58:59 2003 +Hddm91c1KMMin.DLL A 46966 Sun May 4 03:58:59 2003 +HDNIS01_de.DLL A 434400 Sun May 4 03:58:59 2003 +HDNIS01_de.NTF A 790404 Sun May 4 03:56:35 2003 +Hddm91c1_de.DLL A 876544 Sun May 4 03:58:59 2003 +Hddm91c1_de.INI A 101 Sun May 4 03:58:59 2003 +Hddm91c1_de.dat A 5044 Sun May 4 03:58:59 2003 +Hddm91c1_de.def A 428 Sun May 4 03:58:59 2003 +Hddm91c1_de.hlp A 37699 Sun May 4 03:58:59 2003 +Hddm91c1_de.hre A 323584 Sun May 4 03:58:59 2003 +Hddm91c1_de.ppd A 26373 Sun May 4 03:58:59 2003 +Hddm91c1_de.vnd A 45056 Sun May 4 03:58:59 2003 +HDNIS01U_de.DLL A 165888 Sun May 4 03:58:59 2003 +HDNIS01U_de.HLP A 19770 Sun May 4 03:58:59 2003 +Hddm91c1_de_reg.HLP A 228417 Sun May 4 03:58:59 2003 + 40976 blocks of size 262144. 709 blocks available + +Current directory is \\SAMBA-CUPS\print$\W32X86\2\ +. D 0 Sun May 4 03:56:18 2003 +.. D 0 Sun May 4 03:56:35 2003 +ADOBEPS5.DLL A 434400 Sat May 3 23:18:45 2003 +laserjet4.ppd A 9639 Thu Apr 24 01:05:32 2003 +ADOBEPSU.DLL A 109568 Sat May 3 23:18:45 2003 +ADOBEPSU.HLP A 18082 Sat May 3 23:18:45 2003 +PDFcreator2.PPD A 15746 Sun Apr 20 22:24:07 2003 + 40976 blocks of size 262144. 709 blocks available @@ -1952,7 +1861,7 @@ driver files belong. So, next you must tell Samba about the special category of the files -you just uploaded into the [print$] share. This +you just uploaded into the [print$] share. This is done by the adddriver command. It will prompt Samba to register the driver files into its internal TDB database files. The following command and its output has been edited, @@ -1960,21 +1869,23 @@ again, for readability: -&rootprompt;rpcclient -Uroot%xxxx -c 'adddriver "Windows NT x86" "dm9110:HDNIS01_de.DLL: \ - Hddm91c1_de.ppd:HDNIS01U_de.DLL:HDNIS01U_de.HLP: \ - NULL:RAW:Hddm91c1_de.DLL,Hddm91c1_de.INI, \ - Hddm91c1_de.dat,Hddm91c1_de.def,Hddm91c1_de.hre, \ - Hddm91c1_de.vnd,Hddm91c1_de.hlp,Hddm91c1KMMin.DLL, \ - HDNIS01Aux.dll,HDNIS01_de.NTF, \ - Hddm91c1_de_reg.HLP' SAMBA-CUPS - - cmd = adddriver "Windows NT x86" "dm9110:HDNIS01_de.DLL:Hddm91c1_de.ppd:HDNIS01U_de.DLL: \ - HDNIS01U_de.HLP:NULL:RAW:Hddm91c1_de.DLL,Hddm91c1_de.INI, \ - Hddm91c1_de.dat,Hddm91c1_de.def,Hddm91c1_de.hre, \ - Hddm91c1_de.vnd,Hddm91c1_de.hlp,Hddm91c1KMMin.DLL, \ - HDNIS01Aux.dll,HDNIS01_de.NTF,Hddm91c1_de_reg.HLP" - - Printer Driver dm9110 successfully installed. + &rootprompt;rpcclient -Uroot%xxxx -c 'adddriver "Windows NT x86" \ +"dm9110:HDNIS01_de.DLL: \ +Hddm91c1_de.ppd:HDNIS01U_de.DLL:HDNIS01U_de.HLP: \ + NULL:RAW:Hddm91c1_de.DLL,Hddm91c1_de.INI, \ + Hddm91c1_de.dat,Hddm91c1_de.def,Hddm91c1_de.hre, \ + Hddm91c1_de.vnd,Hddm91c1_de.hlp,Hddm91c1KMMin.DLL, \ + HDNIS01Aux.dll,HDNIS01_de.NTF, \ + Hddm91c1_de_reg.HLP' SAMBA-CUPS + +cmd = adddriver "Windows NT x86" \ +"dm9110:HDNIS01_de.DLL:Hddm91c1_de.ppd:HDNIS01U_de.DLL: \ + HDNIS01U_de.HLP:NULL:RAW:Hddm91c1_de.DLL,Hddm91c1_de.INI, \ + Hddm91c1_de.dat,Hddm91c1_de.def,Hddm91c1_de.hre, \ + Hddm91c1_de.vnd,Hddm91c1_de.hlp,Hddm91c1KMMin.DLL, \ + HDNIS01Aux.dll,HDNIS01_de.NTF,Hddm91c1_de_reg.HLP" + +Printer Driver dm9110 successfully installed. @@ -2005,9 +1916,9 @@ subdirectory. You can check this again with -&rootprompt;smbclient //SAMBA-CUPS/print\$ -Uroot%xxxx -c 'cd W32X86;dir;pwd;cd 2;dir;pwd' +&rootprompt;smbclient //SAMBA-CUPS/print\$ -Uroot%xx -c 'cd W32X86;dir;pwd;cd 2;dir;pwd' added interface ip=10.160.51.162 bcast=10.160.51.255 nmask=255.255.252.0 - Domain=[CUPS-PRINT] OS=[Unix] Server=[Samba 2.2.7a] + Domain=[CUPS-PRINT] OS=[UNIX] Server=[Samba 2.2.7a] Current directory is \\SAMBA-CUPS\print$\W32X86\ . D 0 Sun May 4 04:32:48 2003 @@ -2101,7 +2012,7 @@ host and "xxxx" represents the actual Samba password assigned to root: You will see a listing of all drivers Samba knows about. Your new one should be amongst them. But it is only listed under the [Windows NT -x86] heading, not under [Windows 4.0], +x86] heading, not under [Windows 4.0], since we didn't install that part. Or did *you*? -- You will see a listing of all drivers Samba knows about. Your new one should be amongst them. In our example it is named dm9110. Note that the 3rd column @@ -2125,13 +2036,13 @@ with a different driver name, it will work the same: &rootprompt;rpcclient -Uroot%xxxx \ - -c 'adddriver "Windows NT x86" \ - "myphantasydrivername:HDNIS01_de.DLL: \ - Hddm91c1_de.ppd:HDNIS01U_de.DLL:HDNIS01U_de.HLP: \ - NULL:RAW:Hddm91c1_de.DLL,Hddm91c1_de.INI, \ - Hddm91c1_de.dat,Hddm91c1_de.def,Hddm91c1_de.hre, \ - Hddm91c1_de.vnd,Hddm91c1_de.hlp,Hddm91c1KMMin.DLL, \ - HDNIS01Aux.dll,HDNIS01_de.NTF,Hddm91c1_de_reg.HLP' SAMBA-CUPS + -c 'adddriver "Windows NT x86" \ + "myphantasydrivername:HDNIS01_de.DLL: \ + Hddm91c1_de.ppd:HDNIS01U_de.DLL:HDNIS01U_de.HLP: \ + NULL:RAW:Hddm91c1_de.DLL,Hddm91c1_de.INI, \ + Hddm91c1_de.dat,Hddm91c1_de.def,Hddm91c1_de.hre, \ + Hddm91c1_de.vnd,Hddm91c1_de.hlp,Hddm91c1KMMin.DLL, \ + HDNIS01Aux.dll,HDNIS01_de.NTF,Hddm91c1_de_reg.HLP' SAMBA-CUPS cmd = adddriver "Windows NT x86" @@ -2151,7 +2062,7 @@ you are responsible yourself that you associate drivers to queues which make sense to the target printer). Note, that you can't run the rpcclient adddriver command repeatedly. Each run "consumes" the files you had put into the -[print$] share by moving them into the +[print$] share by moving them into the respective subdirectories. So you must precede an smbclient ... put command before each rpcclient ... adddriver" command. @@ -2159,7 +2070,7 @@ respective subdirectories. So you must precede an -La Grande Finale: Running <command>rpcclient</command> with +<title>Running <command>rpcclient</command> with <command>setdriver</command> @@ -2207,8 +2118,7 @@ signal to all running smbd processes to work around this: -"The Proof of the Pudding lies in the Eating" (Client Driver Install -Procedure) +Client Driver Install Procedure A famous philosopher said once: The Proof of the Pudding lies @@ -2227,7 +2137,7 @@ all further clients are easy to setup and shouldn't need further attention. What follows is a description for the recommended first procedure. You work now from a client workstation. First you should guarantee that your connection is not unwittingly mapped to -bad user "nobody". In a DOS box type: +bad user "nobody". In a DOS box type: net use \\SAMBA-SERVER\print$ /user:root @@ -2330,13 +2240,13 @@ This can be achieved by accessing the drivers remotely from an NT (or Be aware, that a valid Device Mode can only be initiated by a -printer admin, or root (the reason should be +printer admin, or root (the reason should be obvious). Device Modes can only correctly be set by executing the printer driver program itself. Since Samba can not execute this Win32 platform driver code, it sets this field initially to NULL (which is not a valid setting for clients to use). Fortunately, most drivers generate themselves the Printer Driver Data that is needed, when they -are uploaded to the [print$] share with the +are uploaded to the [print$] share with the help of the APW or rpcclient. @@ -2447,10 +2357,10 @@ or in the Run command... field from the After you installed the driver on the Samba server (in its -[print$] share, you should always make sure +[print$] share, you should always make sure that your first client installation completes correctly. Make it a habit for yourself to build that the very first connection from a client as -printer admin. This is to make sure that: +printer admin. This is to make sure that: @@ -2477,7 +2387,10 @@ To connect as root to a Samba printer, try this command from a Windows 2K/XP DOS box command prompt: -runas /netonly /user:root "rundll32 printui.dll,PrintUIEntry /p /t3 /n \\SAMBA-SERVER\printername" + +&dosprompt;runas /netonly /user:root "rundll32 printui.dll,PrintUIEntry /p /t3 /n + \\SAMBA-SERVER\printername" + @@ -2485,7 +2398,7 @@ You will be prompted for root's Samba-password; type it, wait a few seconds, click on Printing Defaults... and proceed to set the job options as should be used as defaults by all clients. Alternatively, instead of root you can name one other member -of the printer admins from the setting. +of the printer admin from the setting. @@ -2609,7 +2522,7 @@ either. However, only the last one, which you arrived at with steps C.1.-6. will permanently save any settings which will then become the defaults for new users. If you want all clients to have the same defaults, you need to conduct these steps as administrator -(printer admin in ) +(printer admin in ) before a client downloads the driver (the clients can later set their own per-user defaults by following the procedures A. @@ -2673,7 +2586,7 @@ clicking orgy alone, you need to think about a non-interactive script. If more than one printer is using the same driver, the rpcclient setdriver command can be used to set the driver associated with an installed queue. If the driver is uploaded -to [print$] once and registered with the +to [print$] once and registered with the printing TDBs, it can be used by multiple print queues. In this case you just need to repeat the setprinter subcommand of rpcclient for every queue (without the need to @@ -2715,7 +2628,8 @@ following is an example of how this could be accomplished: -&rootprompt;rpcclient SAMBA-CUPS -U root%secret -c 'setdriver dm9110 "Heidelberg Digimaster 9110 (PS)"' +&rootprompt;rpcclient SAMBA-CUPS -U root%secret -c \ + 'setdriver dm9110 "Heidelberg Digimaster 9110 (PS)"' cmd = setdriver dm9110 Heidelberg Digimaster 9110 (PPD) Successfully set dm9110 to driver Heidelberg Digimaster 9110 (PS). @@ -2725,7 +2639,8 @@ following is an example of how this could be accomplished: cmd = enumprinters flags:[0x800000] name:[\\SAMBA-CUPS\dm9110] - description:[\\SAMBA-CUPS\dm9110,Heidelberg Digimaster 9110 (PS),110ppm HiVolume DANKA Stuttgart] + description:[\\SAMBA-CUPS\dm9110,Heidelberg Digimaster 9110 (PS),\ + 110ppm HiVolume DANKA Stuttgart] comment:[110ppm HiVolume DANKA Stuttgart] [....] @@ -2741,7 +2656,8 @@ following is an example of how this could be accomplished: cmd = enumprinters flags:[0x800000] name:[\\SAMBA-CUPS\dm9110] - description:[\\SAMBA-CUPS\dm9110,myphantasydrivername,110ppm HiVolume DANKA Stuttgart] + description:[\\SAMBA-CUPS\dm9110,myphantasydrivername,\ + 110ppm HiVolume DANKA Stuttgart] comment:[110ppm HiVolume DANKA Stuttgart] [....] @@ -2771,7 +2687,7 @@ if: ...the connected user is able to successfully execute an OpenPrinterEx(\\server) with administrative -privileges (i.e. root or printer admin). +privileges (i.e. root or printer admin). Try this from a Windows 2K/XP DOS box command prompt: @@ -2786,7 +2702,7 @@ and click on Printing Preferences... ... contains the setting -show add printer wizard = yes (the +show add printer wizardyes (the default). @@ -2796,7 +2712,7 @@ The APW can do various things: upload a new driver to the Samba -[print$] share; +[print$] share; associate an uploaded driver with an existing (but still "driverless") print queue; @@ -2805,8 +2721,8 @@ still "driverless") print queue; print queue with one that has been uploaded before; add an entirely new printer to the Samba host (only in -conjunction with a working add printer command; -a corresponding delete printer command for +conjunction with a working add printer command; +a corresponding delete printer command for removing entries from the Printers... folder may be provided too) @@ -2814,9 +2730,9 @@ may be provided too) The last one (add a new printer) requires more effort than the previous ones. In order to use the APW to successfully add a printer -to a Samba server, the add printer command must +to a Samba server, the add printer command must have a defined value. The program hook must successfully add the -printer to the Unix print system (i.e. to +printer to the UNIX print system (i.e. to /etc/printcap, /etc/cups/printers.conf or other appropriate files) and to if necessary. @@ -2828,10 +2744,8 @@ exist, smbd will execute the add printer command and reparse to the 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 -command is executed under the context of the connected -user, not necessarily a root account. A map to guest = bad -user may have connected you unwittingly under the wrong +returned to the client. Note that the add printer command is executed under the context of the connected +user, not necessarily a root account. A map to guestbad user may have connected you unwittingly under the wrong privilege; you should check it by using the smbstatus command. @@ -3068,7 +2982,7 @@ multiple ports as a form of load balancing or fail over. If you require that multiple ports be defined for some reason or another (My users and my Boss should not know that they are working with Samba), possesses a -enumports command which can be used to define +enumports command which can be used to define an external program that generates a listing of ports on a system. @@ -3094,7 +3008,7 @@ Settings" in the CUPS Printing part of this document. 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 -athttp://imprints.sourceforge.net/ +at http://imprints.sourceforge.net/ as well as the documentation included with the imprints source distribution. This section will only provide a brief introduction to the features of Imprints. @@ -3298,14 +3212,6 @@ Here is a list of the used commandline parameters: - -I have tested this with a Samba 2.2.7a and a Samba-3alpha24 -installation and Windows XP Professional clients. Note that this -specific command set works with network print queues (installing -local print queues requires different parameters, but this is of no -interest here). - - Line 1 deletes a possibly existing previous network printer infotec2105-IPDS (which had used native @@ -3338,7 +3244,7 @@ on "sambacupsserver", and if the printer drivers have successfully been uploaded (via APW , smbclient/rpcclient or cupsaddsmb) into the -[print$] driver repository of Samba. Also, some +[print$] driver repository of Samba. Also, some Samba versions prior to version 3.0 required a re-start of smbd after the printer install and the driver upload, otherwise the script (or any other client driver download) would fail. @@ -3392,7 +3298,7 @@ create a new printer on Samba and the UNIX print subsystem! -Migration of "Classical" printing to Samba-3 +Migration of "Classical" printing to Samba The basic "NT-style" printer driver management has not changed @@ -3408,9 +3314,9 @@ possible scenarios for migration: You need to study and apply the new Windows NT printer -and driver support. Previously used parameters "printer -driver file", " printer driver" and -"printer driver location" are no longer +and driver support. Previously used parameters printer +driver file, printer driver and +printer driver location are no longer supported. If you want to take advantage of WinNT printer driver @@ -3418,19 +3324,18 @@ support you also need to migrate the Win9x/ME drivers to the new setup. An existing printers.def file -(the one specified in the now removed parameter printer -driver file = ...) will work no longer with Samba-3.0. In + (the one specified in the now removed parameter printer driver file) will work no longer with samba 3. In 3.0, smbd attempts to locate a Win9x/ME driver files for the printer -in [print$] and additional settings in the TDB +in [print$] and additional settings in the TDB and only there; if it fails it will not (as 2.2.x used to do) drop down to using a printers.def (and all associated parameters). The make_printerdef tool is removed and there is no backwards compatibility for this. You need to install a Windows 9x driver into the -[print$] share for a printer on your Samba +[print$] share for a printer on your Samba host. The driver files will be stored in the "WIN40/0" subdirectory of -[print$], and some other settings and info go +[print$], and some other settings and info go into the printing-related TDBs. If you want to migrate an existing @@ -3441,7 +3346,7 @@ rpcclient. See the Imprints installation client at: -http://imprints.sourceforge.net/ + http://imprints.sourceforge.net/ @@ -3459,18 +3364,13 @@ We will publish an update to this section shortly. -Common Errors and Problems - - -Here are a few typical errors and problems people have -encountered. You can avoid them. Read on. - +Common Errors I give my root password but I don't get access -Don't confuse the root password which is valid for the Unix system +Don't confuse the root password which is valid for the UNIX system (and in most cases stored in the form of a one-way hash in a file named /etc/shadow) with the password used to authenticate against Samba!. Samba doesn't know the UNIX password; for @@ -3484,7 +3384,7 @@ for root must be created first. This is often done with the My printjobs get spooled into the spooling directory, but then get lost -Don't use the existing Unix print system spool directory for the Samba +Don't use the existing UNIX print system spool directory for the Samba spool directory. It may seem convenient and a saving of space, but it only leads to problems. The two must be separate. -- cgit