]> git.ipfire.org Git - thirdparty/cups.git/blame - doc/sam.shtml
Load cups into easysw/current.
[thirdparty/cups.git] / doc / sam.shtml
CommitLineData
ef416fc2 1<HTML>
2<HEAD>
3 <META NAME="COPYRIGHT" CONTENT="Copyright 1997-2003, All Rights Reserved">
4 <META NAME="DOCNUMBER" CONTENT="CUPS-SAM-1.2.0">
5 <META NAME="Author" CONTENT="Easy Software Products">
6 <TITLE>CUPS Software Administrators Manual</TITLE>
7</HEAD>
8<BODY>
9
10<H1 ALIGN="RIGHT">Preface</H1>
11
12<P>This software administrators manual provides printer administration
13information for the Common UNIX Printing System<SUP>TM</SUP>
14("CUPS<SUP>TM</SUP>"), version 1.2.0.
15
16<EMBED SRC="system-overview.shtml">
17
18<!-- NEED 3in -->
19<H2>Document Overview</H2>
20
21<P>This software administrators manual is organized into the following sections:</P>
22
23<UL>
24 <LI><A HREF="#OVERVIEW">1 - Printing System Overview</A>
25 <LI><A HREF="#BUILDING_INSTALLING">2 - Building and Installing CUPS</A>
26 <LI><A HREF="#MANAGING_PRINTERS">3 - Managing Printers</A>
27 <LI><A HREF="#PRINTER_CLASSES">4 - Printer Classes</A>
28 <LI><A HREF="#CLIENT_SETUP">5 - Client Setup</A>
29 <LI><A HREF="#PRINTING_MANAGEMENT">6 - Printing System Management</A>
30 <LI><A HREF="#PRINTING_OTHER">7 - Printing with Other Systems</A>
31 <LI><A HREF="#LICENSE">A - Software License Agreement</A>
32 <LI><A HREF="#COMMON_NETWORK">B - Common Network Settings</A>
33 <LI><A HREF="#PRINTER_DRIVERS">C - Printer Drivers</A>
34 <LI><A HREF="#FILES">D - List of Files</A>
35 <LI><A HREF="#FAQ">E - Troubleshooting Common Problems</A>
36</UL>
37
38<H2>Notation Conventions</H2>
39
40<P>Various font and syntax conventions are used in this guide. Examples and
41their meanings and uses are explained below:
42
43<CENTER><TABLE WIDTH="80%">
44<TR>
45 <TH>Example</TH>
46 <TD>&nbsp;&nbsp;&nbsp;</TD>
47 <TH>Description</TH>
48</TR>
49<TR><TD>&nbsp;</TD></TR>
50<TR VALIGN="TOP">
51 <TD><CODE>lpstat</CODE><BR>
52 <CODE>lpstat(1)</CODE></TD>
53
54 <TD>&nbsp;&nbsp;&nbsp;</TD>
55
56 <TD>The names of commands; the first mention of a command or
57 function in a chapter is followed by a manual page section
58 number.</TD>
59</TR>
60<TR><TD>&nbsp;</TD></TR>
61<TR VALIGN="TOP">
62 <TD><VAR>/var</VAR><BR>
63 <VAR>/usr/share/cups/data/testprint.ps</VAR></TD>
64
65 <TD>&nbsp;&nbsp;&nbsp;</TD>
66
67 <TD>File and directory names.</TD>
68</TR>
69<TR><TD>&nbsp;</TD></TR>
70<TR VALIGN="TOP">
71 <TD NOWRAP><TT>Request ID is Printer-123</TT></TD>
72
73 <TD>&nbsp;&nbsp;&nbsp;</TD>
74
75 <TD>Screen output.</TD>
76</TR>
77<TR><TD>&nbsp;</TD></TR>
78<TR VALIGN="TOP">
79 <TD NOWRAP><KBD>lp -d printer filename ENTER</KBD></TD>
80
81 <TD>&nbsp;&nbsp;&nbsp;</TD>
82
83 <TD>Literal user input; special keys like <KBD>ENTER</KBD> are
84 in ALL CAPS.</TD>
85</TR>
86<TR><TD>&nbsp;</TD></TR>
87<TR VALIGN="TOP">
88 <TD>12.3</TD>
89
90 <TD>&nbsp;&nbsp;&nbsp;</TD>
91
92 <TD>Numbers in the text are written using the period (.) to indicate
93 the decimal point.</TD>
94</TR>
95</TABLE></CENTER>
96
97<!-- NEED 3in -->
98<H2>Abbreviations</H2>
99
100The following abbreviations are used throughout this manual:
101
102<UL>
103<DL>
104
105 <DT>kb
106 <DD>Kilobytes, or 1024 bytes<BR>&nbsp;
107
108 <DT>Mb
109 <DD>Megabytes, or 1048576 bytes<BR>&nbsp;
110
111 <DT>Gb
112 <DD>Gigabytes, or 1073741824 bytes<BR>&nbsp;
113
114</DL>
115</UL>
116
117<H2>Other References</H2>
118
119<UL>
120<DL>
121
122 <DT>CUPS Software Programmers Manual
123
124 <DD>A programmer guide for interfacing with and/or extending the CUPS
125 software.<BR>&nbsp;
126
127 <DT>CUPS Software Users Manual
128
129 <DD>An end-user guide for using the CUPS software.<BR>&nbsp;
130
131</DL>
132</UL>
133
134
135<EMBED SRC="printing-overview.shtml">
136
137
138<H1 ALIGN="RIGHT"><A NAME="BUILDING_INSTALLING">2 - Building and Installing CUPS</A></H1>
139
140<P>This chapter shows how to build and install the Common UNIX Printing System.
141If you are installing a binary distribution from the CUPS web site, proceed to
142the section titled, <A HREF="#BINARY">Installing a Binary Distribution</A>.
143
144<H2>Installing a Source Distribution</H2>
145
146<P>This section describes how to compile and install CUPS on your system
147from the source code.
148
149<H3><A NAME="REQUIREMENTS">Requirements</A></H3>
150
151<P>You'll need ANSI-compliant C and C++ compilers to build CUPS on your
152system. As its name implies, CUPS is designed to run on the UNIX
153operating system, however the CUPS interface library and most of the
154filters and backends supplied with CUPS should also compile and run
155under Microsoft Windows.
156
157<P>For the image file filters and PostScript RIP, you'll need the JPEG,
158PNG, TIFF, and ZLIB libraries. CUPS will build without these, but with
159significantly reduced functionality. Easy Software Products maintains a
160mirror of the current versions of these libraries at:
161
162<UL><PRE>
163<A HREF="ftp://ftp.easysw.com/pub/libraries">ftp://ftp.easysw.com/pub/libraries</A>
164</PRE></UL>
165
166<P>If you make changes to the man pages you'll need GNU groff or another
167nroff-like package. GNU groff is available from:
168
169<UL><PRE>
170<A HREF="ftp://ftp.gnu.org/pub/groff">ftp://ftp.gnu.org/pub/groff</A>
171</PRE></UL>
172
173<P>The documentation is formatted using the HTMLDOC software. If you need to
174make changes you can get the HTMLDOC software from:
175
176<UL><PRE>
177<A HREF="http://www.easysw.com/htmldoc">http://www.easysw.com/htmldoc</A>
178</PRE></UL>
179
180<P>Finally, you'll need a <CODE>make</CODE> program that
181understands the <CODE>include</CODE> directive - FreeBSD,
182NetBSD, and OpenBSD developers should use the <CODE>gmake</CODE>
183program.
184
185<H3><A NAME="COMPILING">Compiling CUPS</A></H3>
186
187<P>CUPS uses GNU autoconf to configure the makefiles and source code
188for your system. Type the following command to configure CUPS for your
189system:
190
191<UL><PRE>
192<B>./configure ENTER</B>
193</PRE></UL>
194
195<P>The default installation will put the CUPS software in the
196<VAR>/etc</VAR>, <VAR>/usr</VAR>, and <VAR>/var</VAR> directories on
197your system, which will overwrite any existing printing commands on
198your system. Use the <CODE>--prefix</CODE> option to install the CUPS
199software in another location:
200
201<UL><PRE>
202<B>./configure --prefix=/some/directory ENTER</B>
203</PRE></UL>
204
205<P>If the PNG, JPEG, TIFF, and ZLIB libraries are not installed in a
206system default location (typically <VAR>/usr/include</VAR> and
207<VAR>/usr/lib</VAR>) you'll need to set the <CODE>CFLAGS</CODE>,
208<CODE>CXXFLAGS</CODE>, and <CODE>LDFLAGS</CODE> environment variables
209prior to running configure:
210
211<UL><PRE>
212<B>setenv CFLAGS "-I/some/directory" ENTER</B>
213<B>setenv CXXFLAGS "-I/some/directory" ENTER</B>
214<B>setenv LDFLAGS "-L/some/directory" ENTER</B>
215<B>setenv DSOFLAGS "-L/some/directory" ENTER</B>
216<B>./configure ... ENTER</B>
217</PRE></UL>
218
219<P>or:
220
221<UL><PRE>
222<B>CFLAGS="-I/some/directory"; export CFLAGS ENTER</B>
223<B>CXXFLAGS="-I/some/directory"; export CXXFLAGS ENTER</B>
224<B>LDFLAGS="-L/some/directory"; export LDFLAGS ENTER</B>
225<B>DSOFLAGS="-L/some/directory"; export DSOFLAGS ENTER</B>
226<B>./configure ... ENTER</B>
227</PRE></UL>
228
229<P>To enable support for encryption, you'll also want to add the
230"--enable-ssl" option:
231
232<UL><PRE>
233./configure --enable-ssl
234</PRE></UL>
235
236<P>SSL and TLS support require the OpenSSL library, available at:
237
238<UL><PRE>
239<A HREF="http://www.openssl.org">http://www.openssl.org</A>
240</PRE></UL>
241
242<P>If the OpenSSL headers and libraries are not installed in the
243standard directories, use the <CODE>--with-openssl-includes</CODE>
244and <CODE>--with-openssl-libs</CODE> options:</P>
245
246<UL><PRE>
247./configure --enable-ssl \
248 --with-openssl-includes=/foo/bar/include \
249 --with-openssl-libs=/foo/bar/lib
250</PRE></UL>
251
252<P>Once you have configured things, just type:
253
254<UL><PRE>
255<B>make ENTER</B>
256</PRE></UL>
257
258<P>to build the software.
259
260<!-- NEED 4in -->
261<H3><A NAME="INSTALLING">Installing the Software</A></H3>
262
263<P>Use the "install" target to install the software:
264
265<UL><PRE>
266<B>make install ENTER</B>
267</PRE></UL>
268
269<CENTER><TABLE WIDTH="80%" BORDER="1" BGCOLOR="#cccccc" CELLPADDING="5">
270<TR>
271 <TD>
272 <B>WARNING:</B>
273
274 <P>Installing CUPS will overwrite your existing printing
275 system. If you experience difficulties with the CUPS software
276 and need to go back to your old printing system, you will need
277 to reinstall the old printing system from your operating system CDs.
278 </TD>
279</TR>
280</TABLE></CENTER>
281
282<H3><A NAME="RUNNING">Running the Software</A></H3>
283
284<P>Once you have installed the software you can start the CUPS server by
285typing:
286
287<UL><PRE>
288<B>/usr/sbin/cupsd ENTER</B>
289</PRE></UL>
290
291<!-- NEED 4in -->
292<H2><A NAME="BINARY">Installing a Binary Distribution</A></H2>
293
294<P>CUPS comes in a variety of binary distribution formats. Easy
295Software Products provides binaries in TAR format with installation and
296removal scripts ("portable" distributions), and in RPM and DPKG formats
297for Red Hat and Debian-based distributions. Portable distributions are
298available for all platforms, while the RPM and DPKG distributions are
299only available for Linux.
300
301<CENTER><TABLE WIDTH="80%" BORDER="1" BGCOLOR="#cccccc" CELLPADDING="5">
302<TR>
303 <TD>
304 <B>WARNING:</B>
305
306 <P>Installing CUPS will overwrite your existing printing
307 system. If you experience difficulties with the CUPS software
308 and need to go back to your old printing system, you will need
309 to remove the CUPS software with the provided script and/or
310 reinstall the old printing system from your operating system CDs.
311 </TD>
312</TR>
313</TABLE></CENTER>
314
315
316<H3><A NAME="PORTABLE-BINARY">Installing a Portable Distribution</A></H3>
317
318<P>To install the CUPS software from a portable distribution you will
319need to be logged in as root; doing an <CODE>su</CODE> is good enough.
320Once you are the root user, run the installation script with:
321
322<UL><PRE>
323<B>./cups.install ENTER</B>
324</PRE></UL>
325
326<P>After asking you a few yes/no questions the CUPS software will be
327installed and the scheduler will be started automatically.
328
329<!-- NEED 2in -->
330<H3><A NAME="RPM-BINARY">Installing an RPM Distribution</A></H3>
331
332<P>To install the CUPS software from an RPM distribution you will need
333to be logged in as root; doing an <CODE>su</CODE> is good enough. Once
334you are the root user, run RPM with:
335
336<UL><PRE>
337<B>rpm -e lpr</B>
338<B>rpm -i cups-1.1-linux-M.m.n-intel.rpm ENTER</B>
339</PRE></UL>
340
341<P>After a short delay the CUPS software will be
342installed and the scheduler will be started automatically.
343
344<H3><A NAME="DPKG-BINARY">Installing an Debian Distribution</A></H3>
345
346<P>To install the CUPS software from a Debian distribution you will
347need to be logged in as root; doing an <CODE>su</CODE> is good enough.
348Once you are the root user, run dpkg with:
349
350<UL><PRE>
351<B>dpkg -i cups-1.1-linux-M.m.n-intel.deb ENTER</B>
352</PRE></UL>
353
354<P>After a short delay the CUPS software will be installed and the
355scheduler will be started automatically.
356
357
358<H1 ALIGN="RIGHT"><A NAME="MANAGING_PRINTERS">3 - Managing Printers</A></H1>
359
360<P>This chapter describes how to add your first printer and how to
361manage your printers.
362
363<H2>The Basics</H2>
364
365<P>Each printer queue has a name associated with it; the printer name
366must start with a letter and can contain up to 127 letters, numbers,
367and the underscore (_). Case is not significant, e.g. "PRINTER", "Printer",
368and "printer" are considered to be the same name.
369
370<P>Printer queues also have a device associated with them. The device can be
371a parallel port, a network interface, and so forth. Devices within CUPS use
372Uniform Resource Identifiers ("URIs") which are a more general form of
373Uniform Resource Locators ("URLs") that are used in your web browser. For
374example, the first parallel port in Linux usually uses a device URI of
375<CODE>parallel:/dev/lp1</CODE>.
376
377<!-- NEED 2.5in -->
378<P>You can see a complete list of supported devices by running the
379<CODE>lpinfo(8)</CODE> command:
380
381<UL><PRE>
382<B>lpinfo -v ENTER</B>
383network socket
384network http
385network ipp
386network lpd
387direct parallel:/dev/lp1
388serial serial:/dev/ttyS1?baud=115200
389serial serial:/dev/ttyS2?baud=115200
390direct usb:/dev/usb/lp0
391network smb
392</PRE></UL>
393
394<P>The <CODE>-v</CODE> option specifies that you want a list of available
395devices. The first word in each line is the type of device (direct, file,
396network, or serial) and is followed by the device URI or method name for
397that device. File devices have device URIs of the form
398<CODE>file:/directory/filename</CODE> while network devices use the more
399familiar <CODE>method://server</CODE> or <CODE>method://server/path</CODE>
400format.
401
402<P>Finally, printer queues usually have a PostScript Printer Description
403("PPD") file associated with them. PPD files describe the capabilities of
404each printer, the page sizes supported, etc., and are used for PostScript
405and non-PostScript printers. CUPS includes PPD files for HP LaserJet, HP
406DeskJet, EPSON 9-pin, EPSON 24-pin, and EPSON Stylus printers.
407
408<H2>Adding Your First Printer</H2>
409
410<P>CUPS provides two methods for adding printers: a command-line
411program called <CODE>lpadmin(8)</CODE> and a Web interface. The
412<CODE>lpadmin</CODE> command allows you to perform most printer
413administration tasks from the command-line and is located in
414<VAR>/usr/sbin</VAR>. The Web interface is located at:
415
416<UL><PRE>
417<A HREF="http://localhost:631/admin">http://localhost:631/admin</A>
418</PRE></UL>
419
420<P>and steps you through printer configuration. If you don't like
421command-line interfaces, try the <A HREF="#ADD_WEB">Web interface</A> instead.
422
423<H3>Adding Your First Printer from the Command-Line</H3>
424
425<P>Run the <CODE>lpadmin</CODE> command with the <CODE>-p</CODE> option to add a
426printer to CUPS:
427
428<UL><PRE>
429<B>/usr/sbin/lpadmin -p <I>printer</I> -E -v <I>device</I> -m <I>ppd</I> ENTER</B>
430</PRE></UL>
431
432<P>For a HP DeskJet printer connected to the parallel port this would look
433like:
434
435<UL><PRE>
436<B>/usr/sbin/lpadmin -p DeskJet -E -v parallel:/dev/lp1 -m deskjet.ppd ENTER</B>
437</PRE></UL>
438
439<P>Similarly, a HP LaserJet printer using a JetDirect network interface at
440IP address 11.22.33.44 would be added with the command:
441
442<UL><PRE>
443<B>/usr/sbin/lpadmin -p LaserJet -E -v socket://11.22.33.44 -m laserjet.ppd ENTER</B>
444</PRE></UL>
445
446<P>As you can see, <CODE>deskjet.ppd</CODE> and <CODE>laserjet.ppd</CODE> are
447the PPD files for the HP DeskJet and HP LaserJet drivers included with CUPS.
448You'll find a complete list of PPD files and the printers they will work with
449in <A HREF="#PRINTER_DRIVERS">Appendix C, "Printer Drivers"</A>.
450
451
452<P>For a dot matrix printer connected to the serial port this would might look like:
453
454<UL><PRE>
455<B>/usr/sbin/lpadmin -p DotMatrix -E -v serial:/dev/ttyS0?baud=9600+size=8+parity=none+flow=soft deskjet.ppd ENTER</B>
456</PRE></UL>
457
458<P>Here you specify the serial port (e.g. S0,S1, d0, d1), baud rate
459(e.g. 9600, 19200, 38400, 115200, etc.), number of bits, parity, and flow control.
460If you do not need flow control, delete the "+flow=soft" portion.
461
462
463<H3><A NAME="ADD_WEB">Adding Your First Printer from the Web</A></H3>
464
465<P>The CUPS web server provides a user-friendly "wizard" interface for
466adding your printers. Rather than figuring out which device URI and PPD file
467to use, you can instead click on the appropriate listings and fill in some
468simple information. Enter the following URL in your web browser to begin:
469
470<UL><PRE>
471<A HREF="http://localhost:631/admin">http://localhost:631/admin</A>
472</PRE></UL>
473
474<P>Click on the <VAR>Add Printer</VAR> button to add a printer.
475
476<H2>Managing Printers from the Command-Line</H2>
477
478<P>The <CODE>lpadmin</CODE> command enables you to perform most printer
479administration tasks from the command-line. You'll find <CODE>lpadmin</CODE>
480in the <VAR>/usr/sbin</VAR> directory.
481
482<H3>Adding and Modifying Printers</H3>
483
484<P>Run the <CODE>lpadmin</CODE> command with the <CODE>-p</CODE> option
485to add or modify a printer:
486
487<UL><PRE>
488<B>/usr/sbin/lpadmin -p <I>printer</I> <I>options</I> ENTER</B>
489</PRE></UL>
490
491<P>The <I>options</I> arguments can be any of the following:
492
493<UL>
494<DL>
495
496 <DT>-c <I>class</I>
497
498 <DD>Adds the named printer to printer class <VAR>class</VAR>.
499 If the class does not exist then it is created.
500
501 <DT>-i <I>interface</I>
502
503 <DD>Copies the named <VAR>interface</VAR> script to the printer.
504 Interface scripts are used by System V printer drivers. Since
505 all filtering is disabled when using an interface script, scripts
506 generally should not be used unless there is no other driver for
507 a printer.
508
509 <DT>-m <I>model</I>
510
511 <DD>Specifies a standard printer driver which is usually a PPD
512 file. A list of all available models can be displayed using the
513 <CODE>lpinfo</CODE> command with the <CODE>-m</CODE> option. A
514 list of printer drivers included with CUPS can be found in
515 <A HREF="#PRINTER_DRIVERS">Appendix C, "Printer Drivers"</A>.
516
517 <DT>-r <I>class</I>
518
519 <DD>Removes the named printer from printer class <VAR>class</VAR>.
520 If the resulting class becomes empty then it is removed.
521
522 <DT>-v <I>device-uri</I>
523
524 <DD>Sets the device for communicating with the printer. If a
525 job is currently printing on the named printer then the job
526 will be restarted and sent to the new device.
527
528 <DT>-D <I>info</I>
529
530 <DD>Provides a textual description of the printer, e.g.
531 "John's Personal Printer".
532
533 <DT>-E
534
535 <DD>Enables the printer and accepts job. This option is
536 equivalent to running the <CODE>enable(1)</CODE> and
537 <CODE>accept(8)</CODE> commands on the printer.
538
539 <DT>-L <I>location</I>
540
541 <DD>Provides a textual location for the printer, e.g.
542 "Computer Lab 5".
543
544 <DT>-P <I>ppd-file</I>
545
546 <DD>Specifies a local PPD file for the printer driver.
547
548</DL>
549</UL>
550
551<H3>Deleting Printers</H3>
552
553<P>Run the <CODE>lpadmin</CODE> command with the <CODE>-x</CODE> option
554to delete a printer:
555
556<UL><PRE>
557<B>/usr/sbin/lpadmin -x <I>printer</I> ENTER</B>
558</PRE></UL>
559
560<H3>Setting the Default Printer</H3>
561
562<P>Run the <CODE>lpadmin</CODE> command with the <CODE>-d</CODE> option
563to set a default printer:
564
565<UL><PRE>
566<B>/usr/sbin/lpadmin -d <I>printer</I> ENTER</B>
567</PRE></UL>
568
569<P>The default printer can be overridden by the user using the
570<CODE>lpoptions(1)</CODE> command.
571
572<H3>Starting and Stopping Printers</H3>
573
574<P>The <CODE>enable</CODE> and <CODE>disable</CODE> commands start and stop
575printer queues, respectively:
576
577<UL><PRE>
578<B>/usr/bin/enable <I>printer</I> ENTER</B>
579<B>/usr/bin/disable <I>printer</I> ENTER</B>
580</PRE></UL>
581
582<P>Printers that are disabled may still accept jobs for printing, but won't
583actually print any files until they are restarted. This is useful if the
584printer malfunctions and you need time to correct the problem. Any queued
585jobs are printed after the printer is enabled (started).
586
587<H3>Accepting and Rejecting Print Jobs</H3>
588
589<P>The <CODE>accept</CODE> and <CODE>reject</CODE> commands accept and reject
590print jobs for the named printer, respectively:
591
592<UL><PRE>
593<B>/usr/sbin/accept <I>printer</I> ENTER</B>
594<B>/usr/sbin/reject <I>printer</I> ENTER</B>
595</PRE></UL>
596
597<P>As noted above, a printer can be stopped but accepting new print
598jobs. A printer can also be rejecting new print jobs while it finishes
599those that have been queued. This is useful for when you must perform
600maintenance on the printer and will not have it available to users for
601a long period of time.
602
603<H3>Setting Quotas on a Printer</H3>
604
605<P>CUPS supports page and size-based quotas for each printer.
606The quotas are tracked individually for each user, but a single set of
607limits applies to all users for a partiuclar printer. For example, you
608can limit every user to 5 pages per day on an expensive printer, but
609you cannot limit every user except Johnny.</P>
610
611<P>The <I>job-k-limit</I>, <I>job-page-limit</I>, and <I>job-quota-peiod</I>
612options determine whether and how quotas are enforced for a printer.
613The <I>job-quota-period</I> option determines the time interval for
614quota tracking. The interval is expressed in seconds, so a day is
61586,400, a week is 604,800 and a month is 2,592,000 seconds. The
616<I>job-k-limit</I> option specifies the job size limit in killobytes. The
617<I>job-page-limit</I> option specifies the number of pages limit.</P>
618
619<P>For quotas to be enforced, the period and at least one of the limits
620must be set to a non-zero value. The following options will enable
621quotas:</P>
622
623<UL>
624<PRE>
625<B>/usr/sbin/lpadmin -p <I>printer</I> -o job-quota-period=604800 -o job-k-limit=1024 <I>ENTER</I></B>
626<B>/usr/sbin/lpadmin -p <I>printer</I> -o job-quota-period=604800 -o job-page-limit=100 <I>ENTER</I></B>
627</PRE>
628</UL>
629
630<P>Or, you can combine all three options on the same line.</P>
631
632<H3>Restricting User Access to a Printer</H3>
633
634<P>The <CODE>-u</CODE> option of the <CODE>lpadmin</CODE> command controls which users can
635print to a printer. The default configuration allows all users to print
636to a printer:</P>
637
638<UL>
639<PRE>
640<B>/usr/sbin/lpadmin -p <I>printer</I> -u allow:all <I>ENTER</I></B>
641</PRE>
642</UL>
643
644<P>CUPS supports allow and deny lists so that you can specify a
645list of users who are allowed to print or not allowed to print. Along
646with your list of users, you can specify whether they are allowed or
647not allowed to use the printer:</P>
648
649<UL>
650<PRE>
651<B>/usr/sbin/lpadmin -p <I>printer</I> -u allow:peter,paul,mary <I>ENTER</I></B>
652</PRE>
653</UL>
654
655<P>This command allows peter, paul, and mary to print to the named
656printer, but all other users cannot print. The command:</P>
657
658<UL>
659<PRE>
660<B>/usr/sbin/lpadmin -p <I>printer</I> -u deny:peter,paul,mary <I>ENTER</I></B>
661</PRE>
662</UL>
663
664<P>has the opposite effect. All users except peter, paul, and mary will
665be able to print to the named printer.</P>
666
667<P>You can control access by UNIX groups as well by placing an
668"@" character before each group name. The command:</P>
669
670<UL>
671<PRE>
672<B>/usr/sbin/lpadmin -p <I>printer</I> -u allow:peter,paul,mary,@printgods <I>ENTER</I></B>
673</PRE>
674</UL>
675
676<P>allows the users peter, paul, and mary to print, as well as
677any user in the printgods group to print.
678
679<CENTER>
680<TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
681<TR>
682 <TD><B>NOTE:</B>
683
684 <P>The <I>allow</I> and <I>deny</I> options are not cummulative. That
685 is, you must provide the complete list of users to allow or deny each
686 time.</P>
687
688 <P>Also, CUPS only maintains one list of users - the list can
689 allow or deny users from printing. If you specify an allow list and
690 then specify a deny list, the deny list will replace the allow list -
691 only one list is active at any time.</P>
692
693 </TD>
694</TR>
695</TABLE>
696</CENTER>
697
698<H2>Managing Printers from the Web</H2>
699
700<P>The Web interface is located at:
701
702<UL><PRE>
703<A HREF="http://localhost:631/admin">http://localhost:631/admin</A>
704</PRE></UL>
705
706<P>From there you can perform all printer management tasks with a few
707simple mouse clicks.
708
709
710<H1 ALIGN="RIGHT"><A NAME="PRINTER_CLASSES">4 - Printer Classes</A></H1>
711
712<P>This chapter describes what printer classes are and how to manage them.
713
714<H2>The Basics</H2>
715
716<P>CUPS provides collections of printers called <I>printer classes</I>. Jobs
717sent to a class are forwarded to the first available printer in the class.
718Classes can themselves be members of other classes, so it is possible for
719you to define very large, distributed printer classes for high-availability
720printing.
721
722<P>CUPS also supports <I>implicit classes</I>. Implicit classes work just
723like printer classes, but they are created automatically based upon the
724available printers and classes on the network. This allows you to setup
725multiple print servers with identical printer configurations and have the
726client machines send their print jobs to the first available server. If
727one or more servers go down, the jobs are automatically redirected to the
728servers that are running, providing fail-safe printing.
729
730<H2>Managing Printer Classes from the Command-Line</H2>
731
732<P>Run the <CODE>lpadmin</CODE> command with the <CODE>-p</CODE> and <CODE>-c</CODE> options
733to add a printer to a class:
734
735<UL><PRE>
736<B>/usr/sbin/lpadmin -p <I>printer</I> -c <I>class</I> ENTER</B>
737</PRE></UL>
738
739<P>The <I>class</I> is created automatically if it doesn't exist. To remove a
740printer from a class use the <CODE>-r</CODE> option:
741
742<UL><PRE>
743<B>/usr/sbin/lpadmin -p <I>printer</I> -r <I>class</I> ENTER</B>
744</PRE></UL>
745
746<P>To remove the entire class just use the <CODE>-x</CODE> option:
747
748<UL><PRE>
749<B>/usr/sbin/lpadmin -x <I>class</I> ENTER</B>
750</PRE></UL>
751
752<H2>Managing Printer Classes from the Web Interface</H2>
753
754<P>The Web interface is located at:
755
756<UL><PRE>
757<A HREF="http://localhost:631/admin">http://localhost:631/admin</A>
758</PRE></UL>
759
760<P>The <VAR>Add Class</VAR> and <VAR>Modify Class</VAR> interfaces provide a
761list of available printers; click on the printers of interest to add them to
762the class.
763
764<H2>Implicit Classes</H2>
765
766<P>A noted earlier, implicit classes are created automatically from the
767available network printers and classes. To disable this functionality,
768set the <A HREF="#ImplicitClasses"><CODE>ImplicitClasses</CODE></A>
769directive to <CODE>Off</CODE> in the <CODE>cupsd.conf</CODE> file. You
770will find more information on doing this in
771<A HREF="#PRINTING_MANAGEMENT">Chapter 6, "Printing System
772Management"</A>.
773
774
775<H1 ALIGN="RIGHT"><A NAME="CLIENT_SETUP">5 - Client Setup</A></H1>
776
777<P>This chapter discusses several ways to configure CUPS clients for
778printing.
779
780<H2>The Basics</H2>
781
782<P>A client is any machine that sends print jobs to another machine for
783final printing. Clients can also be servers if they communicate directly with
784any printers of their own.
785
786<P>CUPS supports several methods of configuring client machines:
787
788<UL>
789 <LI><A HREF="#CLIENT_MANUAL">Manual configuration of print queues.</A>
790 <LI><A HREF="#CLIENT_SERVER">Specifying a single server for printing.</A>
791 <LI><A HREF="#CLIENT_AUTO">Automatic configuration of print queues.</A>
792 <LI><A HREF="#CLIENT_POLL">Specifying multiple servers for printing.</A>
793 <LI><A HREF="#CLIENT_RELAY">Relaying printers to other clients.</A>
794</UL>
795
796<H3><A NAME="CLIENT_MANUAL">Manual Configuration of Print Queues</A></H3>
797
798<P>The most tedious method of configuring client machines is to configure
799each remote queue by hand using the <CODE>lpadmin</CODE> command:
800
801<UL><PRE>
802<B>lpadmin -p <I>printer</I> -E -v ipp://<I>server</I>/printers/<I>printer</I> ENTER</B>
803</PRE></UL>
804
805<P>The <CODE>printer</CODE> name is the name of the printer on the server
806machine. The <CODE>server</CODE> name is the hostname or IP address of the
807server machine. Repeat the <CODE>lpadmin</CODE> command for each remote
808printer you wish to use.</P>
809
810<CENTER>
811<TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
812 <TR>
813 <TD><B> NOTE:</B>
814 <P>Manual configuration of print queues is not recommended for large
815 numbers of client machines because of the administration nightmare it
816 creates. For busy networks, consider subnetting groups of clients and
817 polling and relaying printer information instead.</P>
818 </TD>
819 </TR>
820</TABLE>
821</CENTER>
822
823<H3><A NAME="CLIENT_SERVER">Specifying a Single Server for Printing</A></H3>
824
825<P>CUPS can be configured to run without a local spooler and send all
826jobs to a single server. However, if that server goes down then all
827printing will be disabled. Use this configuration only as absolutely needed.
828
829<P>The default server is normally "localhost". To override the default
830server create a file named <VAR>/etc/cups/client.conf</VAR> and add
831a line reading:
832
833<UL><PRE>
834ServerName <I>server</I>
835</PRE></UL>
836
837<P>to the file. The <VAR>server</VAR> name can be the hostname or IP address
838of the default server.
839
840<P>The default server can also be customized on a per-user basis. To set a
841user-specific server create a file named <VAR>~/.cupsrc</VAR> and add a line
842reading:
843
844<UL><PRE>
845ServerName <I>server</I>
846</PRE></UL>
847
848<P>to the file. The <VAR>server</VAR> name can be the hostname or IP
849address of the default server.
850
851<H3><A NAME="CLIENT_AUTO">Automatic Configuration of Print Queues</A></H3>
852
853<P>CUPS supports automatic client configuration of printers on the same
854subnet. To configure printers on the same subnet, <I>do nothing</I>.
855Each client should see the available printers within 30 seconds
856automatically. The printer and class lists are updated automatically as
857printers and servers are added or removed.
858
859<P>If you want to see printers on other subnets as well, use the
860<A HREF="#BrowsePoll"><CODE>BrowsePoll</CODE></A>
861directive as described next.</P>
862
863<CENTER>
864<TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
865 <TR>
866 <TD><B> NOTE:</B>
867 <P>The<A HREF="#BrowseAddress"> <CODE>BrowseAddress</CODE></A> directive
868 enables broadcast traffic from your server. The default configuration
869 braodcasts printer information every 30 seconds. Although this printer
870 information does not use much bandwidth, typically about 80 bytes per
871 printer, it can add up with large numbers of servers and printers.</P>
872 <P>Use the <A HREF="#BrowseInterval"><CODE>BrowseInterval</CODE></A>
873 and <A HREF="#BrowseTimeout"><CODE>BrowseTimeout</CODE></A> directives to tune
874 the amount of data that is added to your network load. In addition,
875 subnets can be used to minimize the amount of traffic that is carried
876 by the &quot;backbone&quot; of your large network.</P>
877 </TD>
878 </TR>
879</TABLE>
880</CENTER>
881
882<H3><A NAME="CLIENT_POLL">Specifying Multiple Servers for Printing</A></H3>
883
884<P>If you have CUPS servers on different subnets, then you should configure
885CUPS to poll those servers. Polling provides the benefits of automatic
886configuration without significant configuration on the clients, and multiple
887clients on the same subnet can share the same configuration information.
888
889<P>Polling is enabled by specifying one or more
890<A HREF="#BrowsePoll"><CODE>BrowsePoll</CODE></A>
891directives in the <VAR>/etc/cups/cupsd.conf</VAR> file.
892For information on making these changes, see
893<A HREF="#PRINTING_MANAGEMENT">Chapter 6, "Printing System Management"</A>.
894
895<P>Multiple <A HREF="#BrowsePoll"><CODE>BrowsePoll</CODE></A> lines can
896be used to poll multiple CUPS servers. To limit the amount of
897polling you do from client machines, you can have only one of the
898clients do the polling and relay that information to the others on the
899same subnet (described next).</P>
900
901<H3><A NAME="CLIENT_RELAY">Relaying Printers to Other Clients</A></H3>
902
903<P>When you have clients and servers spread across multiple subnets, the
904polling method is inefficient. CUPS provides a
905<A HREF="#BrowseRelay"><CODE>BrowseRelay</CODE></A> directive that enables a
906single client to relay (broadcast) the polled printer information to the local subnet.</P>
907
908<P>For example, Server A and Server B are on subnet 1 and subnet 2,
909while the clients are on subnet 3.
910To provide printers to all of the clients in subnet 3,
911client C will be configured with the following directives in <VAR>/etc/cups/cupsd.conf</VAR>:</P>
912
913<UL><PRE>
914# Poll the two servers
915<B>
916BrowsePoll ServerA ENTER
917BrowsePoll ServerB ENTER
918</B>
919
920# Relay the printers to the local subnet
921<B>
922BrowseRelay 127.0.0.1 192.168.3.255 ENTER
923</B></PRE></UL>
924
925<P>The <A HREF="#BrowseRelay"><CODE>BrowseRelay</CODE></A> line specifies a source address and mask.
926Any browse packets coming from a matching address wil be sent to the given broadcast address.
927In this case, we want the packets from the local machine (127.0.0.1) relayed to the other clients.</P>
928
929<P>As printers are found using polling,
930they are relayed from client C to the rest of the clients through a broadcast on subnet 3.
931The rest of the clients can use the standard <VAR>cupsd.conf</VAR> configuration.</P>
932
933<P>The <A HREF="#BrowseRelay"><CODE>BrowseRelay</CODE></A> directive can also be used to relay
934browsing packets from one network interface to another.
935For example, if client C in the previous example had network interfaces attaches to both
936subnet 1 and subnet 2, it could use the <A HREF="#BrowseRelay"><CODE>BrowseRelay</CODE></A> directive exclusively:
937
938<UL><PRE>
939# Relay the printers from subnet 1 and 2 to subnet 3
940<B>
941BrowseRelay 192.168.1 192.168.3.255 ENTER
942BrowseRelay 192.168.2 192.168.3.255 ENTER
943</B></PRE></UL>
944
945<H2>Load Balancing and Failsafe Operation</H2>
946
947<P>When using server polling or broadcasting, CUPS clients can
948automatically merge identical printers on multiple servers into a
949single <I>implicit class</I> queue. Clients assume that printers with
950the same name on multiple servers are in fact the same printer or type
951of printer being served by multiple machines.</P>
952
953<P>If you have two printers, LaserJet@ServerA and LaserJet@ServerB, a
954third implicit class called <I>LaserJet</I> will be created
955automatically on the client that refers to both printers. If the client
956also has a local printer with the name LaserJet then an implicit class
957named <I>AnyLaserJet</I> will be created instead.</P>
958
959<P>The client will alternate between servers and automatically stop
960sending jobs to a server if it goes down, providing a load-balancing
961effect and fail-safe operation with automatic switchover.</P>
962
963<CENTER><TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
964 <TR>
965 <TD><B> NOTE:</B>
966 <P>Note that implicit classes (<A HREF="#ImplicitClasses"><CODE>ImplicitClasses</CODE></A>)
967 are enabled by default.</P>
968 </TD>
969 </TR>
970</TABLE></CENTER>
971
972<H1 ALIGN="RIGHT"><A NAME="PRINTING_MANAGEMENT">6 - Printing System Management</A></H1>
973
974<P>This chapter shows how you can configure the CUPS server.
975
976<H2>The Basics</H2>
977
978<P>Several text files are used to configure CUPS. All of the server
979configuration files are located in the <VAR>/etc/cups</VAR> directory:
980
981<UL>
982<DL>
983
984 <!-- NEED 1in -->
985 <DT>classes.conf
986
987 <DD>This file contains information on each printer class.
988 Normally you manipulate this file using the
989 <CODE>lpadmin</CODE> command or the Web interface.<BR>&nbsp;
990
991 <!-- NEED 1in -->
992 <DT>client.conf
993
994 <DD>This file provides the default server name for client
995 machines. See <A HREF="#CLIENT_SETUP">Chapter 5, "Client
996 Setup"</A> for more information.<BR>&nbsp;
997
998 <!-- NEED 1in -->
999 <DT>cupsd.conf
1000
1001 <DD>This file controls how the CUPS server
1002 (<VAR>/usr/sbin/cupsd</VAR>) operates and is normally edited by
1003 hand.<BR>&nbsp;
1004
1005 <!-- NEED 1in -->
1006 <DT>mime.convs
1007
1008 <DD>This file contains a list of standard file conversion filters
1009 and their costs. You normally do not edit this file.<BR>&nbsp;
1010
1011 <!-- NEED 1in -->
1012 <DT>mime.types
1013
1014 <DD>This file contains a list of standard file formats and how to
1015 recognize them. You normally do not edit this file.<BR>&nbsp;
1016
1017 <!-- NEED 1in -->
1018 <DT>printers.conf
1019
1020 <DD>This file contains information on each printer. Normally
1021 you manipulate this file using the <CODE>lpadmin</CODE> command
1022 or the Web Interface.<BR>&nbsp;
1023
1024</DL>
1025</UL>
1026
1027<H2><A NAME="RESTARTING">Restarting the CUPS Server</A></H2>
1028
1029<P>Once you have made a change to a configuration file you need to
1030restart the CUPS server by sending it a <CODE>HUP</CODE> signal or using the
1031supplied initialization script. The CUPS distributions install the
1032script in the <VAR>init.d</VAR> directory with the name
1033<VAR>cups</VAR>. The location varies based upon the operating system:
1034
1035<UL><PRE>
1036<B>/etc/software/init.d/cups restart ENTER</B>
1037<B>/etc/rc.d/init.d/cups restart ENTER</B>
1038<B>/etc/init.d/cups restart ENTER</B>
1039<B>/sbin/init.d/cups restart ENTER</B>
1040</PRE></UL>
1041
1042<H2>Changing the Server Configuration</H2>
1043
1044<P>The <VAR>/etc/cups/cupsd.conf</VAR> file contains configuration
1045<I>directives</I> that control how the server functions. Each directive
1046is listed on a line by itself followed by its value. Comments are
1047introduced using the number sign ("#") character at the beginning of a
1048line. Since the server configuration file consists of plain text, you
1049can use your favorite text editor to make changes to it.
1050
1051<!-- NEED 4in -->
1052<H2>Server Directives</H2>
1053
1054<P>The <VAR>cupsd.conf</VAR> file contains many directives that
1055determine how the server operates:
1056
1057<UL>
1058<TABLE CELLPADDING="0" CELLSPACING="0" BORDER="0">
1059<TR>
1060<TD VALIGN="TOP">
1061
1062 <LI><A HREF="#AccessLog"><CODE>AccessLog</CODE></A>
1063 <LI><A HREF="#Allow"><CODE>Allow</CODE></A>
1064 <LI><A HREF="#AuthClass"><CODE>AuthClass</CODE></A>
1065 <LI><A HREF="#AuthGroupName"><CODE>AuthGroupName</CODE></A>
1066 <LI><A HREF="#AuthType"><CODE>AuthType</CODE></A>
1067 <LI><A HREF="#AutoPurgeJobs"><CODE>AutoPurgeJobs</CODE></A>
1068 <LI><A HREF="#BrowseAddress"><CODE>BrowseAddress</CODE></A>
1069 <LI><A HREF="#BrowseAllow"><CODE>BrowseAllow</CODE></A>
1070 <LI><A HREF="#BrowseDeny"><CODE>BrowseDeny</CODE></A>
1071 <LI><A HREF="#BrowseInterval"><CODE>BrowseInterval</CODE></A>
1072 <LI><A HREF="#BrowseOrder"><CODE>BrowseOrder</CODE></A>
1073 <LI><A HREF="#BrowsePoll"><CODE>BrowsePoll</CODE></A>
1074 <LI><A HREF="#BrowsePort"><CODE>BrowsePort</CODE></A>
1075 <LI><A HREF="#BrowseProtocols"><CODE>BrowseProtocols</CODE></A>
1076 <LI><A HREF="#BrowseRelay"><CODE>BrowseRelay</CODE></A>
1077 <LI><A HREF="#BrowseShortNames"><CODE>BrowseShortNames</CODE></A>
1078 <LI><A HREF="#BrowseTimeout"><CODE>BrowseTimeout</CODE></A>
1079 <LI><A HREF="#Browsing"><CODE>Browsing</CODE></A>
1080 <LI><A HREF="#Classification"><CODE>Classification</CODE></A>
1081 <LI><A HREF="#ClassifyOverride"><CODE>ClassifyOverride</CODE></A>
1082 <LI><A HREF="#ConfigFilePerm"><CODE>ConfigFilePerm</CODE></A>
1083 <LI><A HREF="#DataDir"><CODE>DataDir</CODE></A>
1084 <LI><A HREF="#DefaultCharset"><CODE>DefaultCharset</CODE></A>
1085 <LI><A HREF="#DefaultLanguage"><CODE>DefaultLanguage</CODE></A>
1086 <LI><A HREF="#Deny"><CODE>Deny</CODE></A>
1087 <LI><A HREF="#DocumentRoot"><CODE>DocumentRoot</CODE></A>
1088 <LI><A HREF="#Encryption"><CODE>Encryption</CODE></A>
1089
1090</TD>
1091<TD VALIGN="TOP">
1092&nbsp;&nbsp;&nbsp;
1093</TD>
1094<TD VALIGN="TOP">
1095
1096 <LI><A HREF="#ErrorLog"><CODE>ErrorLog</CODE></A>
1097 <LI><A HREF="#FilterLimit"><CODE>FilterLimit</CODE></A>
1098 <LI><A HREF="#FilterNice"><CODE>FilterNice</CODE></A>
1099 <LI><A HREF="#FontPath"><CODE>FontPath</CODE></A>
1100 <LI><A HREF="#Group"><CODE>Group</CODE></A>
1101 <LI><A HREF="#HideImplicitMembers"><CODE>HideImplicitMembers</CODE></A>
1102 <LI><A HREF="#HostNameLookups"><CODE>HostNameLookups</CODE></A>
1103 <LI><A HREF="#ImplicitClasses"><CODE>ImplicitClasses</CODE></A>
1104 <LI><A HREF="#ImplicitAnyClasses"><CODE>ImplicitAnyClasses</CODE></A>
1105 <LI><A HREF="#Include"><CODE>Include</CODE></A>
1106 <LI><A HREF="#KeepAliveTimeout"><CODE>KeepAliveTimeout</CODE></A>
1107 <LI><A HREF="#KeepAlive"><CODE>KeepAlive</CODE></A>
1108 <LI><A HREF="#Limit"><CODE>Limit</CODE></A>
1109 <LI><A HREF="#LimitExcept"><CODE>LimitExcept</CODE></A>
1110 <LI><A HREF="#LimitRequestBody"><CODE>LimitRequestBody</CODE></A>
1111 <LI><A HREF="#Listen"><CODE>Listen</CODE></A>
1112 <LI><A HREF="#Location"><CODE>Location</CODE></A>
1113 <LI><A HREF="#LogFilePerm"><CODE>LogFilePerm</CODE></A>
1114 <LI><A HREF="#LogLevel"><CODE>LogLevel</CODE></A>
1115 <LI><A HREF="#MaxClients"><CODE>MaxClients</CODE></A>
1116 <LI><A HREF="#MaxCopies"><CODE>MaxCopies</CODE></A>
1117 <LI><A HREF="#MaxJobs"><CODE>MaxJobs</CODE></A>
1118 <LI><A HREF="#MaxJobsPerPrinter"><CODE>MaxJobsPerPrinter</CODE></A>
1119 <LI><A HREF="#MaxJobsPerUser"><CODE>MaxJobsPerUser</CODE></A>
1120 <LI><A HREF="#MaxLogSize"><CODE>MaxLogSize</CODE></A>
1121 <LI><A HREF="#MaxRequestSize"><CODE>MaxRequestSize</CODE></A>
1122 <LI><A HREF="#Order"><CODE>Order</CODE></A>
1123 <LI><A HREF="#PageLog"><CODE>PageLog</CODE></A>
1124
1125</TD>
1126<TD VALIGN="TOP">
1127&nbsp;&nbsp;&nbsp;
1128</TD>
1129<TD VALIGN="TOP">
1130
1131 <LI><A HREF="#Port"><CODE>Port</CODE></A>
1132 <LI><A HREF="#PreserveJobFiles"><CODE>PreserveJobFiles</CODE></A>
1133 <LI><A HREF="#PreserveJobHistory"><CODE>PreserveJobHistory</CODE></A>
1134 <LI><A HREF="#Printcap"><CODE>Printcap</CODE></A>
1135 <LI><A HREF="#PrintcapFormat"><CODE>PrintcapFormat</CODE></A>
1136 <LI><A HREF="#PrintcapGUI"><CODE>PrintcapGUI</CODE></A>
1137 <LI><A HREF="#RemoteRoot"><CODE>RemoteRoot</CODE></A>
1138 <LI><A HREF="#RequestRoot"><CODE>RequestRoot</CODE></A>
1139 <LI><A HREF="#Require"><CODE>Require</CODE></A>
1140 <LI><A HREF="#RIPCache"><CODE>RIPCache</CODE></A>
1141 <LI><A HREF="#RootCertDuration"><CODE>RootCertDuration</CODE></A>
1142 <LI><A HREF="#RunAsUser"><CODE>RunAsUser</CODE></A>
1143 <LI><A HREF="#Satisfy"><CODE>Satisfy</CODE></A>
1144 <LI><A HREF="#ServerAdmin"><CODE>ServerAdmin</CODE></A>
1145 <LI><A HREF="#ServerBin"><CODE>ServerBin</CODE></A>
1146 <LI><A HREF="#ServerCertificate"><CODE>ServerCertificate</CODE></A>
1147 <LI><A HREF="#ServerKey"><CODE>ServerKey</CODE></A>
1148 <LI><A HREF="#ServerName"><CODE>ServerName</CODE></A>
1149 <LI><A HREF="#ServerRoot"><CODE>ServerRoot</CODE></A>
1150 <LI><A HREF="#ServerTokens"><CODE>ServerTokens</CODE></A>
1151 <LI><A HREF="#SSLListen"><CODE>SSLListen</CODE></A>
1152 <LI><A HREF="#SSLPort"><CODE>SSLPort</CODE></A>
1153 <LI><A HREF="#SystemGroup"><CODE>SystemGroup</CODE></A>
1154 <LI><A HREF="#TempDir"><CODE>TempDir</CODE></A>
1155 <LI><A HREF="#Timeout"><CODE>Timeout</CODE></A>
1156 <LI><A HREF="#User"><CODE>User</CODE></A>
1157
1158</TD>
1159</TR>
1160</TABLE>
1161</UL>
1162
1163<!-- NEED 3in -->
1164<H3><A NAME="AccessLog">AccessLog</A></H3>
1165<HR>
1166
1167<H4>Examples</H4>
1168
1169<UL><PRE>
1170AccessLog /var/log/cups/access_log
1171AccessLog /var/log/cups/access_log-%s
1172AccessLog syslog
1173</PRE></UL>
1174
1175<H4>Description</H4>
1176
1177<P>The <CODE>AccessLog</CODE> directive sets the name of the access log
1178file. If the filename is not absolute then it is assumed to be relative
1179to the <A HREF="#ServerRoot"><CODE>ServerRoot</CODE></A> directory. The
1180access log file is stored in "common log format" and can be used by any
1181web access reporting tool to generate a report on CUPS server activity.
1182
1183<P>The server name can be included in the filename by using
1184<CODE>%s</CODE> in the name.
1185
1186<P>The special name "syslog" can be used to send the access information
1187to the system log instead of a plain file.
1188
1189<P>The default access log file is <VAR>/var/log/cups/access_log</VAR>.
1190
1191<!-- NEED 6in -->
1192<H3><A NAME="Allow">Allow</A></H3>
1193<HR>
1194
1195<H4>Examples</H4>
1196
1197<UL><PRE>
1198Allow from All
1199Allow from None
1200Allow from *.domain.com
1201Allow from .domain.com
1202Allow from host.domain.com
1203Allow from nnn.*
1204Allow from nnn.nnn.*
1205Allow from nnn.nnn.nnn.*
1206Allow from nnn.nnn.nnn.nnn
1207Allow from nnn.nnn.nnn.nnn/mm
1208Allow from nnn.nnn.nnn.nnn/mmm.mmm.mmm.mmm
1209Allow from @LOCAL
1210Allow from @IF(name)
1211</PRE></UL>
1212
1213<H4>Description</H4>
1214
1215<P>The <CODE>Allow</CODE> directive specifies a hostname, IP address,
1216or network that is allowed access to the server. <CODE>Allow</CODE>
1217directives are cummulative, so multiple <CODE>Allow</CODE> directives
1218can be used to allow access for multiple hosts or networks. The
1219<CODE>/mm</CODE> notation specifies a CIDR netmask:
1220
1221<CENTER><TABLE BORDER="1">
1222<TR>
1223 <TH WIDTH="10%">mm</TH>
1224 <TH WIDTH="20%">netmask</TH>
1225 <TH WIDTH="10%">mm</TH>
1226 <TH WIDTH="20%">netmask</TH>
1227</TR>
1228<TR>
1229 <TD ALIGN="CENTER">0</TD>
1230 <TD ALIGN="CENTER">0.0.0.0</TD>
1231 <TD ALIGN="CENTER">8</TD>
1232 <TD ALIGN="CENTER">255.0.0.0</TD>
1233</TR>
1234<TR>
1235 <TD ALIGN="CENTER">1</TD>
1236 <TD ALIGN="CENTER">128.0.0.0</TD>
1237 <TD ALIGN="CENTER">16</TD>
1238 <TD ALIGN="CENTER">255.255.0.0</TD>
1239</TR>
1240<TR>
1241 <TD ALIGN="CENTER">2</TD>
1242 <TD ALIGN="CENTER">192.0.0.0</TD>
1243 <TD ALIGN="CENTER">24</TD>
1244 <TD ALIGN="CENTER">255.255.255.0</TD>
1245</TR>
1246<TR>
1247 <TD ALIGN="CENTER">...</TD>
1248 <TD ALIGN="CENTER">...</TD>
1249 <TD ALIGN="CENTER">32</TD>
1250 <TD ALIGN="CENTER">255.255.255.255</TD>
1251</TR>
1252</TABLE></CENTER>
1253
1254<P>The <CODE>@LOCAL</CODE> name will allow access from all local
1255network interfaces, but not remote point-to-point interfaces. The
1256<CODE>@IF(name)</CODE> name will allow access from the named
1257interface.
1258
1259<P>The <CODE>Allow</CODE> directive must appear inside a
1260<A HREF="#Location"><CODE>Location</CODE></A> directive.
1261
1262<!-- NEED 3in -->
1263<H3><A NAME="AuthClass">AuthClass</A></H3>
1264<HR>
1265
1266<H4>Examples</H4>
1267
1268<UL><PRE>
1269AuthClass Anonymous
1270AuthClass User
1271AuthClass System
1272AuthClass Group
1273</PRE></UL>
1274
1275<H4>Description</H4>
1276
1277<P>The <CODE>AuthClass</CODE> directive defines what level of authentication
1278is required:
1279
1280<UL>
1281
1282 <LI><CODE>Anonymous</CODE> - No authentication should be performed
1283 (default.)
1284
1285 <LI><CODE>User</CODE> - A valid username and password is required.
1286
1287 <LI><CODE>System</CODE> - A valid username and password is
1288 required, and the username must belong to the "sys" group; this
1289 can be changed using the
1290 <A HREF="#SystemGroup"><CODE>SystemGroup</CODE></A> directive.
1291
1292 <LI><CODE>Group</CODE> - A valid username and password is
1293 required, and the username must belong to the group named by
1294 the <CODE>AuthGroupName</CODE> directive.
1295
1296</UL>
1297
1298<P>The <CODE>AuthClass</CODE> directive must appear inside a
1299<A HREF="#Location"><CODE>Location</CODE></A> directive.
1300
1301<!-- NEED 3in -->
1302<H3><A NAME="AuthGroupName">AuthGroupName</A></H3>
1303<HR>
1304
1305<H4>Examples</H4>
1306
1307<UL><PRE>
1308AuthGroupName mygroup
1309AuthGroupName lp
1310</PRE></UL>
1311
1312<H4>Description</H4>
1313
1314<P>The <CODE>AuthGroupName</CODE> directive sets the group to use for
1315<CODE>Group</CODE> authentication.
1316
1317<P>The <CODE>AuthGroupName</CODE> directive must appear inside a
1318<A HREF="#Location"><CODE>Location</CODE></A> directive.
1319
1320<!-- NEED 3in -->
1321<H3><A NAME="AuthType">AuthType</A></H3>
1322<HR>
1323
1324<H4>Examples</H4>
1325
1326<UL><PRE>
1327AuthType None
1328AuthType Basic
1329AuthType Digest
1330AuthType BasicDigest
1331</PRE></UL>
1332
1333<H4>Description</H4>
1334
1335<P>The <CODE>AuthType</CODE> directive defines the type of authentication to
1336perform:
1337
1338<UL>
1339
1340 <LI><CODE>None</CODE> - No authentication should be performed
1341 (default.)
1342
1343 <LI><CODE>Basic</CODE> - Basic authentication should be
1344 performed using the UNIX password and group files.
1345
1346 <LI><CODE>Digest</CODE> - Digest authentication should be
1347 performed using the <VAR>/etc/cups/passwd.md5</VAR> file.
1348
1349 <LI><CODE>BasicDigest</CODE> - Basic authentication should be
1350 performed using the <VAR>/etc/cups/passwd.md5</VAR> file.
1351
1352</UL>
1353
1354<P>When using <CODE>Basic</CODE>, <CODE>Digest</CODE>, or
1355<CODE>BasicDigest</CODE> authentication, clients connecting
1356through the <CODE>localhost</CODE> interface can also
1357authenticate using <A HREF="#CERTIFICATES">certificates</A>.
1358
1359<P>The <CODE>AuthType</CODE> directive must appear inside a
1360<A HREF="#Location"><CODE>Location</CODE></A> directive.
1361
1362<!-- NEED 3in -->
1363<H3><A NAME="AutoPurgeJobs">AutoPurgeJobs</A></H3>
1364<HR>
1365
1366<H4>Examples</H4>
1367
1368<UL><PRE>
1369AutoPurgeJobs Yes
1370AutoPurgeJobs No
1371</PRE></UL>
1372
1373<H4>Description</H4>
1374
1375<P>The <CODE>AutoPurgeJobs</CODE> directive specifies whether or not to purge
1376completed jobs once they are no longer required for quotas. This option has
1377no effect if quotas are not enabled. The default setting is <CODE>No</CODE>.
1378
1379<!-- NEED 5in -->
1380<H3><A NAME="BrowseAddress">BrowseAddress</A></H3>
1381<HR>
1382
1383<H4>Examples</H4>
1384
1385<UL><PRE>
1386BrowseAddress 255.255.255.255:631
1387BrowseAddress 192.0.2.255:631
1388BrowseAddress host.domain.com:631
1389BrowseAddress @LOCAL
1390BrowseAddress @IF(name)
1391</PRE></UL>
1392
1393<H4>Description</H4>
1394
1395<P>The <CODE>BrowseAddress</CODE> directive specifies an address to
1396send browsing information to. Multiple <CODE>BrowseAddress</CODE>
1397directives can be specified to send browsing information to different
1398networks or systems.
1399
1400<P>The <CODE>@LOCAL</CODE> name will broadcast printer
1401information to all local interfaces. The <CODE>@IF(name)</CODE>
1402name will broadcast to the named interface.
1403
1404<P>No browse addresses are set by default.</P>
1405
1406<CENTER><TABLE WIDTH="80%" BORDER="1" CELLPADDING="5" BGCOLOR="#cccccc">
1407<TR>
1408 <TD>
1409 <B>NOTE:</B>
1410
1411 <P>If you are using HP-UX 10.20 and a subnet that is not 24,
1412 16, or 8 bits, printer browsing (and in fact all broadcast
1413 reception) will not work. This problem appears to be fixed in
1414 HP-UX 11.0.
1415 </TD>
1416</TR>
1417</TABLE></CENTER>
1418
1419<!-- NEED 4in -->
1420<H3><A NAME="BrowseAllow">BrowseAllow</A></H3>
1421<HR>
1422
1423<H4>Examples</H4>
1424
1425<UL><PRE>
1426BrowseAllow from all
1427BrowseAllow from none
1428BrowseAllow from 192.0.2
1429BrowseAllow from 192.0.2.0/24
1430BrowseAllow from 192.0.2.0/255.255.255.0
1431BrowseAllow from *.domain.com
1432BrowseAllow from @LOCAL
1433BrowseAllow from @IF(name)
1434</PRE></UL>
1435
1436<H4>Description</H4>
1437
1438<P>The <CODE>BrowseAllow</CODE> directive specifies a system or network
1439to accept browse packets from. The default is to accept browse packets
1440from all hosts.
1441
1442<P>Host and domain name matching require that you enable the
1443<A HREF="#HostNameLookups"><CODE>HostNameLookups</CODE></A> directive.
1444
1445<P>IP address matching supports exact matches, partial addresses that
1446match networks using netmasks of 255.0.0.0, 255.255.0.0, and 255.255.255.0,
1447or network addresses using the specified netmask or bit count.
1448
1449<P>The <CODE>@LOCAL</CODE> name will allow browse data from all
1450local network interfaces, but not remote point-to-point
1451interfaces. The <CODE>@IF(name)</CODE> name will allow browse
1452data from the named interface.
1453
1454
1455<!-- NEED 4in -->
1456<H3><A NAME="BrowseDeny">BrowseDeny</A></H3>
1457<HR>
1458
1459<H4>Examples</H4>
1460
1461<UL><PRE>
1462BrowseDeny from all
1463BrowseDeny from none
1464BrowseDeny from 192.0.2
1465BrowseDeny from 192.0.2.0/24
1466BrowseDeny from 192.0.2.0/255.255.255.0
1467BrowseDeny from *.domain.com
1468BrowseDeny from @LOCAL
1469BrowseDeny from @IF(name)
1470</PRE></UL>
1471
1472<H4>Description</H4>
1473
1474<P>The <CODE>BrowseDeny</CODE> directive specifies a system or network
1475to reject browse packets from. The default is to deny browse packets
1476from no hosts.
1477
1478<P>Host and domain name matching require that you enable the
1479<A HREF="#HostNameLookups"><CODE>HostNameLookups</CODE></A> directive.
1480
1481<P>IP address matching supports exact matches, partial addresses that
1482match networks using netmasks of 255.0.0.0, 255.255.0.0, and 255.255.255.0,
1483or network addresses using the specified netmask or bit count.
1484
1485<P>The <CODE>@LOCAL</CODE> name will block browse data from all
1486local network interfaces, but not remote point-to-point
1487interfaces. The <CODE>@IF(name)</CODE> name will block browse
1488data from the named interface.
1489
1490
1491<!-- NEED 3in -->
1492<H3><A NAME="BrowseOrder">BrowseOrder</A></H3>
1493<HR>
1494
1495<H4>Examples</H4>
1496
1497<UL><PRE>
1498BrowseOrder allow,deny
1499BrowseOrder deny,allow
1500</PRE></UL>
1501
1502<H4>Description</H4>
1503
1504<P>The <CODE>BrowseOrder</CODE> directive specifies the order of allow/deny
1505processing. The default order is <CODE>deny,allow</CODE>:
1506
1507<UL>
1508
1509 <LI><CODE>allow,deny</CODE> - Browse packets are accepted unless
1510 specifically denied.
1511
1512 <LI><CODE>deny,allow</CODE> - Browse packets are rejected unless
1513 specifically allowed.
1514
1515</UL>
1516
1517<!-- NEED 3in -->
1518<H3><A NAME="BrowseInterval">BrowseInterval</A></H3>
1519<HR>
1520
1521<H4>Examples</H4>
1522
1523<UL><PRE>
1524BrowseInterval 0
1525BrowseInterval 30
1526</PRE></UL>
1527
1528<H4>Description</H4>
1529
1530<P>The <CODE>BrowseInterval</CODE> directive specifies the maximum amount of
1531time between browsing updates. Specifying a value of 0 seconds disables
1532outgoing browse updates but allows a server to receive printer information
1533from other hosts.
1534
1535<P>The <CODE>BrowseInterval</CODE> value should always be less than the
1536<A HREF="#BrowseTimeout"><CODE>BrowseTimeout</CODE></A> value. Otherwise
1537printers and classes will disappear from client systems between updates.
1538
1539<!-- NEED 3in -->
1540<H3><A NAME="BrowsePoll">BrowsePoll</A></H3>
1541<HR>
1542
1543<H4>Examples</H4>
1544
1545<UL><PRE>
1546BrowsePoll 192.0.2.2:631
1547BrowsePoll host.domain.com:631
1548</PRE></UL>
1549
1550<H4>Description</H4>
1551
1552<P>The <CODE>BrowsePoll</CODE> directive polls a server for available
1553printers once every
1554<A HREF="#BrowseInterval"><CODE>BrowseInterval</CODE></A> seconds.
1555Multiple <CODE>BrowsePoll</CODE> directives can be specified to poll
1556multiple servers.
1557
1558<P>If <CODE>BrowseInterval</CODE> is set to 0 then the server is polled
1559once every 30 seconds.
1560
1561<!-- NEED 3in -->
1562<H3><A NAME="BrowsePort">BrowsePort</A></H3>
1563<HR>
1564
1565<H4>Examples</H4>
1566
1567<UL><PRE>
1568BrowsePort 631
1569BrowsePort 9999
1570</PRE></UL>
1571
1572<H4>Description</H4>
1573
1574<P>The <CODE>BrowsePort</CODE> directive specifies the UDP port number
1575used for browse packets. The default port number is 631.</P>
1576
1577<CENTER><TABLE WIDTH="80%" BORDER="1" CELLPADDING="5" BGCOLOR="#cccccc">
1578<TR>
1579 <TD>
1580 <B>NOTE:</B>
1581
1582 <P>You must set the <CODE>BrowsePort</CODE> to the same value
1583 on all of the systems that you want to see.
1584 </TD>
1585</TR>
1586</TABLE></CENTER>
1587
1588<!-- NEED 3in -->
1589<H3><A NAME="BrowseProtocols">BrowseProtocols</A></H3>
1590<HR>
1591
1592<H4>Examples</H4>
1593
1594<UL><PRE>
1595BrowseProtocols CUPS
1596BrowseProtocols SLP
1597BrowseProtocols CUPS SLP
1598BrowseProtocols all
1599</PRE></UL>
1600
1601<H4>Description</H4>
1602
1603<P>The <CODE>BrowseProtocols</CODE> directive specifies the protocols to
1604use when collecting and distributing shared printers on the local network.
1605The default protocol is <CODE>CUPS</CODE>, which is a broadcast-based
1606protocol.</P>
1607
1608<CENTER><TABLE WIDTH="80%" BORDER="1" CELLPADDING="5" BGCOLOR="#cccccc">
1609<TR>
1610 <TD>
1611 <B>NOTE:</B>
1612
1613 <P>When using the <CODE>SLP</CODE> protocol, you must have at least
1614 one Directory Agent (DA) server on your network. Otherwise the
1615 CUPS scheduler (<CODE>cupsd</CODE>) will not respond to client
1616 requests for several seconds while polling the network.
1617 </TD>
1618</TR>
1619</TABLE></CENTER>
1620
1621<!-- NEED 4in -->
1622<H3><A NAME="BrowseRelay">BrowseRelay</A></H3>
1623<HR>
1624
1625<H4>Examples</H4>
1626
1627<UL><PRE>
1628BrowseRelay 193.0.2.1 192.0.2.255
1629BrowseRelay 193.0.2.0/255.255.255.0 192.0.2.255
1630BrowseRelay 193.0.2.0/24 192.0.2.255
1631BrowseRelay *.domain.com 192.0.2.255
1632BrowseRelay host.domain.com 192.0.2.255
1633</PRE></UL>
1634
1635<H4>Description</H4>
1636
1637<P>The <CODE>BrowseRelay</CODE> directive specifies source and destination
1638addresses for relaying browsing information from one host or network to
1639another. Multiple <CODE>BrowseRelay</CODE> directives can be specified
1640as needed.
1641
1642<P><CODE>BrowseRelay</CODE> is typically used on systems that bridge
1643multiple subnets using one or more network interfaces. It can also be
1644used to relay printer information from polled servers with the line:
1645
1646<UL><PRE>
1647BrowseRelay 127.0.0.1 255.255.255.255
1648</PRE></UL>
1649
1650<P>This effectively provides access to printers on a WAN for all clients
1651on the LAN(s).
1652
1653<!-- NEED 3in -->
1654<H3><A NAME="BrowseShortNames">BrowseShortNames</A></H3>
1655<HR>
1656
1657<H4>Examples</H4>
1658
1659<UL><PRE>
1660BrowseShortNames Yes
1661BrowseShortNames No
1662</PRE></UL>
1663
1664<H4>Description</H4>
1665
1666<P>The <CODE>BrowseShortNames</CODE> directive specifies whether or not
1667short names are used for remote printers when possible. Short names are
1668just the remote printer name, without the server ("printer"). If more than
1669one remote printer is detected with the same name, the printers will have
1670long names ("printer@server1", "printer@server2".)
1671
1672<P>The default value for this option is <CODE>Yes</CODE>.
1673
1674<!-- NEED 3in -->
1675<H3><A NAME="BrowseTimeout">BrowseTimeout</A></H3>
1676<HR>
1677
1678<H4>Examples</H4>
1679
1680<UL><PRE>
1681BrowseTimeout 300
1682BrowseTimeout 60
1683</PRE></UL>
1684
1685<H4>Description</H4>
1686
1687<P>The <CODE>BrowseTimeout</CODE> directive sets the timeout for
1688printer or class information that is received in browse packets. Once a
1689printer or class times out it is removed from the list of available
1690destinations.
1691
1692<P>The <CODE>BrowseTimeout</CODE> value should always be greater than the
1693<A HREF="#BrowseInterval"><CODE>BrowseInterval</CODE></A> value. Otherwise
1694printers and classes will disappear from client systems between updates.
1695
1696<!-- NEED 4in -->
1697<H3><A NAME="Browsing">Browsing</A></H3>
1698<HR>
1699
1700<H4>Examples</H4>
1701
1702<UL><PRE>
1703Browsing On
1704Browsing Off
1705</PRE></UL>
1706
1707<H4>Description</H4>
1708
1709<P>The <CODE>Browsing</CODE> directive controls whether or not network printer
1710browsing is enabled. The default setting is <CODE>On</CODE>.</P>
1711
1712<CENTER><TABLE WIDTH="80%" BORDER="1" CELLPADDING="5" BGCOLOR="#cccccc">
1713<TR>
1714 <TD>
1715 <B>NOTE:</B>
1716
1717 <P>If you are using HP-UX 10.20 and a subnet that is not 24,
1718 16, or 8 bits, printer browsing (and in fact all broadcast
1719 reception) will not work. This problem appears to be fixed in
1720 HP-UX 11.0.
1721 </TD>
1722</TR>
1723</TABLE></CENTER>
1724
1725<!-- NEED 3in -->
1726<H3><A NAME="Classification">Classification</A></H3>
1727<HR>
1728
1729<H4>Examples</H4>
1730
1731<UL><PRE>
1732Classification
1733Classification classified
1734Classification confidential
1735Classification secret
1736Classification topsecret
1737Classification unclassified
1738</PRE></UL>
1739
1740<H4>Description</H4>
1741
1742<P>The <CODE>Classification</CODE> directive sets the classification level
1743on the server. When this option is set, at least one of the banner pages
1744is forced to the classification level, and the classification is placed
1745on each page of output. The default is no classification level.
1746
1747<!-- NEED 3in -->
1748<H3><A NAME="ClassifyOverride">ClassifyOverride</A></H3>
1749<HR>
1750
1751<H4>Examples</H4>
1752
1753<UL><PRE>
1754ClassifyOverride Yes
1755ClassifyOverride No
1756</PRE></UL>
1757
1758<H4>Description</H4>
1759
1760<P>The <CODE>ClassifyOverride</CODE> directive specifies whether users
1761can override the default classification level on the server. When the
1762server classification is set, users can change the classification using
1763the <CODE>job-sheets</CODE> option and can choose to only print one
1764security banner before or after the job. If the <CODE>job-sheets</CODE>
1765option is set to <CODE>none</CODE> then the server default classification
1766is used.
1767
1768<P>The default is to not allow classification overrides.
1769
1770<!-- NEED 3in -->
1771<H3><A NAME="ConfigFilePerm">ConfigFilePerm</A></H3>
1772<HR>
1773
1774<H4>Examples</H4>
1775
1776<UL><PRE>
1777ConfigFilePerm 0644
1778ConfigFilePerm 0600
1779</PRE></UL>
1780
1781<H4>Description</H4>
1782
1783<P>The <CODE>ConfigFilePerm</CODE> directive specifies the permissions
1784to use when writing configuration files. The default is 0600.
1785
1786<!-- NEED 3in -->
1787<H3><A NAME="DataDir">DataDir</A></H3>
1788<HR>
1789
1790<H4>Examples</H4>
1791
1792<UL><PRE>
1793DataDir /usr/share/cups
1794</PRE></UL>
1795
1796<H4>Description</H4>
1797
1798<P>The <CODE>DataDir</CODE> directive sets the directory to use for data
1799files.
1800
1801<!-- NEED 3in -->
1802<H3><A NAME="DefaultCharset">DefaultCharset</A></H3>
1803<HR>
1804
1805<H4>Examples</H4>
1806
1807<UL><PRE>
1808DefaultCharset utf-8
1809DefaultCharset iso-8859-1
1810DefaultCharset windows-1251
1811</PRE></UL>
1812
1813<H4>Description</H4>
1814
1815<P>The <CODE>DefaultCharset</CODE> directive sets the default character set
1816to use for client connections. The default character set is
1817<CODE>utf-8</CODE> but is overridden by the character set for the language
1818specified by the client or the <CODE>DefaultLanguage</CODE> directive.
1819
1820<!-- NEED 3in -->
1821<H3><A NAME="DefaultLanguage">DefaultLanguage</A></H3>
1822<HR>
1823
1824<H4>Examples</H4>
1825
1826<UL><PRE>
1827DefaultLanguage de
1828DefaultLanguage en
1829DefaultLanguage es
1830DefaultLanguage fr
1831DefaultLanguage it
1832</PRE></UL>
1833
1834<H4>Description</H4>
1835
1836<P>The <CODE>DefaultLanguage</CODE> directive specifies the default language
1837to use for client connections. Setting the default language also sets the
1838default character set if a language localization file exists for it. The
1839default language is "en" for English.
1840
1841<!-- NEED 5in -->
1842<H3><A NAME="Deny">Deny</A></H3>
1843<HR>
1844
1845<H4>Examples</H4>
1846
1847<UL><PRE>
1848Deny from All
1849Deny from None
1850Deny from *.domain.com
1851Deny from .domain.com
1852Deny from host.domain.com
1853Deny from nnn.*
1854Deny from nnn.nnn.*
1855Deny from nnn.nnn.nnn.*
1856Deny from nnn.nnn.nnn.nnn
1857Deny from nnn.nnn.nnn.nnn/mm
1858Deny from nnn.nnn.nnn.nnn/mmm.mmm.mmm.mmm
1859Deny from @LOCAL
1860Deny from @IF(name)
1861</PRE></UL>
1862
1863<H4>Description</H4>
1864
1865<P>The <CODE>Deny</CODE> directive specifies a hostname, IP address, or
1866network that is allowed access to the server. <CODE>Deny</CODE>
1867directives are cummulative, so multiple <CODE>Deny</CODE> directives
1868can be used to allow access for multiple hosts or networks. The
1869<CODE>/mm</CODE> notation specifies a CIDR netmask:
1870
1871<CENTER><TABLE BORDER="1">
1872<TR>
1873 <TH WIDTH="10%">mm</TH>
1874 <TH WIDTH="20%">netmask</TH>
1875 <TH WIDTH="10%">mm</TH>
1876 <TH WIDTH="20%">netmask</TH>
1877</TR>
1878<TR>
1879 <TD ALIGN="CENTER">0</TD>
1880 <TD ALIGN="CENTER">0.0.0.0</TD>
1881 <TD ALIGN="CENTER">8</TD>
1882 <TD ALIGN="CENTER">255.0.0.0</TD>
1883</TR>
1884<TR>
1885 <TD ALIGN="CENTER">1</TD>
1886 <TD ALIGN="CENTER">128.0.0.0</TD>
1887 <TD ALIGN="CENTER">16</TD>
1888 <TD ALIGN="CENTER">255.255.0.0</TD>
1889</TR>
1890<TR>
1891 <TD ALIGN="CENTER">2</TD>
1892 <TD ALIGN="CENTER">192.0.0.0</TD>
1893 <TD ALIGN="CENTER">24</TD>
1894 <TD ALIGN="CENTER">255.255.255.0</TD>
1895</TR>
1896<TR>
1897 <TD ALIGN="CENTER">...</TD>
1898 <TD ALIGN="CENTER">...</TD>
1899 <TD ALIGN="CENTER">32</TD>
1900 <TD ALIGN="CENTER">255.255.255.255</TD>
1901</TR>
1902</TABLE></CENTER>
1903
1904<P>The <CODE>@LOCAL</CODE> name will deny access from all local
1905network interfaces, but not remote point-to-point interfaces. The
1906<CODE>@IF(name)</CODE> name will deny access from the named
1907interface.
1908
1909<P>The <CODE>Deny</CODE> directive must appear inside a
1910<A HREF="#Location"><CODE>Location</CODE></A> directive.
1911
1912<!-- NEED 3in -->
1913<H3><A NAME="DocumentRoot">DocumentRoot</A></H3>
1914<HR>
1915
1916<H4>Examples</H4>
1917
1918<UL><PRE>
1919DocumentRoot /usr/share/doc/cups
1920DocumentRoot /foo/bar/doc/cups
1921</PRE></UL>
1922
1923<H4>Description</H4>
1924
1925<P>The <CODE>DocumentRoot</CODE> directive specifies the location of
1926web content for the HTTP server in CUPS. If an absolute path is not
1927specified then it is assumed to be relative to the
1928<A HREF="#ServerRoot"><CODE>ServerRoot</CODE></A> directory. The
1929default directory is <VAR>/usr/share/doc/cups</VAR>.
1930
1931<P>Documents are first looked up in a sub-directory for the primary
1932language requested by the client (e.g. <VAR>/usr/share/doc/cups/fr/...</VAR>)
1933and then directly under the <CODE>DocumentRoot</CODE> directory
1934(e.g. <VAR>/usr/share/doc/cups/...</VAR>), so it is possible to localize
1935the web content by providing subdirectories for each language needed.
1936
1937<!-- NEED 3in -->
1938<H3><A NAME="Encryption">Encryption</A></H3>
1939<HR>
1940
1941<H4>Examples</H4>
1942
1943<UL><PRE>
1944Encryption Never
1945Encryption IfRequested
1946Encryption Required
1947Encryption Always
1948</PRE></UL>
1949
1950<H4>Description</H4>
1951
1952<P>The <CODE>Encryption</CODE> directive must appear instead a
1953<A HREF="#Location"><CODE>Location</CODE></A>
1954section and specifies the encryption settings for that location.
1955The default setting is <CODE>IfRequested</CODE> for all locations.
1956
1957<!-- NEED 3in -->
1958<H3><A NAME="ErrorLog">ErrorLog</A></H3>
1959<HR>
1960
1961<H4>Examples</H4>
1962
1963<UL><PRE>
1964ErrorLog /var/log/cups/error_log
1965ErrorLog /var/log/cups/error_log-%s
1966ErrorLog syslog
1967</PRE></UL>
1968
1969<H4>Description</H4>
1970
1971<P>The <CODE>ErrorLog</CODE> directive sets the name of the error log
1972file. If the filename is not absolute then it is assumed to be relative
1973to the <A HREF="#ServerRoot"><CODE>ServerRoot</CODE></A> directory. The
1974default error log file is <VAR>/var/log/cups/error_log</VAR>.
1975
1976<P>The server name can be included in the filename by using
1977<CODE>%s</CODE> in the name.
1978
1979<P>The special name "syslog" can be used to send the error information
1980to the system log instead of a plain file.
1981
1982<!-- NEED 3in -->
1983<H3><A NAME="FilterLimit">FilterLimit</A></H3>
1984<HR>
1985
1986<H4>Examples</H4>
1987
1988<UL><PRE>
1989FilterLimit 0
1990FilterLimit 200
1991FilterLimit 1000
1992</PRE></UL>
1993
1994<H4>Description</H4>
1995
1996<P>The <CODE>FilterLimit</CODE> directive sets the maximum cost
1997of all running job filters. It can be used to limit the number
1998of filter programs that are run on a server to minimize disk,
1999memory, and CPU resource problems. A limit of 0 disables filter
2000limiting.
2001
2002<P>An average print to a non-PostScript printer needs a filter
2003limit of about 200. A PostScript printer needs about half that
2004(100). Setting the limit below these thresholds will effectively
2005limit the scheduler to printing a single job at any time.
2006
2007<P>The default limit is 0.
2008
2009<!-- NEED 3in -->
2010<H3><A NAME="FilterNice">FilterNice</A></H3>
2011<HR>
2012
2013<H4>Examples</H4>
2014
2015<UL><PRE>
2016FilterNice 0
2017FilterNice 39
2018FilterNice -10
2019</PRE></UL>
2020
2021<H4>Description</H4>
2022
2023<P>The <CODE>FilterNice</CODE> directive sets the scheduling
2024priority of job filters. Values larger than 0 give filters a
2025lower priority while values smaller than 0 give filters a higher
2026priority. The <CODE>FilterNice</CODE> value does not affect the
2027priority of job backends.
2028
2029<P>The default priority is 0.
2030
2031<!-- NEED 3in -->
2032<H3><A NAME="FontPath">FontPath</A></H3>
2033<HR>
2034
2035<H4>Examples</H4>
2036
2037<UL><PRE>
2038FontPath /foo/bar/fonts
2039FontPath /usr/share/cups/fonts:/foo/bar/fonts
2040</PRE></UL>
2041
2042<H4>Description</H4>
2043
2044<P>The <CODE>FontPath</CODE> directive specifies the font path to use when
2045searching for fonts. The default font path is
2046<CODE>/usr/share/cups/fonts</CODE>.
2047
2048<!-- NEED 3in -->
2049<H3><A NAME="Group">Group</A></H3>
2050<HR>
2051
2052<H4>Examples</H4>
2053
2054<UL><PRE>
2055Group sys
2056Group system
2057Group root
2058</PRE></UL>
2059
2060<H4>Description</H4>
2061
2062<P>The <CODE>Group</CODE> directive specifies the UNIX group that
2063filter and CGI programs run as. The default group is <CODE>sys</CODE>,
2064<CODE>system</CODE>, or <CODE>root</CODE> depending on the operating
2065system.
2066
2067<!-- NEED 3in -->
2068<H3><A NAME="HideImplicitMembers">HideImplicitMembers</A></H3>
2069<HR>
2070
2071<H4>Examples</H4>
2072
2073<UL><PRE>
2074HideImplicitMembers Yes
2075HideImplicitMembers No
2076</PRE></UL>
2077
2078<H4>Description</H4>
2079
2080<P>The <CODE>HideImplicitMembers</CODE> directive controls
2081whether the individual printers in an implicit class are shown
2082to the user. The default is <CODE>No</CODE>.</P>
2083
2084<P><A HREF="#ImplicitClasses"><CODE>ImplicitClasses</CODE></A>
2085must be enabled for this directive to have any effect.</P>
2086
2087<!-- NEED 3in -->
2088<H3><A NAME="HostNameLookups">HostNameLookups</A></H3>
2089<HR>
2090
2091<H4>Examples</H4>
2092
2093<UL><PRE>
2094HostNameLookups On
2095HostNameLookups Off
2096HostNameLookups Double
2097</PRE></UL>
2098
2099<H4>Description</H4>
2100
2101<P>The <CODE>HostNameLookups</CODE> directive controls whether
2102or not CUPS looks up the hostname for connecting clients. The
2103<CODE>Double</CODE> setting causes CUPS to verify that the
2104hostname resolved from the address matches one of the addresses
2105returned for that hostname. <CODE>Double</CODE> lookups also
2106prevent clients with unregistered addresses from connecting
2107to your server.
2108
2109The default is <CODE>Off</CODE> to avoid the potential server
2110performance problems with hostname lookups. Set this option to
2111<CODE>On</CODE> or <CODE>Double</CODE> only if absolutely
2112required.
2113
2114<!-- NEED 3in -->
2115<H3><A NAME="ImplicitClasses">ImplicitClasses</A></H3>
2116<HR>
2117
2118<H4>Examples</H4>
2119
2120<UL><PRE>
2121ImplicitClasses On
2122ImplicitClasses Off
2123</PRE></UL>
2124
2125<H4>Description</H4>
2126
2127<P>The <CODE>ImplicitClasses</CODE> directive controls whether implicit
2128classes are created based upon the available network printers and classes.
2129The default setting is <CODE>On</CODE> but is automatically turned
2130<CODE>Off</CODE> if <A HREF="#Browsing"><CODE>Browsing</CODE></A> is
2131turned <CODE>Off</CODE>.
2132
2133<!-- NEED 3in -->
2134<H3><A NAME="ImplicitAnyClasses">ImplicitAnyClasses</A></H3>
2135<HR>
2136
2137<H4>Examples</H4>
2138
2139<UL><PRE>
2140ImplicitAnyClasses On
2141ImplicitAnyClasses Off
2142</PRE></UL>
2143
2144<H4>Description</H4>
2145
2146<P>The <CODE>ImplicitAnyClasses</CODE> directive controls
2147whether implicit classes for local and remote printers are
2148created with the name <CODE>AnyPrinter</CODE>. The default
2149setting is <CODE>Off</CODE>.</P>
2150
2151<P><A HREF="#ImplicitClasses"><CODE>ImplicitClasses</CODE></A>
2152must be enabled for this directive to have any effect.</P>
2153
2154<!-- NEED 3in -->
2155<H3><A NAME="Include">Include</A></H3>
2156<HR>
2157
2158<H4>Examples</H4>
2159
2160<UL><PRE>
2161Include filename
2162Include /foo/bar/filename
2163</PRE></UL>
2164
2165<H4>Description</H4>
2166
2167<P>The <CODE>Include</CODE> directive includes the named file in
2168the <CODE>cupsd.conf</CODE> file. If no leading path is
2169provided, the file is assumed to be relative to the
2170<A HREF="#ServerRoot"><CODE>ServerRoot</CODE></A> directory.</P>
2171
2172<!-- NEED 3in -->
2173<H3><A NAME="KeepAlive">KeepAlive</A></H3>
2174<HR>
2175
2176<H4>Examples</H4>
2177
2178<UL><PRE>
2179KeepAlive On
2180KeepAlive Off
2181</PRE></UL>
2182
2183<H4>Description</H4>
2184
2185<P>The <CODE>KeepAlive</CODE> directive controls whether or not to support
2186persistent HTTP connections. The default is <CODE>On</CODE>.
2187
2188<P>HTTP/1.1 clients automatically support persistent connections, while
2189HTTP/1.0 clients must specifically request them using the
2190<CODE>Keep-Alive</CODE> attribute in the <CODE>Connection:</CODE>
2191field of each request.
2192
2193<!-- NEED 3in -->
2194<H3><A NAME="KeepAliveTimeout">KeepAliveTimeout</A></H3>
2195<HR>
2196
2197<H4>Examples</H4>
2198
2199<UL><PRE>
2200KeepAliveTimeout 60
2201KeepAliveTimeout 30
2202</PRE></UL>
2203
2204<H4>Description</H4>
2205
2206<P>The <CODE>KeepAliveTimeout</CODE> directive controls how long a
2207persistent HTTP connection will remain open after the last request. The
2208default is 60 seconds.
2209
2210<!-- NEED 3in -->
2211<H3><A NAME="Limit">Limit</A></H3>
2212<HR>
2213
2214<H4>Examples</H4>
2215
2216<UL><PRE>
2217&lt;Limit GET POST&gt;
2218...
2219&lt;/Limit&gt;
2220
2221&lt;Limit ALL&gt;
2222...
2223&lt;/Limit&gt;
2224</PRE></UL>
2225
2226<H4>Description</H4>
2227
2228<P>The <CODE>Limit</CODE> directive groups access control directives for
2229specific types of HTTP requests and must appear inside a
2230<A HREF="#Location"><CODE>Location</CODE></A> section. Access can be limited
2231for individual request types (<CODE>DELETE</CODE>, <CODE>GET</CODE>,
2232<CODE>HEAD</CODE>, <CODE>OPTIONS</CODE>, <CODE>POST</CODE>, <CODE>PUT</CODE>,
2233and <CODE>TRACE</CODE>) or for all request types (<CODE>ALL</CODE>). The
2234request type names are case-sensitive for compatibility with Apache.
2235
2236<!-- NEED 3in -->
2237<H3><A NAME="LimitExcept">LimitExcept</A></H3>
2238<HR>
2239
2240<H4>Examples</H4>
2241
2242<UL><PRE>
2243&lt;LimitExcept GET POST&gt;
2244...
2245&lt;/LimitExcept&gt;
2246</PRE></UL>
2247
2248<H4>Description</H4>
2249
2250<P>The <CODE>LimitExcept</CODE> directive groups access control directives for
2251specific types of HTTP requests and must appear inside a
2252<A HREF="#Location"><CODE>Location</CODE></A> section. Unlike the
2253<A HREF="#Limit"><CODE>Limit</CODE></A> directive, <CODE>LimitExcept</CODE>
2254restricts access for all requests <I>except</I> those listed on the
2255<CODE>LimitExcept</CODE> line.
2256
2257<!-- NEED 3in -->
2258<H3><A NAME="LimitRequestBody">LimitRequestBody</A></H3>
2259<HR>
2260
2261<H4>Examples</H4>
2262
2263<UL><PRE>
2264LimitRequestBody 10485760
2265LimitRequestBody 10m
2266LimitRequestBody 0
2267</PRE></UL>
2268
2269<H4>Description</H4>
2270
2271<P>The <CODE>LimitRequestBody</CODE> directive controls the maximum size of
2272print files, IPP requests, and HTML form data in HTTP POST requests. The
2273default limit is 0 which disables the limit check.
2274
2275<P>Also see the identical
2276<A HREF="#MaxRequestSize"><CODE>MaxRequestSize</CODE></A> directive.
2277
2278<!-- NEED 3in -->
2279<H3><A NAME="Listen">Listen</A></H3>
2280<HR>
2281
2282<H4>Examples</H4>
2283
2284<UL><PRE>
2285Listen 127.0.0.1:631
2286Listen 192.0.2.1:631
2287</PRE></UL>
2288
2289<H4>Description</H4>
2290
2291<P>The <CODE>Listen</CODE> directive specifies a network address and port
2292to listen for connections. Multiple <CODE>Listen</CODE> directives can be
2293provided to listen on multiple addresses.
2294
2295<P>The <CODE>Listen</CODE> directive is similar to the
2296<A HREF="#Port"><CODE>Port</CODE></A> directive but allows you to restrict
2297access to specific interfaces or networks.
2298
2299<!-- NEED 3in -->
2300<H3><A NAME="Location">Location</A></H3>
2301<HR>
2302
2303<H4>Examples</H4>
2304
2305<UL><PRE>
2306&lt;Location /&gt;
2307...
2308&lt;/Location&gt;
2309
2310&lt;Location /admin&gt;
2311...
2312&lt;/Location&gt;
2313
2314&lt;Location /printers&gt;
2315...
2316&lt;/Location&gt;
2317
2318&lt;Location /printers/name&gt;
2319...
2320&lt;/Location&gt;
2321
2322&lt;Location /classes&gt;
2323...
2324&lt;/Location&gt;
2325
2326&lt;Location /classes/name&gt;
2327...
2328&lt;/Location&gt;
2329</PRE></UL>
2330
2331<H4>Description</H4>
2332
2333<P>The <CODE>Location</CODE> directive specifies access control and
2334authentication options for the specified HTTP resource or path.
2335The
2336<A HREF="#Allow"><CODE>Allow</CODE></A>,
2337<A HREF="#AuthClass"><CODE>AuthClass</CODE></A>,
2338<A HREF="#AuthGroupName"><CODE>AuthGroupName</CODE></A>,
2339<A HREF="#AuthType"><CODE>AuthType</CODE></A>,
2340<A HREF="#Deny"><CODE>Deny</CODE></A>,
2341<A HREF="#Encryption"><CODE>Encryption</CODE></A>,
2342<A HREF="#Limit"><CODE>Limit</CODE></A>,
2343<A HREF="#LimitExcept"><CODE>LimitExcept</CODE></A>,
2344<A HREF="#Order"><CODE>Order</CODE></A>,
2345<A HREF="#Require"><CODE>Require</CODE></A>, and
2346<A HREF="#Satisfy"><CODE>Satisfy</CODE></A>
2347directives may all appear inside a location.
2348
2349<CENTER><TABLE BORDER="1"><CAPTION>Locations on the Server.</CAPTION>
2350<TR><TH>Location</TH><TH>Description</TH></TR>
2351<TR><TD>/</TD><TD>The path for all get operations (get-printers, get-jobs, etc.)</TD></TR>
2352<TR><TD>/admin</TD><TD>The path for all administration operations (add-printer, delete-printer, start-printer, etc.)</TD></TR>
2353<TR><TD>/admin/conf</TD><TD>The path for access to the ESP Print Pro configuration files (cupsd.conf, client.conf, etc.)</TD></TR>
2354<TR><TD>/classes</TD><TD>The path for all classes</TD></TR>
2355<TR><TD>/classes/name</TD><TD>The resource for class <CODE>name</CODE></TD></TR>
2356<TR><TD>/jobs</TD><TD>The path for all jobs (hold-job, release-job, etc.)</TD></TR>
2357<TR><TD>/jobs/id</TD><TD>The resource for job <CODE>id</CODE></TD></TR>
2358<TR><TD>/printers</TD><TD>The path for all printers</TD></TR>
2359<TR><TD>/printers/name</TD><TD>The path for printer <CODE>name</CODE></TD></TR>
2360<TR><TD>/printers/name.ppd</TD><TD>The PPD file path for printer <CODE>name</CODE></TD></TR>
2361</TABLE></CENTER>
2362
2363<P>Note that more specific resources override the less specific ones.
2364So the directives inside the <CODE>/printers/name</CODE> location will override ones from <CODE>/printers</CODE>.
2365Directives inside <CODE>/printers</CODE> will override ones from <CODE>/</CODE>. &nbsp;
2366None of the directives are inherited.
2367More information can be found in section <A HREF="#PRINTING_SECURITY">"Printing System Security"</A>.
2368
2369<!-- NEED 3in -->
2370<H3><A NAME="LogFilePerm">LogFilePerm</A></H3>
2371<HR>
2372
2373<H4>Examples</H4>
2374
2375<UL><PRE>
2376LogFilePerm 0644
2377LogFilePerm 0600
2378</PRE></UL>
2379
2380<H4>Description</H4>
2381
2382<P>The <CODE>LogFilePerm</CODE> directive specifies the permissions
2383to use when writing configuration files. The default is 0644.
2384
2385<!-- NEED 3in -->
2386<H3><A NAME="LogLevel">LogLevel</A></H3>
2387<HR>
2388
2389<H4>Examples</H4>
2390
2391<UL><PRE>
2392LogLevel none
2393LogLevel emerg
2394LogLevel alert
2395LogLevel crit
2396LogLevel error
2397LogLevel warn
2398LogLevel notice
2399LogLevel info
2400LogLevel debug
2401LogLevel debug2
2402</PRE></UL>
2403
2404<H4>Description</H4>
2405
2406<P>The <CODE>LogLevel</CODE> directive specifies the level of logging
2407for the <A HREF="#ErrorLog"><CODE>ErrorLog</CODE></A> file. The
2408following values are recognized (each level logs everything under the
2409preceding levels):
2410
2411<UL>
2412
2413 <LI><CODE>none</CODE> - Log nothing.
2414
2415 <LI><CODE>emerg</CODE> - Log emergency conditions that prevent the
2416 server from running.
2417
2418 <LI><CODE>alert</CODE> - Log alerts that must be handled immediately.
2419
2420 <LI><CODE>crit</CODE> - Log critical errors that don't prevent
2421 the server from running.
2422
2423 <LI><CODE>error</CODE> - Log general errors.
2424
2425 <LI><CODE>warn</CODE> - Log errors and warnings.
2426
2427 <LI><CODE>notice</CODE> - Log temporary error conditions.
2428
2429 <LI><CODE>info</CODE> - Log all requests and state changes (default).
2430
2431 <LI><CODE>debug</CODE> - Log basic debugging information.
2432
2433 <LI><CODE>debug2</CODE> - Log all debugging information.
2434
2435</UL>
2436
2437<!-- NEED 3in -->
2438<H3><A NAME="MaxClients">MaxClients</A></H3>
2439<HR>
2440
2441<H4>Examples</H4>
2442
2443<UL><PRE>
2444MaxClients 100
2445MaxClients 1024
2446</PRE></UL>
2447
2448<H4>Description</H4>
2449
2450<P>The <CODE>MaxClients</CODE> directive controls the maximum number of
2451simultaneous clients that will be allowed by the server. The default is
2452100 clients.</P>
2453
2454<CENTER><TABLE WIDTH="80%" BORDER="1" CELLPADDING="5" BGCOLOR="#cccccc">
2455<TR>
2456 <TD>
2457 <B>NOTE:</B>
2458
2459 <P>Since each print job requires a file descriptor for the
2460 status pipe, the CUPS server internally limits the
2461 <CODE>MaxClients</CODE> value to 1/3 of the available file descriptors
2462 to avoid possible problems when printing large numbers of jobs.
2463 </TD>
2464</TR>
2465</TABLE></CENTER>
2466
2467<!-- NEED 3in -->
2468<H3><A NAME="MaxCopies">MaxCopies</A></H3>
2469<HR>
2470
2471<H4>Examples</H4>
2472
2473<UL><PRE>
2474MaxCopies 100
2475MaxCopies 65535
2476</PRE></UL>
2477
2478<H4>Description</H4>
2479
2480<P>The <CODE>MaxCopies</CODE> directive controls the maximum
2481number of copies that a user can print of a job. The default is
2482100 copies.</P>
2483
2484<CENTER><TABLE WIDTH="80%" BORDER="1" CELLPADDING="5" BGCOLOR="#cccccc">
2485<TR>
2486 <TD>
2487 <B>NOTE:</B>
2488
2489 <P>Most HP PCL laser printers internally limit the
2490 number of copies to 100.
2491
2492 </TD>
2493</TR>
2494</TABLE></CENTER>
2495
2496<!-- NEED 3in -->
2497<H3><A NAME="MaxJobs">MaxJobs</A></H3>
2498<HR>
2499
2500<H4>Examples</H4>
2501
2502<UL><PRE>
2503MaxJobs 100
2504MaxJobs 9999
2505MaxJobs 0
2506</PRE></UL>
2507
2508<H4>Description</H4>
2509
2510<P>The <CODE>MaxJobs</CODE> directive controls the maximum number of jobs
2511that are kept in memory. Once the number of jobs reaches the limit, the
2512oldest completed job is automatically purged from the system to make room
2513for the new one. If all of the known jobs are still pending or active then
2514the new job will be rejected.
2515
2516<P>Setting the maximum to 0 disables this functionality. The default
2517setting is 0.
2518
2519<!-- NEED 3in -->
2520<H3><A NAME="MaxJobsPerPrinter">MaxJobsPerPrinter</A></H3>
2521<HR>
2522
2523<H4>Examples</H4>
2524
2525<UL><PRE>
2526MaxJobsPerPrinter 100
2527MaxJobsPerPrinter 9999
2528MaxJobsPerPrinter 0
2529</PRE></UL>
2530
2531<H4>Description</H4>
2532
2533<P>The <CODE>MaxJobsPerPrinter</CODE> directive controls the maximum number of active jobs
2534that are allowed for each printer or class. Once a printer or class reaches the limit, new jobs will be
2535rejected until one of the active jobs is completed, stopped, aborted, or cancelled.
2536
2537<P>Setting the maximum to 0 disables this functionality. The default
2538setting is 0.
2539
2540<!-- NEED 3in -->
2541<H3><A NAME="MaxJobsPerUser">MaxJobsPerUser</A></H3>
2542<HR>
2543
2544<H4>Examples</H4>
2545
2546<UL><PRE>
2547MaxJobsPerUser 100
2548MaxJobsPerUser 9999
2549MaxJobsPerUser 0
2550</PRE></UL>
2551
2552<H4>Description</H4>
2553
2554<P>The <CODE>MaxJobsPerUser</CODE> directive controls the maximum number of active jobs
2555that are allowed for each user. Once a user reaches the limit, new jobs will be
2556rejected until one of the active jobs is completed, stopped, aborted, or cancelled.
2557
2558<P>Setting the maximum to 0 disables this functionality. The default
2559setting is 0.
2560
2561<!-- NEED 3in -->
2562<H3><A NAME="MaxLogSize">MaxLogSize</A></H3>
2563<HR>
2564
2565<H4>Examples</H4>
2566
2567<UL><PRE>
2568MaxLogSize 1048576
2569MaxLogSize 1m
2570MaxLogSize 0
2571</PRE></UL>
2572
2573<H4>Description</H4>
2574
2575<P>The <CODE>MaxLogSize</CODE> directive controls the maximum size of each
2576log file. Once a log file reaches or exceeds the maximum size it is closed
2577and renamed to <VAR>filename.O</VAR>. This allows you to rotate the logs
2578automatically. The default size is 1048576 bytes (1MB).
2579
2580<P>Setting the maximum size to 0 disables log rotation.
2581
2582<!-- NEED 3in -->
2583<H3><A NAME="MaxRequestSize">MaxRequestSize</A></H3>
2584<HR>
2585
2586<H4>Examples</H4>
2587
2588<UL><PRE>
2589MaxRequestSize 10485760
2590MaxRequestSize 10m
2591MaxRequestSize 0
2592</PRE></UL>
2593
2594<H4>Description</H4>
2595
2596<P>The <CODE>MaxRequestSize</CODE> directive controls the maximum size of
2597print files, IPP requests, and HTML form data in HTTP POST requests. The
2598default limit is 0 which disables the limit check.
2599
2600<P>Also see the identical
2601<A HREF="#LimitRequestBody"><CODE>LimitRequestBody</CODE></A> directive.
2602
2603<!-- NEED 3in -->
2604<H3><A NAME="Order">Order</A></H3>
2605<HR>
2606
2607<H4>Examples</H4>
2608
2609<UL><PRE>
2610Order Allow,Deny
2611Order Deny,Allow
2612</PRE></UL>
2613
2614<H4>Description</H4>
2615
2616<P>The <CODE>Order</CODE> directive defines the default access control.
2617The following values are supported:
2618
2619<UL>
2620
2621 <LI><CODE>Allow,Deny</CODE> - Allow requests from all
2622 systems <I>except</I> for those listed in a <CODE>Deny</CODE>
2623 directive.
2624
2625 <LI><CODE>Deny,Allow</CODE> - Allow requests only from
2626 those listed in an <CODE>Allow</CODE> directive.
2627
2628</UL>
2629
2630<P>The <CODE>Order</CODE> directive must appear inside a
2631<A HREF="#Location"><CODE>Location</CODE></A> directive.
2632
2633<!-- NEED 3in -->
2634<H3><A NAME="PageLog">PageLog</A></H3>
2635<HR>
2636
2637<H4>Examples</H4>
2638
2639<UL><PRE>
2640PageLog /var/log/cups/page_log
2641PageLog /var/log/cups/page_log-%s
2642PageLog syslog
2643</PRE></UL>
2644
2645<H4>Description</H4>
2646
2647<P>The <CODE>PageLog</CODE> directive sets the name of the page log
2648file. If the filename is not absolute then it is assumed to be relative
2649to the <A HREF="#ServerRoot"><CODE>ServerRoot</CODE></A> directory. The
2650default page log file is <VAR>/var/log/cups/page_log</VAR>.
2651
2652<P>The server name can be included in the filename by using
2653<CODE>%s</CODE> in the name.
2654
2655<P>The special name "syslog" can be used to send the page information
2656to the system log instead of a plain file.
2657
2658<!-- NEED 3in -->
2659<H3><A NAME="Port">Port</A></H3>
2660<HR>
2661
2662<H4>Examples</H4>
2663
2664<UL><PRE>
2665Port 631
2666Port 80
2667</PRE></UL>
2668
2669<H4>Description</H4>
2670
2671<P>The <CODE>Port</CODE> directive specifies a port to listen on.
2672Multiple <CODE>Port</CODE> lines can be specified to listen on multiple
2673ports. The default port is 631.
2674
2675<!-- NEED 3in -->
2676<H3><A NAME="PreserveJobHistory">PreserveJobHistory</A></H3>
2677<HR>
2678
2679<H4>Examples</H4>
2680
2681<UL><PRE>
2682PreserveJobHistory On
2683PreserveJobHistory Off
2684</PRE></UL>
2685
2686<H4>Description</H4>
2687
2688<P>The <CODE>PreserveJobHistory</CODE> directive controls whether
2689the history of completed, cancelled, or aborted print jobs is stored
2690on disk.
2691
2692<P>A value of <CODE>On</CODE> (the default) preserves job information
2693until the administrator purges it with the <CODE>cancel</CODE>
2694command.
2695
2696<P>A value of <CODE>Off</CODE> removes the job information as soon as
2697each job is completed, cancelled, or aborted.
2698
2699<!-- NEED 3in -->
2700<H3><A NAME="PreserveJobFiles">PreserveJobFiles</A></H3>
2701<HR>
2702
2703<H4>Examples</H4>
2704
2705<UL><PRE>
2706PreserveJobFiles On
2707PreserveJobFiles Off
2708</PRE></UL>
2709
2710<H4>Description</H4>
2711
2712<P>The <CODE>PreserveJobFiles</CODE> directive controls whether the
2713document files of completed, cancelled, or aborted print jobs are
2714stored on disk.
2715
2716<P>A value of <CODE>On</CODE> preserves job files until the
2717administrator purges them with the <CODE>cancel</CODE> command. Jobs
2718can be restarted (and reprinted) as desired until they are purged.
2719
2720<P>A value of <CODE>Off</CODE> (the default) removes the job files as
2721soon as each job is completed, cancelled, or aborted.
2722
2723<!-- NEED 3in -->
2724<H3><A NAME="Printcap">Printcap</A></H3>
2725<HR>
2726
2727<H4>Examples</H4>
2728
2729<UL><PRE>
2730Printcap
2731Printcap /etc/printcap
2732Printcap /etc/printers.conf
2733</PRE></UL>
2734
2735<H4>Description</H4>
2736
2737<P>The <CODE>Printcap</CODE> directive controls whether or not a
2738printcap file is automatically generated and updated with a list
2739of available printers. If specified with no value, then no
2740printcap file will be generated. The default is to generate a
2741file named <VAR>/etc/printcap</VAR>.
2742
2743<P>When a filename is specified (e.g. <VAR>/etc/printcap</VAR>), the
2744printcap file is written whenever a printer is added or removed. The
2745printcap file can then be used by applications that are hardcoded to
2746look at the printcap file for the available printers.
2747
2748<!-- NEED 3in -->
2749<H3><A NAME="PrintcapFormat">PrintcapFormat</A></H3>
2750<HR>
2751
2752<H4>Examples</H4>
2753
2754<UL><PRE>
2755PrintcapFormat BSD
2756PrintcapFormat Solaris
2757</PRE></UL>
2758
2759<H4>Description</H4>
2760
2761<P>The <CODE>PrintcapFormat</CODE> directive controls the output
2762format of the printcap file. The default is to generate a BSD
2763printcap file.
2764
2765<!-- NEED 3in -->
2766<H3><A NAME="PrintcapGUI">PrintcapGUI</A></H3>
2767<HR>
2768
2769<H4>Example</H4>
2770
2771<UL><PRE>
2772PrintcapGUI /usr/bin/glpoptions
2773</PRE></UL>
2774
2775<H4>Description</H4>
2776
2777<P>The <CODE>PrintcapGUI</CODE> directive sets the program to
2778use when displaying an option panel from an IRIX application
2779that uses the Impressario print API. The default program is the
2780ESP Print Pro "glpoptions" GUI.
2781
2782<P>The program must accept the <CODE>-d</CODE> option to specify
2783a printer and the <CODE>-o</CODE> option to specify one or more
2784options. After allowing the user to select/change options, the
2785program must then write the list of printing options without the
2786<CODE>-o</CODE> to the standard output.
2787
2788<!-- NEED 3in -->
2789<H3><A NAME="RemoteRoot">RemoteRoot</A></H3>
2790<HR>
2791
2792<H4>Examples</H4>
2793
2794<UL><PRE>
2795RemoteRoot remroot
2796RemoteRoot root
2797</PRE></UL>
2798
2799<H4>Description</H4>
2800
2801<P>The <CODE>RemoteRoot</CODE> directive sets the username for
2802unauthenticated root requests from remote hosts. The default
2803username is <VAR>remroot</VAR>. Setting <CODE>RemoteRoot</CODE>
2804to <VAR>root</VAR> effectively disables this security mechanism.
2805
2806<!-- NEED 3in -->
2807<H3><A NAME="RequestRoot">RequestRoot</A></H3>
2808<HR>
2809
2810<H4>Examples</H4>
2811
2812<UL><PRE>
2813RequestRoot /var/spool/cups
2814RequestRoot /foo/bar/spool/cups
2815</PRE></UL>
2816
2817<H4>Description</H4>
2818
2819<P>The <CODE>RequestRoot</CODE> directive sets the directory for
2820incoming IPP requests and HTML forms. If an absolute path is not
2821provided then it is assumed to be relative to the
2822<A HREF="#ServerRoot"><CODE>ServerRoot</CODE></A> directory. The
2823default request directory is <VAR>/var/spool/cups</VAR>.
2824
2825<!-- NEED 4in -->
2826<H3><A NAME="Require">Require</A></H3>
2827<HR>
2828
2829<H4>Examples</H4>
2830
2831<UL><PRE>
2832Require group foo bar
2833Require user john mary
2834Require valid-user
2835</PRE></UL>
2836
2837<H4>Description</H4>
2838
2839<P>The <CODE>Require</CODE> directive specifies that
2840authentication is required for the resource. The
2841<CODE>group</CODE> keyword specifies that the authenticated user
2842must be a member of one or more of the named groups that follow.
2843
2844<P>The <CODE>user</CODE> keyboard specifies that the
2845authenticated user must be one of the named users that follow.
2846
2847<P>The <CODE>valid-user</CODE> keyword specifies that any
2848authenticated user may access the resource.
2849
2850<P>The default is to do no authentication. This directive must
2851appear inside a <A HREF="#Location"><CODE>Location</CODE></A>
2852directive.
2853
2854<!-- NEED 3in -->
2855<H3><A NAME="RIPCache">RIPCache</A></H3>
2856<HR>
2857
2858<H4>Examples</H4>
2859
2860<UL><PRE>
2861RIPCache 8m
2862RIPCache 1g
2863RIPCache 2048k
2864</PRE></UL>
2865
2866<H4>Description</H4>
2867
2868<P>The <CODE>RIPCache</CODE> directive sets the size of the memory
2869cache used by Raster Image Processor ("RIP") filters such as
2870<CODE>imagetoraster</CODE> and <CODE>pstoraster</CODE>. The size can
2871be suffixed with a "k" for kilobytes, "m" for megabytes, or
2872"g" for gigabytes. The default cache size is "8m", or 8 megabytes.
2873
2874<!-- NEED 3in -->
2875<H3><A NAME="RootCertDuration">RootCertDuration</A></H3>
2876<HR>
2877
2878<H4>Examples</H4>
2879
2880<UL><PRE>
2881RootCertDuration 300
2882RootCertDuration 0
2883</PRE></UL>
2884
2885<H4>Description</H4>
2886
2887<P>The <CODE>RootCertDuration</CODE> directive controls the
2888interval between updates of the root authentication certificate.
2889The default is <CODE>300</CODE> seconds which updates the root
2890certificate approximately once every 5 minutes. Set the interval
2891to 0 to disable certificate updates entirely.
2892
2893
2894<!-- NEED 3in -->
2895<H3><A NAME="RunAsUser">RunAsUser</A></H3>
2896<HR>
2897
2898<H4>Examples</H4>
2899
2900<UL><PRE>
2901RunAsUser Yes
2902RunAsUser No
2903</PRE></UL>
2904
2905<H4>Description</H4>
2906
2907<P>The <CODE>RunAsUser</CODE> directive controls whether the
2908scheduler runs as the unpriviledged user account (usually <CODE>lp</CODE>).
2909The default is <CODE>No</CODE> which leaves the scheduler running as
2910the <CODE>root</CODE> user.
2911
2912<P><B>Note:</B> Running as a non-priviledged user may prevent
2913LPD and locally connected printers from working due to
2914permission problems. The <CODE>lpd</CODE> backend will
2915automatically use a non-priviledged mode that is not 100%
2916compliant with RFC 1179. The <CODE>parallel</CODE>,
2917<CODE>serial</CODE>, and <CODE>usb</CODE> backends will need
2918write access to the corresponding device files.
2919
2920<!-- NEED 3in -->
2921<H3><A NAME="Satisfy">Satisfy</A></H3>
2922<HR>
2923
2924<H4>Examples</H4>
2925
2926<UL><PRE>
2927Satisfy all
2928Satisfy any
2929</PRE></UL>
2930
2931<H4>Description</H4>
2932
2933<P>The <CODE>Satisfy</CODE> directive specifies whether all
2934conditions must be satisfied to allow access to the resource. If
2935set to <CODE>all</CODE>, then all authentication and access
2936control conditions must be satified to allow access.
2937
2938<P>Setting <CODE>Satisfy</CODE> to <CODE>any</CODE> allows a user to
2939gain access if the authentication or access control requirements are
2940satisfied. For example, you might require authentication for remote
2941access, but allow local access without authentication.
2942
2943<P>The default is <CODE>all</CODE>. This directive must appear
2944inside a <A HREF="#Location"><CODE>Location</CODE></A>
2945directive.
2946
2947<!-- NEED 3in -->
2948<H3><A NAME="ServerAdmin">ServerAdmin</A></H3>
2949<HR>
2950
2951<H4>Examples</H4>
2952
2953<UL><PRE>
2954ServerAdmin user@host
2955ServerAdmin root@foo.bar.com
2956</PRE></UL>
2957
2958<H4>Description</H4>
2959
2960<P>The <CODE>ServerAdmin</CODE> directive identifies the email address for the
2961administrator on the system. By default the administrator email address is
2962<CODE>root@server</CODE>, where <CODE>server</CODE> is the server name.
2963
2964<!-- NEED 3in -->
2965<H3><A NAME="ServerBin">ServerBin</A></H3>
2966<HR>
2967
2968<H4>Examples</H4>
2969
2970<UL><PRE>
2971ServerBin /usr/lib/cups
2972ServerBin /foo/bar/lib/cups
2973</PRE></UL>
2974
2975<H4>Description</H4>
2976
2977<P>The <CODE>ServerBin</CODE> directive sets the directory for
2978server-run executables. If an absolute path is not provided then it is
2979assumed to be relative to the
2980<A HREF="#ServerRoot"><CODE>ServerRoot</CODE></A> directory. The
2981default executable directory is <VAR>/usr/lib/cups</VAR>.
2982
2983<!-- NEED 3in -->
2984<H3><A NAME="ServerCertificate">ServerCertificate</A></H3>
2985<HR>
2986
2987<H4>Examples</H4>
2988
2989<UL><PRE>
2990ServerCertificate /etc/cups/ssl/server.crt
2991</PRE></UL>
2992
2993<H4>Description</H4>
2994
2995<P>The <CODE>ServerCertificate</CODE> directive specifies the
2996location of the SSL certificate file used by the server when
2997negotiating encrypted connections. The certificate must not be
2998encrypted (password protected) since the scheduler normally runs
2999in the background and will be unable to ask for a password.
3000The default certificate file is <VAR>/etc/cups/ssl/server.crt</VAR>.
3001
3002<!-- NEED 3in -->
3003<H3><A NAME="ServerKey">ServerKey</A></H3>
3004<HR>
3005
3006<H4>Examples</H4>
3007
3008<UL><PRE>
3009ServerKey /etc/cups/ssl/server.key
3010</PRE></UL>
3011
3012<H4>Description</H4>
3013
3014<P>The <CODE>ServerKey</CODE> directive specifies the location
3015of the SSL private key file used by the server when negotiating
3016encrypted connections. The default key file is
3017<VAR>/etc/cups/ssl/server.crt</VAR>.
3018
3019<!-- NEED 3in -->
3020<H3><A NAME="ServerName"></A>ServerName</H3>
3021<HR>
3022
3023<H4>Examples</H4>
3024
3025<UL><PRE>
3026ServerName foo.domain.com
3027ServerName myserver.domain.com
3028</PRE></UL>
3029
3030<H4>Description</H4>
3031
3032<P>The <CODE>ServerName</CODE> directive specifies the hostname that is
3033reported to clients. By default the server name is the hostname.
3034
3035<!-- NEED 3in -->
3036<H3><A NAME="ServerRoot">ServerRoot</A></H3>
3037<HR>
3038
3039<H4>Examples</H4>
3040
3041<UL><PRE>
3042ServerRoot /etc/cups
3043ServerRoot /foo/bar/cups
3044</PRE></UL>
3045
3046<H4>Description</H4>
3047
3048<P>The <CODE>ServerRoot</CODE> directive specifies the absolute path to
3049the server configuration and state files. It is also used to resolve
3050relative paths in the <VAR>cupsd.conf</VAR> file. The default server
3051directory is <VAR>/etc/cups</VAR>.
3052
3053<!-- NEED 3in -->
3054<H3><A NAME="ServerTokens">ServerTokens</A></H3>
3055<HR>
3056
3057<H4>Examples</H4>
3058
3059<UL><PRE>
3060ServerTokens None
3061ServerTokens ProductOnly
3062ServerTokens Major
3063ServerTokens Minor
3064ServerTokens Minimal
3065ServerTokens OS
3066ServerTokens Full
3067</PRE></UL>
3068
3069<H4>Description</H4>
3070
3071<P>The <CODE>ServerTokens</CODE> directive specifies the information
3072that is included in the Server header of HTTP responses. The default value
3073is <tt>Minor</tt> which generates "CUPS/1.1".
3074
3075<!-- NEED 3in -->
3076<H3><A NAME="SSLListen">SSLListen</A></H3>
3077<HR>
3078
3079<H4>Examples</H4>
3080
3081<UL><PRE>
3082SSLListen 127.0.0.1:443
3083SSLListen 192.0.2.1:443
3084</PRE></UL>
3085
3086<H4>Description</H4>
3087
3088<P>The <CODE>SSLListen</CODE> directive specifies a network
3089address and port to listen for secure connections. Multiple
3090<CODE>SSLListen</CODE> directives can be provided to listen on
3091multiple addresses.
3092
3093<P>The <CODE>SSLListen</CODE> directive is similar to the
3094<A HREF="#SSLPort"><CODE>SSLPort</CODE></A> directive but allows
3095you to restrict access to specific interfaces or networks.
3096
3097<!-- NEED 3in -->
3098<H3><A NAME="SSLPort">SSLPort</A></H3>
3099<HR>
3100
3101<H4>Examples</H4>
3102
3103<UL><PRE>
3104SSLPort 443
3105</PRE></UL>
3106
3107<H4>Description</H4>
3108
3109<P>The <CODE>SSLPort</CODE> directive specifies a port to listen
3110on for secure connections. Multiple <CODE>SSLPort</CODE> lines
3111can be specified to listen on multiple ports.
3112
3113<!-- NEED 3in -->
3114<H3><A NAME="SystemGroup">SystemGroup</A></H3>
3115<HR>
3116
3117<H4>Examples</H4>
3118
3119<UL><PRE>
3120SystemGroup sys
3121SystemGroup system
3122SystemGroup root
3123</PRE></UL>
3124
3125<H4>Description</H4>
3126
3127<P>The <CODE>SystemGroup</CODE> directive specifies the system
3128administration group for <CODE>System</CODE> authentication. More
3129information can be found later in this chapter in
3130<A HREF="#PRINTING_SECURITY">"Printing System Security"</A>.
3131
3132<!-- NEED 3in -->
3133<H3><A NAME="TempDir">TempDir</A></H3>
3134<HR>
3135
3136<H4>Examples</H4>
3137
3138<UL><PRE>
3139TempDir /var/tmp
3140TempDir /foo/bar/tmp
3141</PRE></UL>
3142
3143<H4>Description</H4>
3144
3145<P>The <CODE>TempDir</CODE> directive specifies an absolute path for
3146the directory to use for temporary files. The default directory is
3147<VAR>/var/tmp</VAR>.
3148
3149<P>Temporary directories must be world-writable and should have the
3150"sticky" permission bit enabled so that other users cannot delete
3151filter temporary files. The following commands will create an
3152appropriate temporary directory called <VAR>/foo/bar/tmp</VAR>:
3153
3154<UL><PRE>
3155<B>mkdir /foo/bar/tmp ENTER</B>
3156<B>chmod a+rwxt /foo/bar/tmp ENTER</B>
3157</PRE></UL>
3158
3159<!-- NEED 3in -->
3160<H3><A NAME="Timeout">Timeout</A></H3>
3161<HR>
3162
3163<H4>Examples</H4>
3164
3165<UL><PRE>
3166Timeout 300
3167Timeout 90
3168</PRE></UL>
3169
3170<H4>Description</H4>
3171
3172<P>The <CODE>Timeout</CODE> directive controls the amount of time to
3173wait before an active HTTP or IPP request times out. The default
3174timeout is 300 seconds.
3175
3176<!-- NEED 3in -->
3177<H3><A NAME="User">User</A></H3>
3178<HR>
3179
3180<H4>Examples</H4>
3181
3182<UL><PRE>
3183User lp
3184User guest
3185</PRE></UL>
3186
3187<H4>Description</H4>
3188
3189<P>The <CODE>User</CODE> directive specifies the UNIX user that
3190filter and CGI programs run as. The default user is <CODE>lp</CODE>.
3191
3192<!-- NEW PAGE -->
3193<H2><A NAME="PRINTING_SECURITY">Printing System Security</A></H2>
3194
3195<P>CUPS provides support for address, certificate, and password (Basic
3196and Digest) based authentication and access control. Certificate and
3197password authentication provide ways to limit access to individual
3198people or groups.
3199
3200<P>Address based access control allows you to limit access to specific
3201systems, networks, or domains. While this does not provide authentication,
3202it does allow you to limit the potential users of your system efficiently.
3203
3204<P>CUPS maintains a list of locations that have access control and/or
3205authentication enabled. Locations are specified using the
3206<A HREF="#Location"><CODE>Location</CODE></A> directive:
3207
3208<UL><PRE>
3209&lt;Location /resource&gt;
3210<A HREF="#AuthClass">AuthClass</A> ...
3211<A HREF="#AuthGroupName">AuthGroupName</A> ...
3212<A HREF="#AuthType">AuthType</A> ...
3213
3214<A HREF="#Order">Order</A> ...
3215<A HREF="#Allow">Allow</A> from ...
3216<A HREF="#Deny">Deny</A> from ...
3217&lt;/Location&gt;
3218</PRE></UL>
3219
3220<P>Locations generally follow the directory structure of the
3221<A HREF="#DocumentRoot"><CODE>DocumentRoot</CODE></A> directory, however
3222CUPS does have several virtual locations for administration, classes, jobs,
3223and printers:
3224
3225<CENTER><TABLE BORDER="1">
3226<TR>
3227 <TH>Location</TH>
3228 <TH>Description</TH>
3229</TR>
3230<TR>
3231 <TD>/admin</TD>
3232 <TD>The path for all administration operations.</TD>
3233</TR>
3234<TR>
3235 <TD>/classes</TD>
3236 <TD>The path for all classes.</TD>
3237</TR>
3238<TR>
3239 <TD>/classes/name</TD>
3240 <TD>The resource for class <CODE>name</CODE>.</TD>
3241</TR>
3242<TR>
3243 <TD>/jobs</TD>
3244 <TD>The path for all jobs.</TD>
3245</TR>
3246<TR>
3247 <TD>/jobs/id</TD>
3248 <TD>The resource for job <CODE>id</CODE>.</TD>
3249</TR>
3250<TR>
3251 <TD>/printers</TD>
3252 <TD>The path for all printers.</TD>
3253</TR>
3254<TR>
3255 <TD>/printers/name</TD>
3256 <TD>The path for printer <CODE>name</CODE>.</TD>
3257</TR>
3258<TR>
3259 <TD>/printers/name.ppd</TD>
3260 <TD>The PPD file path for printer <CODE>name</CODE>.</TD>
3261</TR>
3262</TABLE></CENTER>
3263
3264<H3><A NAME="CERTIFICATES">Authentication Using Certificates</A></H3>
3265
3266<P>CUPS supports a local certificate-based authentication scheme that
3267can be used in place of <CODE>Basic</CODE> or <CODE>Digest</CODE>
3268authentication by clients connecting through the <CODE>localhost</CODE>
3269interface. Certificate authentication is not supported or allowed from
3270clients on any other interface.
3271
3272<P>Certificates are 128-bit random numbers that refer to an internal
3273authentication record in the server. A client connecting via the
3274<CODE>localhost</CODE> interface sends a request with an
3275authorization header of:
3276
3277<UL><PRE>
3278Authorization: Local 0123456789ABCDEF0123456789ABCDEF
3279</PRE></UL>
3280
3281<P>The server then looks up the local certificate and authenticates
3282using the username associated with it.
3283
3284<P>Certificates are generated by the server automatically and stored in
3285the <VAR>/etc/cups/certs</VAR> directory using the process ID of the
3286CGI program started by the server. Certificate files are only readable
3287by the <A HREF="#User"><CODE>User</CODE></A> and
3288<A HREF="#Group"><CODE>Group</CODE></A> defined in the
3289<VAR>cupsd.conf</VAR> file. When the CGI program ends the certificate
3290is removed and invalidated automatically.
3291
3292<P>The special file <VAR>/etc/cups/certs/0</VAR> defines the <I>root
3293certificate</I> which can be used by any client running as the super-user
3294or another user that is part of the group defined by the
3295<A HREF="#SystemGroup"><CODE>SystemGroup</CODE></A> directive. The
3296root certificate is automatically regenerated every 5 minutes.
3297
3298<H3>Using Basic Authentication</H3>
3299
3300<P>Basic authentication uses UNIX users and passwords to authenticate
3301access to resources such as printers and classes, and to limit access
3302to administrative functions.</P>
3303
3304<CENTER><TABLE WIDTH="80%" BORDER="1" CELLPADDING="5" BGCOLOR="#cccccc">
3305<TR>
3306 <TD>
3307 <B>NOTE:</B>
3308
3309 <P>Basic authentication sends the username and password Base64
3310 encoded from the client to the server, so it offers no
3311 protection against eavesdropping. This means that a malicious
3312 user can monitor network packets and discover valid users and
3313 passwords that could result in a serious compromise in network
3314 security. Use Basic authentication with extreme care.
3315 </TD>
3316</TR>
3317</TABLE></CENTER>
3318
3319<P>The CUPS implementation of Basic authentication does not allow access
3320through user accounts without a password. If you try to authenticate
3321using an account without a password, your access will be immediately
3322blocked.
3323
3324<P>Once a valid username and password is authenticated by CUPS, any
3325additional group membership requirements are checked.</P>
3326
3327<CENTER><TABLE WIDTH="80%" BORDER="1" CELLPADDING="5" BGCOLOR="#cccccc">
3328<TR>
3329 <TD>
3330 <B>NOTE:</B>
3331
3332 <P>The root user is considered by CUPS to be a member of every
3333 group.
3334 </TD>
3335</TR>
3336</TABLE></CENTER>
3337
3338<!-- NEED 1in -->
3339<P>Use the <CODE>AuthType</CODE> directive to enable Basic authentication:
3340
3341<UL><PRE>
3342AuthType Basic
3343</PRE></UL>
3344
3345<!-- NEED 7in -->
3346<H3>Using Digest Authentication</H3>
3347
3348<P>Digest authentication uses users and passwords defined in the
3349<VAR>/etc/cups/passwd.md5</VAR> file to authenticate access to
3350resources such as printers and classes, and to limit access to
3351administrative functions.</P>
3352
3353<CENTER><TABLE WIDTH="80%" BORDER="1" CELLPADDING="5" BGCOLOR="#cccccc">
3354<TR>
3355 <TD>
3356 <B>NOTE:</B>
3357
3358 <P>Unlike Basic authentication, Digest passes the MD5 sum
3359 (basically a complicated checksum) of the username and password
3360 instead of the strings themselves. Also, Digest authentication
3361 does not use the UNIX password file, so if an attacker does
3362 discover the original password it is less likely to result in a
3363 serious security problem so long as you use a different UNIX
3364 password than the corresponding Digest password.
3365
3366 <P>The current CUPS implementation of Digest authentication
3367 uses the client's hostname or IP address for the "nonce" value.
3368 The nonce value is an additional string added to the username
3369 and password to make guessing the password more difficult. The
3370 server checks that the nonce value matches the client's hostname
3371 or address and rejects the MD5 sum if it doesn't. Future versions
3372 of CUPS will support Digest "session" authentication which adds
3373 the request data to the MD5 sum, providing even better
3374 authentication and security.
3375
3376 <P>Digest authentication does not guarantee that an attacker
3377 cannot gain unauthorized access, but it is safer than Basic
3378 authentication and should be used in place of Basic
3379 authentication whenever possible. <B>Support for Digest
3380 authentication in web browsers is not yet universally
3381 available.</B>
3382 </TD>
3383</TR>
3384</TABLE></CENTER>
3385
3386<!-- NEED 2in -->
3387<P>The <CODE>lppasswd(1)</CODE> command is used to add, change, or
3388remove accounts from the <VAR>passwd.md5</VAR> file. To add a
3389user to the default system group, type:
3390
3391<UL><PRE>
3392<B>lppasswd -a user ENTER</B>
3393Password: <B>(password) ENTER</B> [password is not echoed]
3394Password again: <B>(password) ENTER</B> [password is not echoed]
3395</PRE></UL>
3396
3397<!-- NEED 2in -->
3398<P>Once added, a user can change his/her password by typing:
3399
3400<UL><PRE>
3401<B>lppasswd ENTER</B>
3402Old password: <B>(password) ENTER</B> [password is not echoed]
3403Password: <B>(password) ENTER</B> [password is not echoed]
3404Password again: <B>(password) ENTER</B> [password is not echoed]
3405</PRE></UL>
3406
3407<!-- NEED 1in -->
3408<P>To remove a user from the password file, type:
3409
3410<UL><PRE>
3411<B>lppasswd -x user ENTER</B>
3412</PRE></UL>
3413
3414<P>Once a valid username and password is authenticated by CUPS, any
3415additional group membership requirements are checked.</P>
3416
3417<CENTER><TABLE WIDTH="80%" BORDER="1" CELLPADDING="5" BGCOLOR="#cccccc">
3418<TR>
3419 <TD>
3420 <B>NOTE:</B>
3421
3422 <P>The root user is considered by CUPS to be a member of every
3423 group.
3424 </TD>
3425</TR>
3426</TABLE></CENTER>
3427
3428<P>Use the <CODE>AuthType</CODE> directive to enable Digest authentication:
3429
3430<UL><PRE>
3431AuthType Digest
3432</PRE></UL>
3433
3434<H3>System and Group Authentication</H3>
3435
3436<P>The <A HREF="#AuthClass"><CODE>AuthClass</CODE></A> directive controls
3437the level of authentication to perform. <CODE>System</CODE> and
3438<CODE>Group</CODE> authentication extend the normal user-based authentication
3439to require membership in a UNIX group. For <CODE>System</CODE> authentication
3440each user must belong to the <CODE>sys</CODE>, <CODE>system</CODE>, or
3441<CODE>root</CODE> group; the actual group depends on the operating system.
3442
3443<P>For <CODE>Group</CODE> authentication each user must belong to the
3444group named by the <A HREF="#AuthGroupName"><CODE>AuthGroupName</CODE></A>
3445directive:
3446
3447<UL><PRE>
3448&lt;Location /path&gt;
3449AuthType Digest
3450AuthClass Group
3451AuthGroupName mygroup
3452&lt;/Location&gt;
3453</PRE></UL>
3454
3455<P>The named group must be a valid UNIX user group, usually defined in the
3456<VAR>/etc/group</VAR> or <VAR>/etc/netgroup</VAR> files. Additionally, when
3457using Digest authentication you need to create user accounts with the named
3458group:
3459
3460<UL><PRE>
3461<B>lppasswd -g mygroup -a user ENTER</B>
3462Password: <B>(password) ENTER</B> [password is not echoed]
3463Password again: <B>(password) ENTER</B> [password is not echoed]
3464</PRE></UL>
3465
3466<!-- NEW PAGE -->
3467<H2><A NAME="PRINTER_ACCOUNTING">Printer Accounting</A></H2>
3468
3469<P>CUPS maintains a log of all accesses, errors, and
3470pages that are printed. The log files are normally stored in the
3471<VAR>/var/log/cups</VAR> directory. You can change this by
3472editing the <VAR>/etc/cups/cupsd.conf</VAR> configuration file.
3473
3474<H3>The access_log File</H3>
3475
3476<P>The <VAR>access_log</VAR> file lists each HTTP resource that is accessed
3477by a web browser or CUPS/IPP client. Each line is in the so-called "Common
3478Log Format" used by many web servers and web reporting tools:
3479
3480<UL><PRE>
3481host group user date-time \"method resource version\" status bytes
3482
3483127.0.0.1 - - [20/May/1999:19:20:29 +0000] "POST /admin/ HTTP/1.1" 401 0
3484127.0.0.1 - mike [20/May/1999:19:20:31 +0000] "POST /admin/ HTTP/1.1" 200 0
3485</PRE></UL>
3486
3487<P>The <I>host</I> field will normally only be an IP address unless you
3488have enabled the <A HREF="#HostNameLookups"><CODE>HostNameLookups</CODE></A>
3489directive in the <VAR>cupsd.conf</VAR> file.
3490
3491<P>The <I>group</I> field always contains "-" in CUPS.
3492
3493<P>The <I>user</I> field is the authenticated username of the requesting user.
3494If no username and password is supplied for the request then this field
3495contains "-".
3496
3497<P>The <I>date-time</I> field is the date and time of the request in local time
3498and is in the format:
3499
3500<UL><PRE>
3501[DD/MON/YYYY:HH:MM:SS +ZZZZ]
3502</PRE></UL>
3503
3504<P>where <I>ZZZZ</I> is the timezone offset in hours and minutes from Greenwich
3505Mean Time (a.k.a. GMT a.k.a. ZULU.)
3506
3507<P>The <I>method</I> field is the HTTP method used ("GET", "PUT", "POST", etc.)
3508
3509<P>The <I>resource</I> field is the filename of the requested resource.
3510
3511<P>The <I>version</I> field is the HTTP specification version used by the
3512client. For CUPS clients this will always be "HTTP/1.1".
3513
3514<P>The <I>status</I> field contains the HTTP result status of the
3515request. Usually it is "200", but other HTTP status codes are possible.
3516For example, 401 is the "unauthorized access" status in the example
3517above.
3518
3519<P>The <I>bytes</I> field contains the number of bytes in the request.
3520For POST requests the <I>bytes</I> field contains the number of bytes
3521that was received from the client.
3522
3523<H3>The error_log File</H3>
3524
3525<P>The <VAR>error_log</VAR> file lists messages from the scheduler (errors,
3526warnings, etc.):
3527
3528<UL><PRE>
3529level date-time message
3530
3531I [20/May/1999:19:18:28 +0000] Job 1 queued on 'DeskJet' by 'mike'.
3532I [20/May/1999:19:21:02 +0000] Job 2 queued on 'DeskJet' by 'mike'.
3533I [20/May/1999:19:22:24 +0000] Job 2 was cancelled by 'mike'.
3534</PRE></UL>
3535
3536<P>The <I>level</I> field contains the type of message:
3537
3538<UL>
3539
3540 <LI><CODE>E</CODE> - An error occurred.
3541
3542 <LI><CODE>W</CODE> - The server was unable to perform some action.
3543
3544 <LI><CODE>I</CODE> - Informational message.
3545
3546 <LI><CODE>D</CODE> - Debugging message.
3547
3548</UL>
3549
3550<P>The <I>date-time</I> field contains the date and time of when the page
3551started printing. The format of this field is identical to the <I>data-time</I>
3552field in the <VAR>access_log</VAR> file.
3553
3554<P>The <I>message</I> fields contains a free-form textual message.
3555
3556<H3>The page_log File</H3>
3557
3558<P>The <VAR>page_log</VAR> file lists each page that is sent to a printer.
3559Each line contains the following information:
3560
3561<UL><PRE>
3562printer user job-id date-time page-number num-copies job-billing
3563
3564DeskJet root 2 [20/May/1999:19:21:05 +0000] 1 0 acme-123
3565</PRE></UL>
3566
3567<P>The <I>printer</I> field contains the name of the printer that
3568printed the page. If you send a job to a printer class, this field will
3569contain the name of the printer that was assigned the job.
3570
3571<P>The <I>user</I> field contains the name of the user (the IPP
3572<CODE>requesting-user-name</CODE> attribute) that submitted this file for
3573printing.
3574
3575<P>The <I>job-id</I> field contains the job number of the page being printed.
3576Job numbers are reset to 1 whenever the CUPS server is started, so don't depend
3577on this number being unique!
3578
3579<P>The <I>date-time</I> field contains the date and time of when the page
3580started printing. The format of this field is identical to the <I>data-time</I>
3581field in the <VAR>access_log</VAR> file.
3582
3583<P>The <I>page-number</I> and <I>num-pages</I> fields contain the page number
3584and number of copies being printed of that page. For printer that can not
3585produce copies on their own, the <I>num-pages</I> field will always be 1.
3586
3587<P>The <I>job-billing</I> field contains a copy of the
3588<CODE>job-billing</CODE> attribute provided with the IPP
3589<CODE>create-job</CODE> or <CODE>print-job</CODE> requests or "-" if none
3590was provided.
3591
3592<!-- NEW PAGE -->
3593<H2><A NAME="FILE_TYPING_FILTERING">File Typing and Filtering</A></H2>
3594
3595<P>CUPS provides a MIME-based file typing and filtering mechanism to
3596convert files to a printable format for each printer. On startup the
3597CUPS server reads MIME database files from the <VAR>/etc/cups</VAR>
3598directory (or a directory specified by the
3599<A HREF="#ServerRoot"><CODE>ServerRoot</CODE></A> directive) to build
3600a file type and conversion database in memory. These database files are
3601plain ASCII text and can be edited with your favorite text editor.
3602
3603<P>The <VAR>mime.types</VAR> and <VAR>mime.convs</VAR> files define the
3604standard file types and filters that are available on the system.
3605
3606<H3>mime.types</H3>
3607
3608<P>The <VAR>mime.types</VAR> file defines the known file types. Each line
3609of the file starts with the MIME type and may be followed by one or
3610more file type recognition rules. For example, the
3611<CODE>text/html</CODE> file type is defined as:
3612
3613<UL><PRE>
3614text/html html htm \
3615 printable(0,1024) + \
3616 (string(0,"&lt;HTML&gt;") string(0,"&lt;!DOCTYPE"))
3617</PRE></UL>
3618
3619<P>The first two rules say that any file with an extension of
3620<VAR>.html</VAR> or <VAR>.htm</VAR> is a HTML file. The third rule
3621says that any file whose first 1024 characters are printable text and
3622starts with the strings <CODE>&lt;HTML&gt;</CODE> or
3623<CODE>&lt;!DOCTYPE</CODE> is a HTML file as well.
3624
3625<P>The first two rules deal solely with the name of the file being
3626typed. This is useful when the original filename is known, however for
3627print files the server doesn't have a filename to work with. The third
3628rule takes care of this possibility and automatically figures out the
3629file type based upon the contents of the file instead.
3630
3631<P>The available tests are:
3632
3633<UL>
3634
3635 <LI><CODE>( expr )</CODE> - Parenthesis for expression grouping
3636
3637 <LI><CODE>+</CODE> - Logical AND
3638
3639 <LI><CODE>,</CODE> or whitespace - Logical OR
3640
3641 <LI><CODE>!</CODE> - Logical NOT
3642
3643 <LI><CODE>match("pattern")</CODE> - Pattern match on filename
3644
3645 <LI><CODE>extension</CODE> - Pattern match on "*.extension"
3646
3647 <LI><CODE>ascii(offset,length)</CODE> - True if bytes are valid
3648 printable ASCII (CR, NL, TAB, BS, 32-126)
3649
3650 <LI><CODE>printable(offset,length)</CODE> - True if bytes are
3651 printable 8-bit chars (CR, NL, TAB, BS, 32-126, 160-254)
3652
3653 <LI><CODE>string(offset,"string")</CODE> - True if bytes are
3654 identical to string
3655
3656 <LI><CODE>contains(offset,range,"string")</CODE> - True if the
3657 range of bytes contains the string
3658
3659 <LI><CODE>char(offset,value)</CODE> - True if byte is identical
3660
3661 <LI><CODE>short(offset,value)</CODE> - True if 16-bit integer
3662 is identical (network or "big-endian" byte order)
3663
3664 <LI><CODE>int(offset,value)</CODE> - True if 32-bit integer is
3665 identical (network or "big-endian" byte order)
3666
3667 <LI><CODE>locale("string")</CODE> - True if current locale
3668 matches string
3669
3670</UL>
3671
3672<P>All numeric values can be in decimal (123), octal (0123), or hexadecimal
3673(0x123) as desired.
3674
3675<!-- NEED 2.5in -->
3676<P>Strings can be in quotes, all by themselves, as a string
3677of hexadecimal values, or some combination:
3678
3679<UL><PRE>
3680"string"
3681'string'
3682string
3683&lt;737472696e67&gt;
3684&lt;7374&gt;ring
3685</PRE></UL>
3686
3687<P>As shown in the <CODE>text/html</CODE> example, rules can continue on
3688multiple lines using the backslash (\) character. A more complex example is
3689the <CODE>image/jpeg</CODE> rules:
3690
3691<UL><PRE>
3692image/jpeg jpeg jpg jpe string(0,&lt;FFD8FF&gt;) &amp;&amp;\
3693 (char(3,0xe0) char(3,0xe1) char(3,0xe2) char(3,0xe3)\
3694 char(3,0xe4) char(3,0xe5) char(3,0xe6) char(3,0xe7)\
3695 char(3,0xe8) char(3,0xe9) char(3,0xea) char(3,0xeb)\
3696 char(3,0xec) char(3,0xed) char(3,0xee) char(3,0xef))
3697</PRE></UL>
3698
3699<P>This rule states that any file with an extension of
3700<VAR>.jpeg</VAR>, <VAR>.jpg</VAR>, or <VAR>.jpe</VAR> is a JPEG file.
3701In addition, any file starting with the hexadecimal string
3702<CODE>&lt;FFD8FF&gt;</CODE> (JPEG Start-Of-Image) followed by a
3703character between and including <CODE>0xe0</CODE> and <CODE>0xef</CODE>
3704(JPEG APPn markers) is also a JPEG file.
3705
3706<H3>mime.convs</H3>
3707
3708<P>The <VAR>mime.convs</VAR> file defines all of the filter programs that
3709are known to the system. Each line consists of:
3710
3711<UL><PRE>
3712source destination cost program
3713
3714text/plain application/postscript 50 texttops
3715application/vnd.cups-postscript application/vnd.cups-raster 50 pstoraster
3716image/* application/vnd.cups-postscript 50 imagetops
3717image/* application/vnd.cups-raster 50 imagetoraster
3718</PRE></UL>
3719
3720<P>The <I>source</I> field is a MIME type, optionally using a wildcard for
3721the super-type or sub-type (e.g. "text/plain", "image/*", "*/postscript").
3722
3723<P>The <I>destination</I> field is a MIME type defined in the
3724<VAR>mime.types</VAR> file.
3725
3726<P>The <I>cost</I> field defines a relative cost for the filtering
3727operation from 1 to 100. The cost is used to choose between two
3728different sets of filters when converting a file. For example, to convert
3729from <CODE>image/jpeg</CODE> to <CODE>application/vnd.cups-raster</CODE>,
3730you could use the <CODE>imagetops</CODE> and <CODE>pstoraster</CODE>
3731filters for a total cost of 100, or the <CODE>imagetoraster</CODE> filter
3732for a total cost of 50.
3733
3734<P>The <I>program</I> field defines the filter program to run; the
3735special program "-" can be used to make two file types equivalent. The
3736program must accept the standard filter arguments and environment
3737variables described in the CUPS Interface Design Description and CUPS
3738Software Programmers Manual:
3739
3740<UL><PRE>
3741program job user title options [filename]
3742</PRE></UL>
3743
3744<P>If specified, the <I>filename</I> argument defines a file to read
3745when filtering, otherwise the filter must read from the standard input.
3746All filtered output must go to the standard output.
3747
3748<!-- NEED 4in -->
3749<H3>Adding Filetypes and Filters</H3>
3750
3751<P>Adding a new file type or filter is fairly straight-forward. Rather
3752than adding the new type and filter to the <VAR>mime.types</VAR> and
3753<VAR>mime.convs</VAR> files which are overwritten when you upgrade to a
3754new version of CUPS, you simple need to create new files with
3755<VAR>.types</VAR> and <VAR>.convs</VAR> extensions in the
3756<VAR>/etc/cups</VAR> directory. We recommend that you use the product
3757or format name, e.g.:
3758
3759<UL><PRE>
3760myproduct.types
3761myproduct.convs
3762</PRE></UL>
3763
3764<P>If you are providing a filter for a common file format or printer,
3765add the company or author name:
3766
3767<UL><PRE>
3768acme-msword.types
3769acme.msword.convs
3770</PRE></UL>
3771
3772<P>This will help to prevent name collisions if you install many
3773different file types and filters.
3774
3775<P>Once you choose the names for these files, create them using your
3776favorite text editor as described earlier in this chapter. Once you
3777have created the files, restart the <CODE>cupsd</CODE> process as
3778described earlier in <A HREF="#RESTARTING">"Restarting the CUPS Server"</A>.
3779
3780<H3>Printer Drivers and PPD Files</H3>
3781
3782<P>Most CUPS printer drivers utilize one or more printer-specific filters
3783and a PPD file for each printer model. Printer driver filters are registered
3784via the PPD file using <CODE>cupsFilter</CODE> attributes:
3785
3786<UL><PRE>
3787*cupsFilter: "application/vnd.cups-raster 0 rastertohp"
3788</PRE></UL>
3789
3790<P>The filter is specified using the source file type only; the destination
3791file type is assumed to be <CODE>printer/name</CODE> - suitable for sending
3792to the printer.
3793
3794<H3>Writing Your Own Filter or Printer Driver</H3>
3795
3796<P>CUPS supports an unlimited number of file formats and filters, and can
3797handle any printer. If you'd like to write a filter or printer driver for
3798your favorite file format or printer, consult the CUPS Software Programmers
3799Manual for step-by-step instructions.
3800
3801
3802<H1 ALIGN="RIGHT"><A NAME="PRINTING_OTHER">7 - Printing with Other Systems</A></H1>
3803
3804<P>This chapter describes how to print from client systems that use the
3805LPD, Mac OS, or Windows printing protocols.
3806
3807<H2>The Basics</H2>
3808
3809<P>CUPS is based on the IPP protocol, so any system that supports IPP
3810can send jobs to and receive jobs from CUPS automatically. However, not
3811all systems support IPP yet. This chapter will show you how to connect
3812these systems to your CUPS server, either to accept jobs from your
3813server for printing, or to send jobs to your server.
3814
3815<H2>Printing from LPD Clients</H2>
3816
3817<P>CUPS supports limited functionality for LPD-based clients. With LPD you can
3818print files to specific printers, list the queue status, and so forth. However,
3819the automatic client configuration and printer options are not supported by
3820the LPD protocol, so you must manually configure each client for the printers
3821it needs to access.
3822
3823<P>The <CODE>cups-lpd(8)</CODE> program provides support for LPD
3824clients and can be used from either the <CODE>inetd(8)</CODE> or
3825<CODE>xinetd(8)</CODE> programs. Add the following line to the
3826<VAR>/etc/inetd.conf</VAR> file to enable LPD support on your
3827server through the <CODE>inetd</CODE> program:
3828
3829<UL><PRE>
3830printer stream tcp nowait lp /usr/lib/cups/daemon/cups-lpd cups-lpd
3831</PRE></UL>
3832
3833<P>The path to the <CODE>cups-lpd</CODE> may vary depending on your
3834installation.
3835
3836<P>Once you have added this line, send the <CODE>inetd</CODE>
3837process a <CODE>HUP</CODE> signal or reboot the system:
3838
3839<UL><PRE>
3840<B>killall -HUP inetd ENTER</B> [IRIX and some versions of Linux]
3841<B>kill -HUP <I>pid</I> ENTER [Others]</B>
3842<B>reboot ENTER [For all systems if the HUP signal fails]</B>
3843</PRE></UL>
3844
3845<P>If you are using the <CODE>xinetd</CODE> program, create a
3846file named <VAR>/etc/xinetd.d/printer</VAR> containing the
3847following lines:
3848
3849<UL><PRE>
3850service printer
3851{
3852 socket_type = stream
3853 protocol = tcp
3854 wait = no
3855 user = lp
3856 server = /usr/lib/cups/daemon/cups-lpd
3857}
3858</PRE></UL>
3859
3860<P>The <CODE>xinetd</CODE> program automatically reads the new
3861configuration file and enables LPD printing support.
3862
3863<CENTER><TABLE WIDTH="80%" BORDER="1" CELLPADDING="5" BGCOLOR="#cccccc">
3864<TR>
3865 <TD><B>Warning:</B>
3866
3867 <P><CODE>cups-lpd</CODE> currently does not perform any
3868 access control based on the settings in
3869 <VAR>cupsd.conf</VAR> or in the <VAR>hosts.allow</VAR>
3870 or <VAR>hosts.deny</VAR> files used by TCP wrappers.
3871 Therefore, running <CODE>cups-lpd</CODE> on your server
3872 will allow any computer on your network (and perhaps the
3873 entire Internet) to print to your server.
3874
3875 <P>While <CODE>xinetd</CODE> has built-in access control
3876 support, you should use the TCP wrappers package with
3877 <CODE>inetd</CODE> to limit access to only those
3878 computers that should be able to print through your
3879 server.
3880
3881 </TD>
3882</TR>
3883</TABLE></CENTER>
3884
3885<H2>Printing to LPD Servers</H2>
3886
3887<P>CUPS provides the <CODE>lpd</CODE> backend for printing to LPD-based
3888servers and printers. Use a device URI of <CODE>lpd://server/name</CODE>
3889to print to a printer on an LPD server, where <CODE>server</CODE>
3890is the hostname or IP address of the server and <CODE>name</CODE> is
3891the queue name.
3892
3893<P>Microsoft Windows NT provides an LPD service under the name "TCP/IP
3894Printing Services". To enable LPD printing on NT, open the "Services"
3895control panel, select the "TCP/IP Printing Services" service, and click
3896on the "Start" button. Any shared printer will then be available via
3897the LPD protocol.
3898
3899<H2>Printing from Mac OS Clients</H2>
3900
3901<P>CUPS does not provide Mac OS support directly. However, there are several
3902free and commercial software packages that do.
3903
3904<H3>Columbia Appletalk Package (CAP)</H3>
3905
3906<P>Because the CAP LaserWriter server (<CODE>lwsrv(8)</CODE>) does
3907not support specification of PPD files, we do not recommend that you
3908use CAP with CUPS. However, you can run the <CODE>lpsrv</CODE> program
3909for limited printing with the command:
3910
3911<UL><PRE>
3912lwsrv -n "<I>Name</I>" -p <I>printer</I> -a /usr/lib/adicts -f /usr/lib/LW+Fonts
3913</PRE></UL>
3914
3915<P>where <CODE>Name</CODE> is the name you want to use when sharing the
3916printer, and <CODE>printer</CODE> is the name of the CUPS print queue.
3917
3918<!-- NEED 3in -->
3919<H3>XINET KA/Spool</H3>
3920
3921<P>To use your system as a print server for Mac OS clients,
3922configure each printer using a <CODE>papserver(8)</CODE> in the
3923<VAR>/usr/adm/appletalk/services</VAR> file, specifying the
3924corresponding PPD file in the <VAR>/etc/cups/ppd</VAR> directory for
3925each printer. For a printer named <CODE>MyPrinter</CODE> the entry
3926would look like:
3927
3928<UL><PRE>
3929/usr/etc/appletalk/papserver -I -L -P /etc/cups/ppd/MyPrinter.ppd \
3930"Printer Description" MyPrinter
3931</PRE></UL>
3932
3933<CENTER><TABLE WIDTH="80%" BORDER="1" CELLPADDING="5" BGCOLOR="#cccccc">
3934<TR>
3935 <TD>
3936 <B>NOTE:</B>
3937
3938 <P>Enter the text above on a single line without the backslash (\)
3939 character.
3940 </TD>
3941</TR>
3942</TABLE></CENTER>
3943
3944<H3>NetATalk</H3>
3945
3946<P>To use your system as a print server for Mac OS clients,
3947configure each printer in the <VAR>papd.conf</VAR> file, specifying the
3948corresponding PPD file in the <VAR>/etc/cups/ppd</VAR> directory for
3949each printer. For a printer named <CODE>MyPrinter</CODE> the entry
3950would look like:
3951
3952<UL><PRE>
3953Printer Description:MyPrinter@MyServer:\
3954 :pr=|/usr/bin/lp -d MyPrinter:\
3955 :op=daemon:\
3956 :pd=/etc/cups/ppd/MyPrinter.ppd:
3957</PRE></UL>
3958
3959<!-- NEED 2in -->
3960
3961<H2>Printing to Mac OS Servers</H2>
3962
3963<P>CUPS currently does not provide a backend to communicate with a Mac OS
3964server. However, you can write and install a short shell script
3965in the <VAR>/usr/lib/cups/backend</VAR> directory that sends a print file
3966using the appropriate command. The following is a short script that will
3967run the <CODE>papif</CODE> command provided with CAP.
3968
3969<P>After copying this script to <VAR>/usr/lib/cups/backend/cap</VAR>,
3970specify a device URI of <CODE>cap://server/printer</CODE> to use this
3971backend with a print queue.
3972
3973<!-- NEED 8in -->
3974<UL>
3975<PRE>
3976<I>"/usr/lib/cups/backend/cap"</I>
3977#!/bin/sh
3978#
3979# Usage: cap job user title copies options [filename]
3980#
3981
3982# No arguments means show available devices...
3983
3984if test ${#argv} = 0; then
3985 echo "network cap \"Unknown\" \"Mac OS Printer via CAP\""
3986 exit 0
3987fi
3988
3989# Collect arguments...
3990
3991user=$2
3992copies=$4
3993
3994if test ${#argv} = 5; then
3995 # Get print file from stdin; copies have already been handled...
3996 file=/var/tmp/$$.prn
3997 copies=1
3998 cat &gt; $file
3999else
4000 # Print file is on command-line...
4001 file=$6
4002fi
4003
4004# Create a dummy cap.printers file for this printer based
4005# upon a device URI of "cap://server/printer"...
4006
4007echo $PRINTER/$DEVICE_URI | \
4008 awk -F/ '{print $1 "=" $5 ":LaserWriter@" $4}' &gt; /var/tmp/$$.cap
4009
4010CAPPRINTERS=/var/tmp/$$.cap; export CAPPRINTERS
4011
4012# Send the file to the printer, once for each copy. This assumes that you
4013# have properly initialized the cap.printers file...
4014
4015while [ $copies -gt 0 ]; do
4016 papif -n $user &lt; $file
4017
4018 copies=`expr $copies - 1`
4019done
4020
4021# Remove any temporary files...
4022if test ${#argv} = 5; then
4023 /bin/rm -f $file
4024fi
4025
4026/bin/rm -f /var/tmp/$$.cap
4027
4028exit 0
4029</PRE></UL>
4030
4031<!-- NEED 2in -->
4032<H2>Printing from Windows Clients</H2>
4033
4034<P>While CUPS does not provide Windows support directly, the free
4035SAMBA software package does. SAMBA version 2.0.6 is the first release
4036of SAMBA that supports CUPS. You can download SAMBA from:
4037
4038<UL><PRE>
4039<A HREF="http://www.samba.org">http://www.samba.org</A>
4040</PRE></UL>
4041
4042<P>To configure SAMBA for CUPS, edit the <VAR>smb.conf</VAR> file and
4043replace the existing printing commands and options with the line:
4044
4045<UL><PRE>
4046printing = cups
4047printcap name = cups
4048</PRE></UL>
4049
4050<P>That's all there is to it! Remote users will now be able to browse and
4051print to printers on your system.
4052
4053<H3>Exporting Printer Drivers</H3>
4054
4055<P>You can optionally export printer drivers from your CUPS
4056server using the <CODE>cupsaddsmb</CODE> command and the SAMBA
40572.2.0 or higher software.
4058
4059<P>Before you can export the printers you must download the
4060current Adobe PostScript printer drivers from the Adobe web
4061site (<A HREF="http://www.adobe.com/">http://www.adobe.com/</A>).
4062Use the free <CODE>unzip</CODE> software to extract the files
4063from the self-extracting ZIP file containing the drivers; you
4064will need the following files:
4065
4066<UL><PRE>
4067ADFONTS.MFM
4068ADOBEPS4.DRV
4069ADOBEPS4.HLP
4070ADOBEPS5.DLL
4071ADOBEPSU.DLL
4072ADOBEPSU.HLP
4073DEFPRTR2.PPD
4074ICONLIB.DLL
4075PSMON.DLL
4076</PRE></UL>
4077
4078<P>Copy these files to the <VAR>/usr/share/cups/drivers</VAR>
4079directory - you may need to rename some of the files so the
4080filenames are all UPPERCASE.
4081
4082<P>Next, add a <CODE>print$</CODE> share for the printer
4083drivers to your <VAR>smb.conf</VAR> file:
4084
4085<UL><PRE>
4086[print$]
4087 comment = Printer Drivers
4088 path = /etc/samba/drivers
4089 browseable = yes
4090 guest ok = no
4091 read only = yes
4092 write list = root
4093</PRE></UL>
4094
4095<P>The directory for your printer drivers can be anywhere on the
4096system; just make sure it is writable by the users specified by
4097the <CODE>write list</CODE> directive. Also, make sure that you
4098have SAMBA passwords defined for each user in the <CODE>write
4099list</CODE> using the <CODE>smbpasswd(1)</CODE> command.
4100Otherwise you will not be able to authenticate
4101
4102<P>Finally, run the <CODE>cupsaddsmb</CODE> command to export
4103the printer drivers for one or more queues:
4104
4105<UL><PRE>
4106<B>cupsaddsmb -U root printer1 ... printerN <I>ENTER</I></B>
4107</PRE></UL>
4108
4109<P>Running <CODE>cupsaddsmb</CODE> with the <CODE>-a</CODE> option
4110will export all printers:
4111
4112<UL><PRE>
4113<B>cupsaddsmb -U root -a <I>ENTER</I></B>
4114</PRE></UL>
4115
4116<H2>Printing to Windows Servers</H2>
4117
4118<P>CUPS can print to Windows servers in one of two ways. The first way uses
4119the LPD protocol on the CUPS system and the "TCP/IP Printing Services" on
4120the Windows system. You can find out more about this configuration in the
4121<A HREF="#LPD">LPD</A> section earlier in this chapter.
4122
4123<P>The second way is through the Microsoft Server Message Block ("SMB")
4124protocol. Support for this protocol is provided with the free SAMBA
4125software package. You can download SAMBA from:
4126
4127<UL><PRE>
4128<A HREF="http://www.samba.org">http://www.samba.org</A>
4129</PRE></UL>
4130
4131<P>To configure CUPS for SAMBA, run the following command:
4132
4133<UL><PRE>
4134<B>ln -s `which smbspool` /usr/lib/cups/backend/smb ENTER</B>
4135</PRE></UL>
4136
4137<P>The <CODE>smbspool(1)</CODE> program is provided with SAMBA starting
4138with SAMBA 2.0.6. Once you have made the link you can configure your
4139printers with one of the following device URIs:
4140
4141<UL><PRE>
4142smb://workgroup/server/sharename
4143smb://server/sharename
4144smb://user:pass@workgroup/server/sharename
4145smb://user:pass@server/sharename
4146</PRE></UL>
4147
4148<P>The <CODE>workgroup</CODE> name need only be specified if your
4149system is using a different workgroup. The <CODE>user:pass</CODE>
4150strings are required when printing to Windows NT servers or to shares
4151with passwords enabled under Windows 95 and 98.
4152
4153
4154<H1 ALIGN="RIGHT"><A NAME="LICENSE">A - Software License Agreement</A></H1>
4155
4156<EMBED SRC="../LICENSE.html">
4157
4158
4159<H1 ALIGN="RIGHT"><A NAME="COMMON_NETWORK">B - Common Network Settings</A></H1>
4160
4161<P>This appendix covers many of the popular TCP/IP network interfaces
4162and printer servers available on the market today.
4163
4164<H2>Configuring a Network Interface</H2>
4165
4166<P>When you first install a network printer or print server on your
4167LAN, you need to set the Internet Protocol ("IP") address. On most
4168higher-end "workgroup" printers, you can set the address through the
4169printer control panel. However, in most cases you will want to assign
4170the addresses remotely from your workstation. This makes administration
4171a bit easier and avoids assigning duplicate addresses accidentally.
4172
4173<P>To setup your printer or print server for remote address assignment,
4174you'll need the Ethernet Media Access Control ("MAC") address, also
4175sometimes called a node address, and the IP address you want to use for
4176the device. The Ethernet MAC address can often be found on the printer
4177test page or bottom of the print server.
4178
4179<!-- NEED 3in -->
4180<H3>Configuring the IP Address Using ARP</H3>
4181
4182<P>The easiest way to set the IP address of a network device is to use
4183the <CODE>arp(8)</CODE> command. The <CODE>arp</CODE> sends an Address
4184Resolution Protocol ("ARP") packet to the specified Ethernet MAC address,
4185setting the network device's IP address:
4186
4187<UL><PRE>
4188<B>arp -s ip-address ethernet-address ENTER</B>
4189<B>arp -s host.domain.com 08:00:69:00:12:34 ENTER</B>
4190<B>arp -s 192.0.2.2 08:00:69:00:12:34 ENTER</B>
4191</PRE></UL>
4192
4193<H3>Configuring the IP Address Using RARP</H3>
4194
4195<P>The most flexible way to remotely assign IP addresses under UNIX
4196is through the Reverse Address Resolution Protocol ("RARP"). RARP
4197allows a network device to request an IP address using its Ethernet
4198MAC address, and one or more RARP servers on the network will
4199respond with an ARP packet with the IP address the device can use.
4200
4201<P>RARP should be used when you have to manage many printers or print
4202servers, or when you have a network device that does not remember its
4203IP address after a power cycle. If you just have a single printer or
4204print server, the <CODE>arp</CODE> command is the way to go.
4205
4206<P>Some UNIX operating systems use a program called
4207<CODE>rarpd(8)</CODE> to manage RARP. Others, like Linux, support this
4208protocol in the kernel. For systems that provide the <CODE>rarpd</CODE>
4209program you will need to start it before RARP lookups will work:
4210
4211<UL><PRE>
4212<B>rarpd ENTER</B>
4213</PRE></UL>
4214
4215<P>Under IRIX you can enable this functionality by default using:
4216
4217<UL><PRE>
4218<B>chkconfig rarpd on ENTER</B>
4219</PRE></UL>
4220
4221<P>Both the <CODE>rarpd</CODE> program and kernel RARP support read a
4222list of Ethernet and IP addresses from the file <VAR>/etc/ethers</VAR>.
4223Each line contains the Ethernet address (colon delimited) followed by
4224an IP address or hostname like:
4225
4226<UL><PRE>
422708:00:69:00:12:34 myprinter.mydomain.com
422808:00:69:00:12:34 192.0.2.2
4229</PRE></UL>
4230
4231<P>Add a line to this file and cycle the power on the printer or print
4232server to set its address.
4233
4234<!-- NEED 2in -->
4235<H3>Configuring the IP Address Using BOOTP</H3>
4236
4237<P>The BOOTP protocol is used when you need to provide additional information
4238such as the location of a configuration file to the network interface. Using
4239the standard <CODE>bootpd(8)</CODE> program supplied with UNIX you simply need to
4240add a line to the <VAR>/etc/bootptab</VAR> file; for IRIX:
4241
4242<UL><PRE>
4243myprinter 08:00:69:00:12:34 192.0.2.2 <VAR>myprinter.boot</VAR>
4244</PRE></UL>
4245
4246<!-- NEED 1in -->
4247<P>Newer versions of <CODE>bootpd</CODE> use a different format:
4248
4249<UL><PRE>
4250myprinter:ha=080069001234:ip=192.0.2.2:<VAR>t144=myprinter.boot</VAR>
4251</PRE></UL>
4252
4253<P>The <VAR>myprinter.boot</VAR> file resides in the <VAR>/usr/local/boot</VAR>
4254directory by default. If you do not need to provide a boot file you may leave
4255the last part of the line blank.</P>
4256
4257<!-- NEED 2in -->
4258<CENTER><TABLE WIDTH="80%" BORDER="1" CELLPADDING="5" BGCOLOR="#cccccc">
4259<TR>
4260 <TD>
4261 <B>NOTE:</B>
4262
4263 <P>Some versions of UNIX do not enable the BOOTP service by
4264 default. The <VAR>/etc/inetd.conf</VAR> usually contains a
4265 line for the BOOTP service that can be uncommented if
4266 needed.
4267 </TD>
4268</TR>
4269</TABLE></CENTER>
4270
4271<H2>Verifying the Printer Connection</H2>
4272
4273<P>To test that the IP address has been successfully assigned and that the
4274printer is properly connected to your LAN, type:
4275
4276<UL><PRE>
4277<B>ping ip-address ENTER</B>
4278</PRE></UL>
4279
4280<P>If the connection is working properly you will see something like:
4281
4282<UL><PRE>
4283<B>ping myprinter ENTER</B>
4284PING myprinter (192.0.2.2): 56 data bytes
428564 bytes from 192.0.2.2: icmp_seq=0 ttl=15 time=5 ms
428664 bytes from 192.0.2.2: icmp_seq=1 ttl=15 time=3 ms
428764 bytes from 192.0.2.2: icmp_seq=2 ttl=15 time=3 ms
428864 bytes from 192.0.2.2: icmp_seq=3 ttl=15 time=3 ms
4289</PRE></UL>
4290
4291<P>If not, verify that the printer or print server is connected to the
4292LAN, it is powered on, the LAN cabling is good, and the IP address is
4293set correctly. You can usually see the current IP address and network
4294status by printing a configuration or test page on the device.
4295
4296<!-- NEED 4in -->
4297<H2>Common Network Interface Settings</H2>
4298
4299<P>Once you have set the IP address you can access the printer or print
4300server using the <CODE>ipp</CODE>, <CODE>lpd</CODE>, or
4301<CODE>socket</CODE> backends. The following is a list of common network
4302interfaces and printer servers and the settings you should use with
4303CUPS:
4304
4305<CENTER><TABLE BORDER="1">
4306<TR VALIGN="TOP" ALIGN="LEFT">
4307 <TH>Model/Manufacturer</TH>
4308 <TH>Device URI(s)</TH>
4309</TR>
4310<TR ALIGN="LEFT" VALIGN="TOP">
4311 <TD>Apple LaserWriter</TD>
4312 <TD>lpd://<I>address</I>/PASSTHRU</TD>
4313</TR>
4314<!-- NEED 1in -->
4315<TR ALIGN="LEFT" VALIGN="TOP">
4316 <TD>Axis w/o IPP<BR>
4317 <A HREF="#AXIS">(see directions)</A></TD>
4318 <TD>socket://<I>address</I>:9100<BR>
4319 socket://<I>address</I>:9101<BR>
4320 socket://<I>address</I>:9102</TD>
4321</TR>
4322<!-- NEED 1in -->
4323<TR ALIGN="LEFT" VALIGN="TOP">
4324 <TD>Axis w/IPP</TD>
4325 <TD>ipp://<I>address</I>/LPT1<BR>
4326 ipp://<I>address</I>/LPT2<BR>
4327 ipp://<I>address</I>/COM1</TD>
4328</TR>
4329<!-- NEED 1in -->
4330<TR ALIGN="LEFT" VALIGN="TOP">
4331 <TD>Castelle LANpress<SUP>TM</SUP></TD>
4332 <TD>lpd://<I>address</I>/pr1<BR>
4333 lpd://<I>address</I>/pr2<BR>
4334 lpd://<I>address</I>/pr3</TD>
4335</TR>
4336<!-- NEED 1in -->
4337<TR ALIGN="LEFT" VALIGN="TOP">
4338 <TD>DPI NETPrint</TD>
4339 <TD>lpd://<I>address</I>/pr1<BR>
4340 lpd://<I>address</I>/pr2<BR>
4341 lpd://<I>address</I>/pr3</TD>
4342</TR>
4343<TR ALIGN="LEFT" VALIGN="TOP">
4344 <TD>EFI&reg; Fiery&reg; RIP</TD>
4345 <TD>lpd://<I>address</I>/print</TD>
4346</TR>
4347<TR ALIGN="LEFT" VALIGN="TOP">
4348 <TD>EPSON&reg; Multiprotocol Ethernet Interface Board</TD>
4349 <TD>socket://<I>address</I></TD>
4350</TR>
4351<!-- NEED 1in -->
4352<TR ALIGN="LEFT" VALIGN="TOP">
4353 <TD>Extended System ExtendNET</TD>
4354 <TD>lpd://<I>address</I>/pr1<BR>
4355 lpd://<I>address</I>/pr2<BR>
4356 lpd://<I>address</I>/pr3</TD>
4357</TR>
4358<!-- NEED 1in -->
4359<TR ALIGN="LEFT" VALIGN="TOP">
4360 <TD>Hewlett Packard JetDirect w/o IPP</TD>
4361 <TD>socket://<I>address</I>:9100<BR>
4362 socket://<I>address</I>:9101<BR>
4363 socket://<I>address</I>:9102</TD>
4364</TR>
4365<!-- NEED 1in -->
4366<TR ALIGN="LEFT" VALIGN="TOP">
4367 <TD>Hewlett Packard JetDirect w/IPP</TD>
4368 <TD>ipp://<I>address</I>/ipp<BR>
4369 ipp://<I>address</I>/ipp/port1<BR>
4370 ipp://<I>address</I>/ipp/port2<BR>
4371 ipp://<I>address</I>/ipp/port3</TD>
4372</TR>
4373<!-- NEED 1in -->
4374<TR ALIGN="LEFT" VALIGN="TOP">
4375