1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta name="generator" content="HTML Tidy, see www.w3.org">
<title>Introduction</title>
<meta name="GENERATOR" content=
"Modular DocBook HTML Stylesheet Version 1.71 ">
<link rel="HOME" title=" LPRng-HOWTO" href="index.htm">
<link rel="PREVIOUS" title="Notes, warnings, and examples"
href="x125.htm">
<link rel="NEXT" title="Additional Resources " href=
"maillist.htm">
</head>
<body class="CHAPTER" bgcolor="#FFFFFF" text="#000000" link=
"#0000FF" vlink="#840084" alink="#0000FF">
<div class="NAVHEADER">
<table summary="Header navigation table" width="100%" border=
"0" cellpadding="0" cellspacing="0">
<tr>
<th colspan="3" align="center">LPRng-HOWTO: 1 Apr 2002
(For LPRng-3.8.10)</th>
</tr>
<tr>
<td width="10%" align="left" valign="bottom"><a href=
"x125.htm" accesskey="P">Prev</a></td>
<td width="80%" align="center" valign="bottom">
</td>
<td width="10%" align="right" valign="bottom"><a href=
"maillist.htm" accesskey="N">Next</a></td>
</tr>
</table>
<hr align="LEFT" width="100%">
</div>
<div class="CHAPTER">
<h1><a name="INTRODUCTION">Chapter 1. Introduction</a></h1>
<div class="TOC">
<dl>
<dt><b>Table of Contents</b></dt>
<dt>1.1. <a href="introduction.htm#SECFEATURES">What is
<b class="APPLICATION">LPRng</b>? </a></dt>
<dt>1.2. <a href="maillist.htm">Additional
Resources</a></dt>
<dt>1.3. <a href="x215.htm">Frequently Asked
Questions</a></dt>
<dt>1.4. <a href="x224.htm">License, Copyright, and
Disclaimer</a></dt>
<dt>1.5. <a href="x231.htm">Commercial Support</a></dt>
<dt>1.6. <a href="x236.htm">Web Site</a></dt>
<dt>1.7. <a href="secftp.htm">FTP Sites</a></dt>
<dt>1.8. <a href="x276.htm">Mailing List</a></dt>
<dt>1.9. <a href="faqref.htm">PGP Public Key</a></dt>
<dt>1.10. <a href="x290.htm">References and
Standards</a></dt>
</dl>
</div>
<p>Printing is one of the essential services provided by
computer systems. Users want reliable and easy to use methods
of printing that require a minimum amount of effort to used
and understand. On single user systems with a directly
attached printer they perceive that the printing process is
simply a matter of <i class="EMPHASIS">storing</i> or <i
class="EMPHASIS">spooling</i> a file, and then transferring
it to the printer in a timely manner. In the classical <i
class="EMPHASIS">multi-user</i> systems, each user expects to
share a common printer with one or more users; the print <i
class="EMPHASIS">spooling</i> system provides arbitration and
sharing of the printer among the various users. In a <i
class="EMPHASIS">network</i> based multi-user system, there
may be one or more printers shared by multiple users on many
different systems. The print <i class="EMPHASIS">spoolers</i>
will need to cooperate to provide print services to the users
in a simple an predictable manner.</p>
<div class="SECT1">
<h1 class="SECT1"><a name="SECFEATURES">1.1. What is <b
class="APPLICATION">LPRng</b>? </a></h1>
<p>The <b class="APPLICATION">LPRng</b> print spooler
software was developed to be robust, reliable, secure,
scalable, and portable. It has been used since 1988 in
extremely demanding academic printing environments such as
University of Minnesota, MIT, and Rutgers, commercial
companies such as Dow Jones and Abbot Pharmaceuticals, as
well as being distributed with Linux, FreeBSD, and other
systems. Each of these environments has a unique set of
problems, demanding various configuration and
administrative capabilities. For example, the simple single
user system with a single or limited number of printers
requires easy configuration and simple diagnostic
procedures, while the network based printing system
requires highly robust error logging, authentication, and
failover support. <b class="APPLICATION">LPRng</b> provides
a highly flexible configuration system that allows it to
perform optimally in all of these environments.</p>
<p>The <b class="APPLICATION">LPRng</b> software has three
components: the <b class="APPLICATION">lpd</b> print
spooler and the user client applications <b class=
"APPLICATION">lpr</b>, <b class="APPLICATION">lpq</b>, <b
class="APPLICATION">lprm</b>, etc.; the IFHP print filter
(<b class="APPLICATION">ifhp</b>) which is used to convert
jobs into a suitable for a particular printer, and the the
LPRngTool Graphic User Interface (<b class=
"APPLICATION">lprngtool</b>) which provides a simple and
easy to use configuration and monitoring tool for the <b
class="APPLICATION">LPRng</b> print spooler.</p>
<p><b class="APPLICATION">LPRng</b> mimics many of the
features of the <i class="EMPHASIS">vintage</i> or <i
class="EMPHASIS">legacy</i> Berkeley (University of
California - Berkeley) Line Printer (LPR) package found on
Berkeley derivatives of the Unix operating system. <b
class="APPLICATION">LPRng</b> will print a document with
little or no knowledge of the content or special processing
required to print the document on a stand-alone machine or
in a distributed printing environment. New (as compared to
Berkeley LPR) features include: lightweight <b class=
"APPLICATION">lpr</b>, <b class="APPLICATION">lpc</b> and
<b class="APPLICATION">lprm</b> programs, dynamic
redirection of print queues, automatic job holding, highly
verbose diagnostics, load balancing queues; enhanced
security (SUID not required in most environments), and easy
configuration.</p>
<p><b class="APPLICATION">LPRng</b> started life at the
University of Waterloo in 1986 as PLP (Public Line
Printer), a replacement for the original BSD <b class=
"APPLICATION">lpd</b> code. This was a one-shot effort by
the author, Patrick Powell, to develop freely redistributed
code without the restrictions of the BSD/AT&T license
and would allow non-licensed sites to fix and patch
problems. From 1988 to 1992 individuals and groups added
features, hacked, slashed, and modified the PLP code,
coordinated largely by Justin Mason (<tt class=
"EMAIL"><<a href=
"mailto:jmason@iona.ie">jmason@iona.ie</a>></tt>) who
started the <b class="APPLICATION">LPRng</b> mailing
list.</p>
<p>In 1992 while at San Diego State University Prof. Powell
redesigned and reimplemented the PLP code and named the
result <b class="APPLICATION">LPRng</b>. The goals of the
<b class="APPLICATION">LPRng</b> project were to build a
server system that was as close to user abuse proof as
possible, that would provide services limited only by the
inherent capacities of the support system, RFC1179
compliant, and with extensive debugging capabilities to
allow quick and easy diagnostics of problems.</p>
<p>In 1999 the code base for <b class=
"APPLICATION">LPRng</b> was again reorganized in order to
provide a common method for running on non-UNIX platforms
such as Microsoft Windows NT, Apple Rhapsody, and embedded
systems.</p>
<p>As a side effect of this work, many security problems
that could develop were identified and steps taken to
ensure that they were not present in <b class=
"APPLICATION">LPRng</b>. For example, <b class=
"APPLICATION">LPRng</b> clients such as lpr, lprm, lpc, and
lpq can run as ordinary users programs, the lpd server can
run as a non-root user once a network port has been opened,
and all text formatting operations done by <b class=
"APPLICATION">LPRng</b> use a very restricted and highly
secure version of the <b class="APPLICATION">snprintf</b>
function.</p>
</div>
</div>
<div class="NAVFOOTER">
<hr align="LEFT" width="100%">
<table summary="Footer navigation table" width="100%" border=
"0" cellpadding="0" cellspacing="0">
<tr>
<td width="33%" align="left" valign="top"><a href=
"x125.htm" accesskey="P">Prev</a></td>
<td width="34%" align="center" valign="top"><a href=
"index.htm" accesskey="H">Home</a></td>
<td width="33%" align="right" valign="top"><a href=
"maillist.htm" accesskey="N">Next</a></td>
</tr>
<tr>
<td width="33%" align="left" valign="top">Notes,
warnings, and examples</td>
<td width="34%" align="center" valign="top"> </td>
<td width="33%" align="right" valign="top">Additional
Resources</td>
</tr>
</table>
</div>
</body>
</html>
|