# Универсальная Система Печати Unix на FreeBSD

### Chess Griffin

`<chess@chessgriffin.com>`

$FreeBSD: doc/ru_RU.KOI8-R/articles/cups/article.sgml,v 1.3 2010/01/19 01:36:35 bland Exp $

FreeBSD это зарегистрированная торговая марка FreeBSD Foundation.

Многие из обозначений, используемые производителями и продавцами для обозначения своих продуктов, заявляются в качестве торговых марок. Когда такие обозначения появляются в этом документе, и Проекту FreeBSD известно о торговой марке, к обозначению добавляется знак ''™'' или ''®''.

Эта статья посвящена конфигурированию Универсальной Системы Печати UNIX (CUPS) на FreeBSD.

[ По разделам / Одним файлом ]

## 1. Знакомимся с Универсальной Системой Печати UNIX (CUPS)

Универсальная Система Печати UNIX (Common Unix Printing System, или сокращенно CUPS), предоставляет переносимую среду печати для UNIX® и UNIX-подобных операционных систем. Она была разработана компанией Easy Software Products, чтобы предоставить стандартное решение в печати для всех разработчиков и пользователей UNIX.

Универсальная Система Печати UNIX использует протокол межсетевой печати (Internet Printing Protocol, IPP) как основу для управления заданиями на печать и очередями. Также частично поддерживаются следующие протоколы: LPD, SMB и AppSocket (также известный как JetDirect). CUPS дает возможность обзора сетевых принтеров и использования опций, базирующихся на ПостСкрипт Описании Принтеров (PostScript Printer Definition, PPD), чтобы поддерживать в UNIX общепринятые традиции печати. В результате CUPS идеально подходит для совместного использования принтеров в смешанной среде из FreeBSD, Linux®, Mac OS® X или Windows®.

Официальный сайт Универсальной Системы Печати UNIX -- http://www.cups.org/.

## 2. Установка сервера печати CUPS

CUPS может быть установлена из портов или уже собранных пакетов. Чтобы установить CUPS из коллекции портов, выполните с привилегиями пользователя `root` следующую команду:

    # cd /usr/ports/print/cups && make install clean

Для установки CUPS используя пакет, запустите на выполнение такую команду:

    # pkg_add -r cups

Другие необязательные, но рекомендуемые к установке порты или пакеты это `print/gutenprint-cups` и `print/hplip`, каждый из которых добавляет драйвера и утилиты для разнообразных принтеров. После установки файлы конфигурации CUPS могут быть найдены в директории `/usr/local/etc/cups`.

## 3. Настройка сервера печати CUPS

Чтобы настроить сервер CUPS необходимо отредактировать несколько конфигурационных файлов. Для начала создайте или исправьте файл `/etc/devfs.rules` и добавьте следующую информацию для того, чтобы установить соответствующие права на все потенциальные файлы устройств принтеров и связать принтеры с группой пользователей `cups`:

    [system=10]
    add path 'unlpt*' mode 0660 group cups
    add path 'ulpt*' mode 0660 group cups
    add path 'lpt*' mode 0660 group cups

Затем, добавьте следующие две записи в `/etc/rc.conf`:

    cupsd_enable="YES"
    devfs_system_ruleset="system"

Эти две записи будут запускать сервер печати CUPS во время загрузки системы и применять локальное правило devfs, созданное выше.

Для того, чтобы печать CUPS стала доступна для некоторых Microsoft® Windows клиентов, необходимо раскомментировать следующую запись в `/usr/local/etc/cups/mime.types` и `/usr/local/etc/cups/mime.convs`:

    application/octet-stream

По окончанию внесения изменений службы devfs(8) и CUPS необходимо перезапустить, для чего перезагрузите операционную систему или выполните от пользователя `root` следующие две команды:

    # /etc/rc.d/devfs restart
    # /usr/local/etc/rc.d/cupsd restart

## 4. Настройка принтеров на сервере печати CUPS

После того, как система CUPS была установлена и сконфигурирована, системный администратор может начать конфигурирование локальных принтеров, подключенных к серверу печати CUPS. Эта часть процесса очень похожа, если не идентична настройке принтеров CUPS в других UNIX-подобных операционных системах, таких как дистрибутивы Linux.

Основным способом управления и администрирования сервера CUPS является веб-интерфейс, на который можно попасть запустив веб-браузер и набрав http://localhost:631 в его адресной строке. Если сервер CUPS находится на другой машине в сети, замените `localhost` на IP адрес сервера. Веб-интерфейс CUPS достаточно очевиден, там есть разделы для управления принтерами и заданиями на печать, авторизацией пользователей и т.п. Кроме того, в правой части страницы администрирования есть несколько флажков (check-box), дающих удобный доступ к часто меняемым установкам, таким как разрешение публичного доступа к подключенным к системе принтерам, предоставление удаленного управления сервером CUPS, изменение уровня доступа пользователей к принтерам и их заданиям на печать.

Добавление принтера в общем такое же простое, как нажатие ''Add Printer'' на странице администрирования веб-интерфейса сервера CUPS или как нажатие одной из кнопок ''New Printers Found'' на той же странице администрирования. Когда перед вами предстанет выпадающий список ''Device'', просто выберите требуемый локально подключенный принтер, а дальше следуйте подсказкам интерфейса. В случае если были установлены порты или пакеты `print/gutenprint-cups` или `print/hplip`, как указывалось выше, дополнительные драйвера печати будут доступны на последующих страницах, что может обеспечить большую надежность и расширенные возможности.

## 5. Конфигурирование клиентов CUPS

После того, как сервер CUPS был настроен, принтеры добавлены и сделаны доступными в сети, следующий шаг -- это настройка клиентов или машин, которые будут иметь доступ к серверу CUPS. Если у вас единственный настольный компьютер, который работает одновременно и сервером и клиентом, то в большинстве этой информации вы не нуждаетесь.

### 5.1. UNIX® клиенты

На UNIX клиентах также потребуется установить CUPS. После установки системы печати на клиенте, CUPS-принтеры, присутствующие в сети, чаще всего автоматически находятся менеджерами принтеров разных графических оболочек, таких как GNOME или KDE. В качестве альтернативы, вы можете воспользоваться веб-интерфейсом CUPS на клиентской машине по адресу http://localhost:631 и на странице администрирования выбрать ''Add Printer''. Когда перед вами предстанет выпадающий список ''Device'', просто выберите сетевой CUPS принтер, если он был обнаружен автоматически, или выберите `ipp` или `http` и введите IPP или HTTP адрес (URI) сетевого CUPS принтера:

    ipp://server-name-or-ip/printers/printername

    http://server-name-or-ip:631/printers/printername

Если CUPS клиент не находит в сети принтеры, доступные через сервер CUPS, то иногда помогает создание или изменение файла `/usr/local/etc/cups/client.conf` с добавлением единственной записи, подобной следующей:

    ServerName server-ip

В этом случае `server-ip` необходимо заменить на IP адрес сервера CUPS в сети.

### 5.2. Windows®-клиенты

Версии Windows, предшествующие XP, не имели встроенной поддержки протокола IPP. Однако Windows XP и более поздние версии уже обладают такой возможностью. Следовательно, добавить CUPS принтер в этих версиях Windows довольно просто. В большинстве случаев, администратору Windows потребуется запустить мастера установки принтера (`Add Printer`) выбрать сетевой принтер (`Network Printer`), а затем ввести URI следующего формата:

    http://server-name-or-ip:631/printers/printername

Если используется версия Windows без поддержки протокола IPP, то общим случаем подключения к CUPS-принтеру будет совместное использование CUPS и `net/samba3`. Описание этой возможности выходит за рамки данной статьи.

## 6. Устранение неполадок с CUPS

Проблемы c CUPS часто возникают из-за неверных прав доступа. Сначала дважды проверьте права доступа в devfs(8) (сверьтесь с уже описанными выше). Затем, проверьте реальные права устройств, созданных в файловой системе. Также бывает полезным удостовериться, что ваш пользователь входит в группу `cups`. Если у вас складывается впечатление, что флажки прав доступа на странице администрирования веб-интерфейса CUPS не работают, то иным решением может быть резервное копирование конфигурационного файла `/usr/local/etc/cups/cupsd.conf` и редактирование разных опций конфигурации с подбором их комбинаций. Ниже приведено содержимое тестового файла конфигурации `/usr/local/etc/cups/cupsd.conf`. Пожалуйста, обратите внимание на то, что безопасность в этом примере `cupsd.conf` была пожертвована в угоду простоте настройки; как только администратор успешно подсоединится к серверу CUPS и сконфигурирует клиентов, рекомендуется пересмотреть данную конфигурацию и добавить разграничение доступа.

    # 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 adminstrator...
      <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 adminstrator 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>

## 7. Настройка портов использующих CUPS

Если CUPS будет служить в качестве основной системы печати, то можно по желанию добавить несколько записей в `/etc/make.conf`, которые выделят CUPS среди других систем. Вот некоторые из них:

    WITH_CUPS=YES
    CUPS_OVERWRITE_BASE=YES
    WITHOUT_LPR=YES

Первая переменная, `WITH_CUPS`, добавляет поддержку CUPS к портам, в которых предусмотрена такая возможность. Вторая запись, `CUPS_OVERWRITE_BASE`, исправит некоторые символические ссылки и пути, которые иначе приводили-бы к системе печати FreeBSD по умолчанию -- LPR. Также она предотвратит откат этих изменений во время следующего обновления системы посредством `buildworld`. Третья переменная, `WITHOUT_LPR`, предотвратит включение поддержки LPR в портах, потенциально ее использующих.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам, связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.