30f1f1fe82
- WITH_ and WITHOUT_ are outdated - make.conf is the wrong place for modern systems (which should be using poudriere) - only reference package installation. Ports users can use the port name and the normal ports documentation
350 lines
15 KiB
XML
350 lines
15 KiB
XML
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
|
|
"http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
|
|
<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="en">
|
|
<info><title>CUPS on FreeBSD</title>
|
|
|
|
<authorgroup>
|
|
<author><personname><firstname>Chess</firstname><surname>Griffin</surname></personname><affiliation>
|
|
<address><email>chess@chessgriffin.com</email></address>
|
|
</affiliation></author>
|
|
</authorgroup>
|
|
|
|
<legalnotice xml:id="trademarks" role="trademarks">
|
|
&tm-attrib.freebsd;
|
|
&tm-attrib.general;
|
|
</legalnotice>
|
|
|
|
<pubdate>$FreeBSD$</pubdate>
|
|
|
|
<releaseinfo>$FreeBSD$</releaseinfo>
|
|
|
|
<abstract>
|
|
<para>An article about configuring CUPS on &os;.</para>
|
|
</abstract>
|
|
</info>
|
|
|
|
<sect1 xml:id="printing-cups">
|
|
<title>An Introduction to the Common Unix Printing System (CUPS)</title>
|
|
|
|
<indexterm><primary>printing</primary></indexterm>
|
|
<indexterm><primary>CUPS</primary></indexterm>
|
|
|
|
<para><application>CUPS</application>, the Common UNIX Printing
|
|
System, provides a portable printing layer for &unix;-based
|
|
operating systems. It has been developed by Easy Software
|
|
Products to promote a standard printing solution for all &unix;
|
|
vendors and users.</para>
|
|
|
|
<para><application>CUPS</application> uses the Internet Printing
|
|
Protocol (<acronym>IPP</acronym>) as the basis for managing
|
|
print jobs and queues. The Line Printer Daemon
|
|
(<acronym>LPD</acronym>), Server Message Block
|
|
(<acronym>SMB</acronym>), and AppSocket (aka JetDirect)
|
|
protocols are also supported with reduced functionality.
|
|
<application>CUPS</application> adds network printer browsing and
|
|
PostScript Printer Description (<acronym>PPD</acronym>) based
|
|
printing options to support real-world printing under &unix;. As
|
|
a result, <application>CUPS</application> is ideally-suited for
|
|
sharing and accessing printers in mixed environments of &os;,
|
|
&linux;, &macos; X, or &windows;.</para>
|
|
|
|
<para>The main site for <application>CUPS</application> is <uri xlink:href="http://www.cups.org/">http://www.cups.org/</uri>.</para>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="printing-cups-install">
|
|
<title>Installing the CUPS Print Server</title>
|
|
|
|
<para>To install <application>CUPS</application> using a precompiled
|
|
binary, issue the following command from a root terminal:</para>
|
|
|
|
<screen>&prompt.root; <userinput>pkg install cups</userinput></screen>
|
|
|
|
<para>Other optional, but recommended, packages are
|
|
<package>print/gutenprint-cups</package> and
|
|
<package>print/hplip</package>, both of which add
|
|
drivers and utilities for a variety of printers. Once installed,
|
|
the <application>CUPS</application> configuration files can be
|
|
found in the directory
|
|
<filename>/usr/local/etc/cups</filename>.</para>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="printing-cups-configuring-server">
|
|
<title>Configuring the CUPS Print Server</title>
|
|
|
|
<para>After installation, a few files must be edited in order to
|
|
configure the <application>CUPS</application> server. First,
|
|
create or modify, as the case may be, the file
|
|
<filename>/etc/devfs.rules</filename> and add the following
|
|
information to set the proper permissions on all potential printer
|
|
devices and to associate printers with the
|
|
<systemitem class="groupname">cups</systemitem> user group:</para>
|
|
|
|
<programlisting>[system=10]
|
|
add path 'unlpt*' mode 0660 group cups
|
|
add path 'ulpt*' mode 0660 group cups
|
|
add path 'lpt*' mode 0660 group cups
|
|
add path 'usb/<replaceable>X</replaceable>.<replaceable>Y</replaceable>.<replaceable>Z</replaceable>' mode 0660 group cups</programlisting>
|
|
|
|
<note>
|
|
<para>Note that <replaceable>X</replaceable>,
|
|
<replaceable>Y</replaceable>, and <replaceable>Z</replaceable>
|
|
should be replaced with the target USB device listed in the
|
|
<filename>/dev/usb</filename> directory that
|
|
corresponds to the printer. To find the correct device, examine
|
|
the output of &man.dmesg.8;, where
|
|
<filename>ugen<replaceable>X</replaceable>.<replaceable>Y</replaceable></filename>
|
|
lists the printer device, which is a symbolic link to a USB
|
|
device in <filename>/dev/usb</filename>.</para>
|
|
</note>
|
|
|
|
<para>Next, add two lines to <filename>/etc/rc.conf</filename> as
|
|
follows:</para>
|
|
|
|
<programlisting>cupsd_enable="YES"
|
|
devfs_system_ruleset="system"</programlisting>
|
|
|
|
<para>These two entries will start the
|
|
<application>CUPS</application> print server on boot and invoke
|
|
the local devfs rule created above, respectively.</para>
|
|
|
|
<para>In order to enable <application>CUPS</application> printing
|
|
under certain µsoft.windows; clients, the line below should
|
|
be uncommented in
|
|
<filename>/usr/local/etc/cups/mime.types</filename> and
|
|
<filename>/usr/local/etc/cups/mime.convs</filename>:</para>
|
|
|
|
<programlisting>application/octet-stream</programlisting>
|
|
|
|
<para>Once these changes have been made, the &man.devfs.8; and
|
|
<application>CUPS</application> systems must both be restarted,
|
|
either by rebooting the computer or issuing the following two
|
|
commands in a root terminal:</para>
|
|
|
|
<screen>&prompt.root; <userinput>/etc/rc.d/devfs restart</userinput>
|
|
&prompt.root; <userinput>/usr/local/etc/rc.d/cupsd restart</userinput></screen>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="printing-cups-configuring-printers">
|
|
<title>Configuring Printers on the CUPS Print Server</title>
|
|
|
|
<para>After the <application>CUPS</application> system has been
|
|
installed and configured, the administrator can begin configuring
|
|
the local printers attached to the <application>CUPS</application>
|
|
print server. This part of the process is very similar, if not
|
|
identical, to configuring <application>CUPS</application> printers
|
|
on other &unix;-based operating systems, such as a &linux;
|
|
distribution.</para>
|
|
|
|
<para>The primary means for managing and administering the
|
|
<application>CUPS</application> server is through the web-based
|
|
interface, which can be found by launching a web browser and
|
|
entering <uri xlink:href="http://localhost:631">http://localhost:631</uri> in the
|
|
browser's URL bar. If the <application>CUPS</application> server
|
|
is on another machine on the network, substitute the server's
|
|
local <acronym>IP</acronym> address for
|
|
<systemitem>localhost</systemitem>. The <application>CUPS</application>
|
|
web interface is fairly self-explanatory, as there are sections
|
|
for managing printers and print jobs, authorizing users, and more.
|
|
Additionally, on the right-hand side of the Administration screen
|
|
are several check-boxes allowing easy access to commonly-changed
|
|
settings, such as whether to share published printers connected to
|
|
the system, whether to allow remote administration of the
|
|
<application>CUPS</application> server, and whether to allow users
|
|
additional access and privileges to the printers and print
|
|
jobs.</para>
|
|
|
|
<para>Adding a printer is generally as easy as clicking <quote>Add
|
|
Printer</quote> at the Administration screen of the
|
|
<application>CUPS</application> web interface, or clicking one of
|
|
the <quote>New Printers Found</quote> buttons also at the
|
|
Administration screen. When presented with the
|
|
<quote>Device</quote> drop-down box, simply select the desired
|
|
locally-attached printer, and then continue through the process.
|
|
If one has added the <package>print/gutenprint-cups</package> or <package>print/hplip</package> ports or packages as
|
|
referenced above, then additional print drivers will be available
|
|
in the subsequent screens that might provide more stability or
|
|
features.</para>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="printing-cups-clients">
|
|
<title>Configuring CUPS Clients</title>
|
|
|
|
<para>Once the <application>CUPS</application> server has been
|
|
configured and printers have been added and published to the
|
|
network, the next step is to configure the clients, or the
|
|
machines that are going to access the
|
|
<application>CUPS</application> server. If one has a single
|
|
desktop machine that is acting as both server and client, then
|
|
much of this information may not be needed.</para>
|
|
|
|
<sect2 xml:id="printing-cups-clients-unix">
|
|
<title>&unix; Clients</title>
|
|
|
|
<para><application>CUPS</application> will also need to be
|
|
installed on your &unix; clients. Once
|
|
<application>CUPS</application> is installed on the clients,
|
|
then <application>CUPS</application> printers that are shared
|
|
across the network are often automatically discovered by the
|
|
printer managers for various desktop environments such as
|
|
<application>GNOME</application> or
|
|
<application>KDE</application>. Alternatively, one can access
|
|
the local <application>CUPS</application> interface on the
|
|
client machine at <uri xlink:href="http://localhost:631">http://localhost:631</uri> and
|
|
click on <quote>Add Printer</quote> in the Administration
|
|
section. When presented with the <quote>Device</quote>
|
|
drop-down box, simply select the networked
|
|
<application>CUPS</application> printer, if it was automatically
|
|
discovered, or select <literal>ipp</literal> or
|
|
<literal>http</literal> and enter the <acronym>IPP</acronym> or
|
|
<acronym>HTTP</acronym> <acronym>URI</acronym> of the networked
|
|
<application>CUPS</application> printer, usually in one of the
|
|
two following syntaxes:</para>
|
|
|
|
<programlisting>ipp://<replaceable>server-name-or-ip</replaceable>/printers/<replaceable>printername</replaceable></programlisting>
|
|
|
|
<programlisting>http://<replaceable>server-name-or-ip</replaceable>:631/printers/<replaceable>printername</replaceable></programlisting>
|
|
|
|
<para>If the <application>CUPS</application> clients have
|
|
difficulty finding other <application>CUPS</application>
|
|
printers shared across the network, sometimes it is helpful to
|
|
add or create a file
|
|
<filename>/usr/local/etc/cups/client.conf</filename> with a
|
|
single entry as follows:</para>
|
|
|
|
<programlisting>ServerName <replaceable>server-ip</replaceable></programlisting>
|
|
|
|
<para>In this case, <replaceable>server-ip</replaceable> would be
|
|
replaced by the local <acronym>IP</acronym> address of the
|
|
<application>CUPS</application> server on the network.</para>
|
|
</sect2>
|
|
|
|
<sect2 xml:id="printing-cups-clients-windows">
|
|
<title>&windows; Clients</title>
|
|
|
|
<para>Versions of &windows; prior to XP did not have the
|
|
capability to natively network with <acronym>IPP</acronym>-based
|
|
printers. However, &windowsxp; and later versions do have this
|
|
capability. Therefore, to add a <application>CUPS</application>
|
|
printer in these versions of &windows; is quite easy.
|
|
Generally, the &windows; administrator will run the &windows;
|
|
<literal>Add Printer</literal> wizard, select <literal>Network
|
|
Printer</literal> and then enter the <acronym>URI</acronym> in
|
|
the following syntax:</para>
|
|
|
|
<programlisting>http://<replaceable>server-name-or-ip</replaceable>:631/printers/<replaceable>printername</replaceable></programlisting>
|
|
|
|
<para>If one has an older version of &windows; without native
|
|
<acronym>IPP</acronym> printing support, then the general means
|
|
of connecting to a <application>CUPS</application> printer is to
|
|
use <package>net/samba3</package> and
|
|
<application>CUPS</application> together, which is a topic
|
|
outside the scope of this chapter.</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="printing-cups-troubleshooting">
|
|
<title>CUPS Troubleshooting</title>
|
|
|
|
<para>Difficulties with <application>CUPS</application> often lies
|
|
in permissions. First, double check the &man.devfs.8; permissions
|
|
as outlined above. Next, check the actual permissions of the
|
|
devices created in the file system. It is also helpful to make
|
|
sure your user is a member of the <systemitem class="groupname">cups</systemitem>
|
|
group. If the permissions check boxes in the Administration
|
|
section of the <application>CUPS</application> web interface do
|
|
not seem to be working, another fix might be to manually backup
|
|
the main <application>CUPS</application> configuration file
|
|
located at <filename>/usr/local/etc/cups/cupsd.conf</filename> and
|
|
edit the various configuration options and try different
|
|
combinations of configuration options. One sample
|
|
<filename>/usr/local/etc/cups/cupsd.conf</filename> to test is
|
|
listed below. Please note that this sample
|
|
<filename>cupsd.conf</filename> file sacrifices security for
|
|
easier configuration; once the administrator successfully
|
|
connects to the <application>CUPS</application> server and
|
|
configures the clients, it is advisable to revisit this
|
|
configuration file and begin locking down access.</para>
|
|
|
|
<programlisting># Log general information in error_log - change "info" to "debug" for
|
|
# troubleshooting...
|
|
LogLevel info
|
|
|
|
# Administrator user group...
|
|
SystemGroup wheel
|
|
|
|
# Listen for connections on Port 631.
|
|
Port 631
|
|
#Listen localhost:631
|
|
Listen /var/run/cups.sock
|
|
|
|
# Show shared printers on the local network.
|
|
Browsing On
|
|
BrowseOrder allow,deny
|
|
#BrowseAllow @LOCAL
|
|
BrowseAllow 192.168.1.* # change to local LAN settings
|
|
BrowseAddress 192.168.1.* # change to local LAN settings
|
|
|
|
# Default authentication type, when authentication is required...
|
|
DefaultAuthType Basic
|
|
DefaultEncryption Never # comment this line to allow encryption
|
|
|
|
# Allow access to the server from any machine on the LAN
|
|
<Location />
|
|
Order allow,deny
|
|
#Allow localhost
|
|
Allow 192.168.1.* # change to local LAN settings
|
|
</Location>
|
|
|
|
# Allow access to the admin pages from any machine on the LAN
|
|
<Location /admin>
|
|
#Encryption Required
|
|
Order allow,deny
|
|
#Allow localhost
|
|
Allow 192.168.1.* # change to local LAN settings
|
|
</Location>
|
|
|
|
# Allow access to configuration files from any machine on the LAN
|
|
<Location /admin/conf>
|
|
AuthType Basic
|
|
Require user @SYSTEM
|
|
Order allow,deny
|
|
#Allow localhost
|
|
Allow 192.168.1.* # change to local LAN settings
|
|
</Location>
|
|
|
|
# Set the default printer/job policies...
|
|
<Policy default>
|
|
# Job-related operations must be done by the owner or an administrator...
|
|
<Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs \
|
|
Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription \
|
|
Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job \
|
|
CUPS-Move-Job>
|
|
Require user @OWNER @SYSTEM
|
|
Order deny,allow
|
|
</Limit>
|
|
|
|
# All administration operations require an administrator to authenticate...
|
|
<Limit Pause-Printer Resume-Printer Set-Printer-Attributes Enable-Printer \
|
|
Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs \
|
|
Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer \
|
|
Promote-Job Schedule-Job-After CUPS-Add-Printer CUPS-Delete-Printer CUPS-Add-Class \
|
|
CUPS-Delete-Class CUPS-Accept-Jobs CUPS-Reject-Jobs CUPS-Set-Default>
|
|
AuthType Basic
|
|
Require user @SYSTEM
|
|
Order deny,allow
|
|
</Limit>
|
|
|
|
# Only the owner or an administrator can cancel or authenticate a job...
|
|
<Limit Cancel-Job CUPS-Authenticate-Job>
|
|
Require user @OWNER @SYSTEM
|
|
Order deny,allow
|
|
</Limit>
|
|
|
|
<Limit All>
|
|
Order deny,allow
|
|
</Limit>
|
|
</Policy></programlisting>
|
|
</sect1>
|
|
<index/>
|
|
</article>
|