2 <!-- SECTION: Getting Started -->
4 <title>Printer Sharing
</title>
5 <LINK REL=
"STYLESHEET" TYPE=
"text/css" HREF=
"../cups-printable.css">
9 <H1 CLASS=
"title">Printer Sharing
</H1>
11 <p>This document discusses several ways to configure printer sharing.
</p>
13 <h2><a name=
"BASICS">The Basics
</h2>
15 <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>
17 <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>
19 <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>
22 <h2><a name=
"SERVER_CONFIG">Configuring the Server
</a></h2>
24 <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>
27 cupsctl --share-printers
30 <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>
33 cupsctl --share-printers --remote-any
36 <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>
39 lpadmin -p printer -o printer-is-shared=true
42 <p>You can require authentication for shared printing by setting the policy on each printer, for example:
</p>
45 lpadmin -p printer -o printer-op-policy=authenticated
49 <h2><a name=
"AUTO_IPP">Automatic Configuration using IPP
</a></h2>
51 <blockquote><b>Note:
</b>
52 <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>
55 <p>CUPS can be configured to run without a local spooler and send all jobs to a
56 single server. However, if that server goes down then all printing will be
57 disabled. Use this configuration only as absolutely necessary.
</p>
59 <p>The default server is normally the local system (
"localhost"). To override
60 the default server create a file named
<var>/etc/cups/client.conf
</var> with a
64 ServerName
<em>server
</em>
67 <p>The
<var>server
</var> name can be the hostname or IP address of the default
68 server. If the server is not using the default IPP port (
631), you can add the
69 port number at the end like this:
</p>
72 ServerName
<em>server:port
</em>
75 <p>The default server can also be customized on a per-user basis. To set a
76 user-specific server create a file named
<var>~/.cups/client.conf
</var> instead.
77 The user
<var>client.conf
</var> file takes precedence over the system one.
</p>
79 <p>Finally, you can set the
<code>CUPS_SERVER
</code> environment variable to
80 override the default server for a single process, for example:
</p>
83 CUPS_SERVER=server:port firefox http://www.cups.org
86 <p>will run the Firefox web browser pointed to the specified server and
87 port. The environment variable overrides both the user and system
88 <var>client.conf
</var> files, if any.
</p>
91 <h2><a name=
"MANUAL">Manual Configuration of Print Queues
</a></h2>
93 <blockquote><b>Note:
</b>
94 <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>
97 <p>The most tedious method of configuring client machines is to configure
98 each remote queue by hand using the
<a href=
"man-lpadmin.html">lpadmin(
8)
</a>
101 <pre class='command'
>
102 lpadmin -p
<em>printer
</em> -E -v ipp://
<em>server
</em>/printers/
<em>printer
</em>
105 <p>The
<var>printer
</var> name is the name of the printer on the server machine.
106 The
<var>server
</var> name is the hostname or IP address of the server machine.
107 Repeat the
<b>lpadmin
</b> command for each remote printer you wish to use.
</p>