File: introduction.htm

package info (click to toggle)
lprng 3.8.10-1.2
  • links: PTS
  • area: main
  • in suites: woody
  • size: 13,076 kB
  • ctags: 4,348
  • sloc: ansic: 35,394; sh: 10,756; perl: 2,210; makefile: 1,046
file content (216 lines) | stat: -rw-r--r-- 9,447 bytes parent folder | download
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>?&#13;</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>?&#13;</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&amp;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">&lt;<a href=
        "mailto:jmason@iona.ie">jmason@iona.ie</a>&gt;</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">&nbsp;</td>

          <td width="33%" align="right" valign="top">Additional
          Resources</td>
        </tr>
      </table>
    </div>
  </body>
</html>