Добавить в избранное | Сделать стартовой страницей

Большая Linux библиотека для пользователей OS Linux и ПО для нее
Есть что сказать? Нужен совет? Посети наш форум.


При поддержке
Продвижение сайта
Продвижение сайта
Раскрутка сайта
Создание сайта
Оптимизация сайта
Интернет реклама
Аудит сайта
Администрирование сервера
настройка сервера
установка сервера
аренда сервера
Администрирование сервера
администрирование сервера
настройка сервера
аренда сервера
Rambler's Top100


Служба печати CUPS.

Автор : Alan Ward
Перевод : Юрий Султанов

Служба печати CUPS (Common Unix Printing System) предназначена для унификации доступа ко всем принтерам, находящимся в локальной сети. Возможно, будь Linux единственной ОС в мире, всем хватало бы возможностей стандартной Berkeley LPD и такая система не понадобилась, но в реальных условиях именно CUPS может обеспечить доступ к Windows и SMB-принтерам, обладая при этом возможностью периодически обновлять информацию о принтерах и объединять их в группы (в зависимости от типа или других параметров).

Компания Easy Software Products, разработавшая CUPS, распространяет ее под лицензией GPL, предоставляя на платной основе поддержку и дополнительные функции .

Программу можно скачать с сайта http://gazette.linux.ru.net/www.cups.org, либо получить в виде RPM в большинстве дистрибутивов Linux (есть в Mandrake, RedHat и SuSE). (ALT Linux, ASP Linux, Debian, Slackware и т.д. и т.п. Любой современный дистрибутив содержит в своём составе пакеты CUPS. Прим.ред.)

Как это работает?

По идее, CUPS становится полной заменой системы печати LPD, подставляя на место команды lpr и драйверов LPD свои аналоги. Программы Linux (и Unix) не замечают этой подмены, так как обе системы основаны на базе языка описания страниц Postscript.

В CUPS включена поддержка большинства принтеров, подключаемых через LPT, USB и даже COM-порты. Конечно, подключение через COM-порт - это не лучший вариант, но если у вас еще остались старые матричные принтеры, подключаемые через этот интерфейс, то CUPS позволит Вам собрать из кучи такого железа неплохой принт-сервер. Может быть, это как раз то, что нужно Вашей школе?

Обновление информации о принтерах

Служба CUPS обладает возможностью, привычной скорее для мира Windows, чем для Linux: она извещает все компьютеры в локальной сети о принтерах, доступных для печати и их состоянии.

Естественно (в отличие от Windows :), эта ее способность поддается настройке. Внося изменения в файл конфигурации CUPS (cupsd.conf), можно определить какие компьютеры (точнее, в каких подсетях) будут получать такие извещения и как часто, что позволяет сократить неизбежный в таком случае широковещательный трафик.

Классификация принтеров

Группа принтеров или класс (в терминологии CUPS) -- это несколько принтеров, которые пользовательские приложения воспринимают как один. К примеру, можно создать класс ЦВЕТНЫЕ ПРИНТЕРЫ, объединяющие все цветные принтеры. Пользователь может настроить свою программу так чтобы печатать на принтер ЦВЕТНЫЕ ПРИНТЕРЫ, и получить распечатку на любом из этих принтеров. На каком именно - будет зависеть от прав этого пользователя, либо от того, какой из принтеров будет доступен в это время

В то же время, даже если какой-либо принтер является членом группы, это не мешает пользователю печатать именно на этот принтер. А вот уже с помощью списков доступа CUPS можно добиться того, что конкретный принтер будет отвергать такие попытки, а группа принтеров, в которые он входит - напечатает задание. В результате пользователи смогут печатать на группы принтеров, а не на один принтер - все зависит от Вас!

Пример 1

В моей лаборатории есть 5 ПК, на каждом из которых установлен Linux и работает CUPS. Если мне нужно заменить принтер на одном из них, то с помощью web-интерфейса CUPS я :

  • отключаю старый принтер,
  • подключаю новый принтер,

- и все это за 30 секунд. Еще через 30 секунд все остальные ПК получают обновленную информацию об используемом принтере. Глядишь, как раз за эту минуту мой лазерный принтер и прогреется.

Пример 2

Я хочу разделить все принтеры моей школьной сети на три класса:

  • Класс "Лазерный Ч/Б печать" - на нем могут печатать все.
  • Класс "Цветной черновая печать" - на нем могут печатать все, но с ограничением количества.
  • Класс "Цветной качественная печать" - на нем можно печатать только по моему разрешению.

Большинство имеющихся принтеров непосредственно доступны с других Windows-компьютеров, смысл же установки CUPS на Linux-шлюзе и подключения принтеров к нему состоит в следующем:

  • пользователи смогут найти все принтеры в одном месте;
  • пользователи смогут печатать на принтеры, находящиеся в других подсетях и соединенных этим шлюзом, при этом не создавая неизбежного ранее (для Windows) широковещательного трафика , значительно снижающего производительность сети;
  • я буду уверен в том, что если преподаватель, находящийся на 4-ом этаже, пошлет задание на принтер, находящийся на первом, а там внезапно закончится бумага, то его задание будет перенаправлено и распечатано на бездействующем в это время принтере.

Интеграция с Windows

Если вы, работая за Linux-компьютером, хотите напечатать на Windows-принтере (либо наоборот), вам понадобится работающий сервер Samba. Установите его и проверьте, как он работает (например, попробуйте под обычным пользователем просмотреть свой домашний каталог на Linux-машине с компьютера Windows). Если у вас установлена Windows 98 или более поздняя её версия, то не забудьте указать в файле /etc/samba/smb.conf параметр "encrypt password = yes".

CUPS может использовать принтеры, к которым на Windows-компьютере открыт общий доступ, а также сетевые принтеры, использующие протокол SMB - в ее терминах они называются "Windows printer using Samba". Все, что нужно - просто указать адрес принтера в формате: smb://server/printer.

Благодаря серверу Samba Windows-компьютеры также могут использовать принтеры CUPS. Настраивайте сервер Samba как обычно - то есть не делайте ничего. Обычно доступ к принтерам открыт по умолчанию, если же это не так, добавьте в файл smb.conf соответствующую информацию. Так как Samba воспринимает принтер CUPS так же, как LPD-принтер, то при этом можно использовать любые стандартные опции (От переводчика - imho в последних версиях Samba можно явно указывать наличие CUPS. Подробнее об этом - на сайтах http://gazette.linux.ru.net/www.samba.org, http://gazette.linux.ru.net/www.cups.org и http://gazette.linux.ru.net/www.linuxprinting.org).

Сетевые принтеры

Сетевой принтер (то есть принтер, оснащенный сетевой картой и непосредственно подключенный к локальной сети) может использовать любой из множества существующих протоколов:

  • Протокол SMB - такой принтер можно увидеть в "Сетевом окружении" Windows.
  • Протокол LPD - несколько моделей принтеров Epson имеют встроенную поддержку TCP/IP и LPD и к ним можно подключиться через 515 порт, как к любому Linux-компьютеру. Для такого принтера в настройках CUPS попробуйте указать queue lp
  • Фирменный протокол (плохо дело..).

В первом и втором случае действуйте так, как будто сетевой принтер - это обычный принтер, подключаемый к компьютеру. В третьем случае - как говорится, приплыли (скорее всего:). Лично со мной такое случилось, когда я пытался достучаться до сетевого принтера Lexmark - в итоге мне пришлось подключить его к Windows-компьютеру и сделать его доступным в сети уже оттуда.

Настройка

Настраивать CUPS можно двумя способами. Можно непосредственно редактировать файл конфигурации /etc/cups/cupsd.conf, а можно набрать в браузере http://localhost:631 и воспользоваться интуитивно понятным веб-интерфейсом, очень похожим на веб-интерфейсы многих сетевых принтеров:

По умолчанию доступ к веб-интерфейсу разрешен только с того компьютера, где работает CUPS (локального интерфейса). Если вас это не устраивает, измените следующие строки в файле конфигурации cupsd.conf, и перезапустите CUPS:

                    # определяется политика доступа к
Order Deny, Allow               # главному меню веб-интерфейса
Deny From All
Allow From 127.0.0.1            # разрешить доступ с локального интерфейса
Allow From 192.168.1.*          # разрешить доступ с любого компьютера
                                # в подсети 192.168.1.0/24
Allow From mybox.mydomain       # и еще с моего компьютера в другой подсети

Также можно установить политику доступа к каждому пункту меню (Location в терминах CUPS) с любого IP-адреса, либо подсети. Это означает, что какие-то компьютеры смогут получить доступ лишь к самому серверу, но не смогут получить доступ ко всему меню конфигурации, либо каким-то отдельным его пунктам.

Если Linux-компьютер выполняет одновременно две роли: принт-сервера и моста между двумя или большим количеством IP-сетей, можно также указать, на каких интерфейсах CUPS будет принимать запросы:

Listen 127.0.0.1:631            # Не удаляйте эту строку !
Listen servename:631            # Здесь можно указать имя вашего сервера
Listen 192.168.1.1:631          # Либо его IP-адрес

Это означает, что веб-интерфейс будет доступен только через интерфейс eth0 (его IP-адрес 192.168.1.1), и недоступен на интерфейсе eth1 (его IP-адрес 172.16.0.1).

По умолчанию при доступе к веб-интерфейсу используется обычная схема авторизации (имя пользователя/пароль), но можно использовать и SSL, что довольно просто настраивается, опять же путем редактирования cupsd.conf.

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

PS. Всем, кто хотел бы перевести эту статью: с нею можно обращаться так же, как с программой под лицензией GPL - т.е. вы свободно можете (я только за!) копировать ее, публиковать и переводить - только, ПОЖАЛУЙСТА, известите меня об этом! Очень хотелось бы иметь список переводов - надеюсь, что это поможет мне на сессии :-)

Алан преподаёт Computer Science в средней школе и университете в Андорре. Из увлечений и хобби можно выделить научную фотографию (в том числе и цифровую), путешествия, коллекционирование процессоров и прочих камней. :)


Обсудить данную тему на нашем форуме "Все о Linux"