You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
4.5 KiB
112 lines
4.5 KiB
4 months ago
|
<html>
|
||
|
<!-- SECTION: Getting Started -->
|
||
|
<head>
|
||
|
<title>Printer Sharing</title>
|
||
|
<LINK REL="STYLESHEET" TYPE="text/css" HREF="../cups-printable.css">
|
||
|
</HEAD>
|
||
|
<BODY>
|
||
|
|
||
|
<H1 CLASS="title">Printer Sharing</H1>
|
||
|
|
||
|
<p>This document discusses several ways to configure printer sharing.</p>
|
||
|
|
||
|
<h2><a name="BASICS">The Basics</h2>
|
||
|
|
||
|
<p>A "server" is any machine that communicates directly to a printer. A "client" is any machine that sends print jobs to a server for final printing. Clients can also be servers if they communicate directly with any printers of their own.</p>
|
||
|
|
||
|
<p>By default, CUPS uses the Internet Printing Protocol (IPP) to send jobs from a client to a server. When printing to legacy print servers you may also use the Line Printer Daemon (LPD) protocol when printing to older UNIX-based servers or Server Message Block (SMB) when printing to Windows<sup>®</sup> servers.</p>
|
||
|
|
||
|
<p>Clients can automatically discover and access shared printers via DNS Service Discovery (DNS-SD a.k.a. Bonjour<sup>®</sup>). SMB browsing can also be used to manually discover and access shared printers when <a href="http://www.samba.org/">Samba</a> is installed.</p>
|
||
|
|
||
|
|
||
|
<h2><a name="SERVER_CONFIG">Configuring the Server</a></h2>
|
||
|
|
||
|
<p>You must enable printer sharing on the server before clients can print through it. The simplest way to do this is to use the <a href="man-cupsctl.html">cupsctl(8)</a> command on the server:</p>
|
||
|
|
||
|
<pre class="command">
|
||
|
cupsctl --share-printers
|
||
|
</pre>
|
||
|
|
||
|
<p>By default, the above command will allow printing from other clients on the same subnet as your server. To allow printing from any subnet, use the following command instead:</p>
|
||
|
|
||
|
<pre class="command">
|
||
|
cupsctl --share-printers --remote-any
|
||
|
</pre>
|
||
|
|
||
|
<p>Next, tag each printer that you want to share using the <a href="man-lpadmin.html">lpadmin(8)</a> command on the server, for example:</p>
|
||
|
|
||
|
<pre class="command">
|
||
|
lpadmin -p printer -o printer-is-shared=true
|
||
|
</pre>
|
||
|
|
||
|
<p>You can require authentication for shared printing by setting the policy on each printer, for example:</p>
|
||
|
|
||
|
<pre class="command">
|
||
|
lpadmin -p printer -o printer-op-policy=authenticated
|
||
|
</pre>
|
||
|
|
||
|
|
||
|
<h2><a name="AUTO_IPP">Automatic Configuration using IPP</a></h2>
|
||
|
|
||
|
<blockquote><b>Note:</b>
|
||
|
<p>This method of configuration does not work on macOS 10.7 or later because sandboxed applications do not always have direct network access.</p>
|
||
|
</blockquote>
|
||
|
|
||
|
<p>CUPS can be configured to run without a local spooler and send all jobs to a
|
||
|
single server. However, if that server goes down then all printing will be
|
||
|
disabled. Use this configuration only as absolutely necessary.</p>
|
||
|
|
||
|
<p>The default server is normally the local system ("localhost"). To override
|
||
|
the default server create a file named <var>/etc/cups/client.conf</var> with a
|
||
|
line as follows:</p>
|
||
|
|
||
|
<pre class='example'>
|
||
|
ServerName <em>server</em>
|
||
|
</pre>
|
||
|
|
||
|
<p>The <var>server</var> name can be the hostname or IP address of the default
|
||
|
server. If the server is not using the default IPP port (631), you can add the
|
||
|
port number at the end like this:</p>
|
||
|
|
||
|
<pre class='example'>
|
||
|
ServerName <em>server:port</em>
|
||
|
</pre>
|
||
|
|
||
|
<p>The default server can also be customized on a per-user basis. To set a
|
||
|
user-specific server create a file named <var>~/.cups/client.conf</var> instead.
|
||
|
The user <var>client.conf</var> file takes precedence over the system one.</p>
|
||
|
|
||
|
<p>Finally, you can set the <code>CUPS_SERVER</code> environment variable to
|
||
|
override the default server for a single process, for example:</p>
|
||
|
|
||
|
<pre class='command'>
|
||
|
CUPS_SERVER=server:port firefox http://www.cups.org
|
||
|
</pre>
|
||
|
|
||
|
<p>will run the Firefox web browser pointed to the specified server and
|
||
|
port. The environment variable overrides both the user and system
|
||
|
<var>client.conf</var> files, if any.</p>
|
||
|
|
||
|
|
||
|
<h2><a name="MANUAL">Manual Configuration of Print Queues</a></h2>
|
||
|
|
||
|
<blockquote><b>Note:</b>
|
||
|
<p>This method of configuration does not work on macOS 10.7 or later because sandboxed applications do not always have direct network access.</p>
|
||
|
</blockquote>
|
||
|
|
||
|
<p>The most tedious method of configuring client machines is to configure
|
||
|
each remote queue by hand using the <a href="man-lpadmin.html">lpadmin(8)</a>
|
||
|
command:</p>
|
||
|
|
||
|
<pre class='command'>
|
||
|
lpadmin -p <em>printer</em> -E -v ipp://<em>server</em>/printers/<em>printer</em> -m everywhere
|
||
|
</pre>
|
||
|
|
||
|
<p>The <var>printer</var> name is the name of the printer on the server machine.
|
||
|
The <var>server</var> name is the hostname or IP address of the server machine.
|
||
|
Repeat the <b>lpadmin</b> command for each remote printer you wish to use.</p>
|
||
|
|
||
|
|
||
|
</body>
|
||
|
</html>
|