---
title: Универсальная Система Печати Unix на FreeBSD
authors:
- author: Chess Griffin
email: chess@chessgriffin.com
trademarks: ["freebsd", "general"]
---
= Универсальная Система Печати Unix на FreeBSD
:doctype: article
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:source-highlighter: rouge
:experimental:
:images-path: articles/cups/
ifdef::env-beastie[]
ifdef::backend-html5[]
include::shared/authors.adoc[]
include::shared/mirrors.adoc[]
include::shared/releases.adoc[]
include::shared/attributes/attributes-{{% lang %}}.adoc[]
include::shared/{{% lang %}}/teams.adoc[]
include::shared/{{% lang %}}/mailing-lists.adoc[]
include::shared/{{% lang %}}/urls.adoc[]
:imagesdir: ../../../images/{images-path}
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]
ifndef::env-beastie[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]
[.abstract-title]
Аннотация
Эта статья посвящена конфигурированию Универсальной Системы Печати UNIX (CUPS) на FreeBSD.
'''
toc::[]
[[printing-cups]]
== Знакомимся с Универсальной Системой Печати UNIX (CUPS)
Универсальная Система Печати UNIX (Common Unix Printing System, или сокращенно CUPS), предоставляет переносимую среду печати для UNIX(R) и UNIX(R)-подобных операционных систем. Она была разработана компанией Easy Software Products, чтобы предоставить стандартное решение в печати для всех разработчиков и пользователей UNIX(R).
Универсальная Система Печати UNIX использует протокол межсетевой печати (Internet Printing Protocol, IPP) как основу для управления заданиями на печать и очередями. Также частично поддерживаются следующие протоколы: LPD, SMB и AppSocket (также известный как JetDirect). CUPS дает возможность обзора сетевых принтеров и использования опций, базирующихся на ПостСкрипт Описании Принтеров (PostScript Printer Definition, PPD), чтобы поддерживать в UNIX(R) общепринятые традиции печати. В результате CUPS идеально подходит для совместного использования принтеров в смешанной среде из FreeBSD, Linux(R), Mac OS(R) X или Windows(R).
Официальный сайт Универсальной Системы Печати UNIX - http://www.cups.org/[http://www.cups.org/].
[[printing-cups-install]]
== Установка сервера печати CUPS
Для установки CUPS используя пакет, запустите на выполнение такую команду:
[source,shell]
....
# pkg install cups
....
Другие необязательные, но рекомендуемые к установке пакеты это package:print/gutenprint-cups[] и package:print/hplip[], каждый из которых добавляет драйвера и утилиты для разнообразных принтеров. После установки файлы конфигурации CUPS могут быть найдены в директории [.filename]#/usr/local/etc/cups#.
[[printing-cups-configuring-server]]
== Настройка сервера печати CUPS
Чтобы настроить сервер CUPS необходимо отредактировать несколько конфигурационных файлов. Для начала создайте или исправьте файл [.filename]#/etc/devfs.rules# и добавьте следующую информацию для того, чтобы установить соответствующие права на все потенциальные файлы устройств принтеров и связать принтеры с группой пользователей `cups`:
[.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/X.Y.Z' mode 0660 group cups
....
[NOTE]
====
Замените _X_, _Y_ и _Z_ номерами соответствующего принтеру целевого устройства USB, отображаемого в каталоге [.filename]#/dev/usb#. Чтобы найти требуемые значения, просмотрите вывод man:dmesg[8] и найдите связанное с вашим принтером имя специального устройства [.filename]#ugenX.Y#, последнее будет символической ссылкой на искомое устройство в каталоге [.filename]#/dev/usb#.
====
Затем, добавьте следующие две записи в [.filename]#/etc/rc.conf#:
[.programlisting]
....
cupsd_enable="YES"
devfs_system_ruleset="system"
....
Эти две записи будут запускать сервер печати CUPS во время загрузки системы и применять локальное правило devfs, созданное выше.
Для того, чтобы печать CUPS стала доступна для некоторых Microsoft(R) Windows(R) клиентов, необходимо раскомментировать следующую запись в [.filename]#/usr/local/etc/cups/mime.types# и [.filename]#/usr/local/etc/cups/mime.convs#:
[.programlisting]
....
application/octet-stream
....
По окончанию внесения изменений службы man:devfs[8] и CUPS необходимо перезапустить, для чего перезагрузите операционную систему или выполните от пользователя `root` следующие две команды:
[source,shell]
....
# /etc/rc.d/devfs restart
# /usr/local/etc/rc.d/cupsd restart
....
[[printing-cups-configuring-printers]]
== Настройка принтеров на сервере печати CUPS
После того, как система CUPS была установлена и сконфигурирована, системный администратор может начать конфигурирование локальных принтеров, подключенных к серверу печати CUPS. Эта часть процесса очень похожа, если не идентична настройке принтеров CUPS в других UNIX(R)-подобных операционных системах, таких как дистрибутивы Linux(R).
Основным способом управления и администрирования сервера CUPS является веб-интерфейс, на который можно попасть запустив веб-браузер и набрав http://localhost:631[http://localhost:631] в его адресной строке. Если сервер CUPS находится на другой машине в сети, замените `localhost` на IP адрес сервера. Веб-интерфейс CUPS достаточно очевиден, там есть разделы для управления принтерами и заданиями на печать, авторизацией пользователей и т.п. Кроме того, в правой части страницы администрирования есть несколько флажков (check-box), дающих удобный доступ к часто меняемым установкам, таким как разрешение публичного доступа к подключенным к системе принтерам, предоставление удаленного управления сервером CUPS, изменение уровня доступа пользователей к принтерам и их заданиям на печать.
Добавление принтера в общем такое же простое, как нажатие "Add Printer" на странице администрирования веб-интерфейса сервера CUPS или как нажатие одной из кнопок "New Printers Found" на той же странице администрирования. Когда перед вами предстанет выпадающий список "Device", просто выберите требуемый локально подключенный принтер, а дальше следуйте подсказкам интерфейса. В случае если были установлены порты или пакеты package:print/gutenprint-cups[] или package:print/hplip[], как указывалось выше, дополнительные драйвера печати будут доступны на последующих страницах, что может обеспечить большую надежность и расширенные возможности.
[[printing-cups-clients]]
== Конфигурирование клиентов CUPS
После того, как сервер CUPS был настроен, принтеры добавлены и сделаны доступными в сети, следующий шаг - это настройка клиентов или машин, которые будут иметь доступ к серверу CUPS. Если у вас единственный настольный компьютер, который работает одновременно и сервером и клиентом, то в большинстве этой информации вы не нуждаетесь.
[[printing-cups-clients-unix]]
=== UNIX(R) клиенты
На UNIX(R) клиентах также потребуется установить CUPS. После установки системы печати на клиенте, CUPS-принтеры, присутствующие в сети, чаще всего автоматически находятся менеджерами принтеров разных графических оболочек, таких как GNOME или KDE. В качестве альтернативы, вы можете воспользоваться веб-интерфейсом CUPS на клиентской машине по адресу http://localhost:631[http://localhost:631] и на странице администрирования выбрать "Add Printer". Когда перед вами предстанет выпадающий список "Device", просто выберите сетевой CUPS принтер, если он был обнаружен автоматически, или выберите `ipp` или `http` и введите IPP или HTTP адрес (URI) сетевого CUPS принтера:
[.programlisting]
....
ipp://server-name-or-ip/printers/printername
....
[.programlisting]
....
http://server-name-or-ip:631/printers/printername
....
Если CUPS клиент не находит в сети принтеры, доступные через сервер CUPS, то иногда помогает создание или изменение файла [.filename]#/usr/local/etc/cups/client.conf# с добавлением единственной записи, подобной следующей:
[.programlisting]
....
ServerName server-ip
....
В этом случае _server-ip_ необходимо заменить на IP адрес сервера CUPS в сети.
[[printing-cups-clients-windows]]
=== Windows(R)-клиенты
Версии Windows(R), предшествующие XP, не имели встроенной поддержки протокола IPP. Однако Windows(R) XP и более поздние версии уже обладают такой возможностью. Следовательно, добавить CUPS принтер в этих версиях Windows(R) довольно просто. В большинстве случаев, администратору Windows(R) потребуется запустить мастера установки принтера (`Add Printer`) выбрать сетевой принтер (`Network Printer`), а затем ввести URI следующего формата:
[.programlisting]
....
http://server-name-or-ip:631/printers/printername
....
Если используется версия Windows(R) без поддержки протокола IPP, то общим случаем подключения к CUPS-принтеру будет совместное использование CUPS и package:net/samba3[]. Описание этой возможности выходит за рамки данной статьи.
[[printing-cups-troubleshooting]]
== Устранение неполадок с CUPS
Проблемы c CUPS часто возникают из-за неверных прав доступа. Сначала дважды проверьте права доступа в man:devfs[8] (сверьтесь с уже описанными выше). Затем, проверьте реальные права устройств, созданных в файловой системе. Также бывает полезным удостовериться, что ваш пользователь входит в группу `cups`. Если у вас складывается впечатление, что флажки прав доступа на странице администрирования веб-интерфейса CUPS не работают, то иным решением может быть резервное копирование конфигурационного файла [.filename]#/usr/local/etc/cups/cupsd.conf# и редактирование разных опций конфигурации с подбором их комбинаций. Ниже приведено содержимое тестового файла конфигурации [.filename]#/usr/local/etc/cups/cupsd.conf#. Пожалуйста, обратите внимание на то, что безопасность в этом примере [.filename]#cupsd.conf# была пожертвована в угоду простоте настройки; как только администратор успешно подсоединится к серверу CUPS и сконфигурирует клиентов, рекомендуется пересмотреть данную конфигурацию и добавить разграничение доступа.
[.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
Order allow,deny
#Allow localhost
Allow 192.168.1.* # change to local LAN settings
# Allow access to the admin pages from any machine on the LAN
#Encryption Required
Order allow,deny
#Allow localhost
Allow 192.168.1.* # change to local LAN settings
# Allow access to configuration files from any machine on the LAN
AuthType Basic
Require user @SYSTEM
Order allow,deny
#Allow localhost
Allow 192.168.1.* # change to local LAN settings
# Set the default printer/job policies...
# Job-related operations must be done by the owner or an adminstrator...
Require user @OWNER @SYSTEM
Order deny,allow
# All administration operations require an adminstrator to authenticate...
AuthType Basic
Require user @SYSTEM
Order deny,allow
# Only the owner or an administrator can cancel or authenticate a job...
Require user @OWNER @SYSTEM
Order deny,allow
Order deny,allow
....