Спулер LPRng
Категория: Печать | Автор: admin | 20-06-2010, 22:58 | Просмотров: 4495

LPRng — это новый спулер печати, основанный на BSD-системе. Система LPRng, текущая поддержка которой осуществляется Патриком Пауэллом (Patrick Powell) из AStArt Technologies, представляет собой удачную попытку совместить наилучшие черты систем печати BSD и System V.

LPRng заменяет текущую систему печати совместимыми с нею, но улучшенными командами. Все общие команды BSD остаются доступными. Наиболее важные команды System V также поддерживаются и выполняются как ссылки на свои двойники системы BSD. Например, команда является ссылкой на команду lpr, а команда cancel — ссылкой на lprm. Эти команды ожидают своего вызова и затем выполняются.

Одной из наиболее важных проблем, возникающих при использовании системы печати BSD, является то, что почти все программное обеспечениепечати должно запускаться пользователем root. Это относится не только к lpr-клиентам, но и к lpd-фильтрам. Поскольку фильтры часто представляют собой сценарии интерпретатора команд, такая перспектива пугает.

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

Одной из наиболее полезных особенностей LPRng считается ее способность выдавать подробные диагностические сообщения и уведомления об ошибках. Вместо того чтобы молча не принимать задание или возвращать непонятые сообщения, программы этого пакета дают подробные и полезные объяснения тому, что делается неправильно.

Хотя демон lpd обеспечивает контроль доступа через файл /etc/hosts.lpd, никакая аутентификация невозможна. LPRng поддерживает методы аутентификации Kerberos 5, SSL и PGP.

И наконец, LPRng предоставляет довольно большие возможности по управлению очередью, большая часть которых унаследована от системы System V. LPRng обеспечивает динамическое перенаправление очереди на печать, поддержку многих принтеров для одной очереди и даже распределение нагрузки между несколькими принтерами.

Учитывая все эти улучшения, почему бы не перейти к использованию LPRng? В случае небольшого сетевого окружения, состоящего из малого числа пользователей и еще меньшего количества принтеров обе системы печати, и BSD, и System V, работают одинаково хорошо. Если не планируется добавлять много новых принтеров или если особенности и дополнительные средства защиты вас не волнуют, установка и конфигурирование системы LPRng, возможно, не оправдают затраченных усилий.

Как минимум, рассмотрите возможность установки LPRng на сервере печати. Этот простой шаг значительно повысит безопасность и функциональность развертывания сети при весьма незначительных трудозатратах.

 

Команды LPRng

 

Версия команды lpr спулера LPRng обратно совместима с большинством других версий этой команды. Единственным исключением стал флаг -s, который игнорируется командой lpr спулера LPRng. Этот флаг предназначается для организации символической ссылки на печатаемый файл вместо создания его копии. Обычно такой прием применяется при печати больших файлов.

Версия команды lpr спулера LPRng имеет богатые возможности. Чрезвычайно полезными являются флаги вывода подробной информации -V и отладочных данных -D (или -D5 для получения подробных отладочных данных).

Команды LPRng позволяют кроме имени принтера указать машину и порт, к которой он подключен. Эта функция дает возможность пользователям осуществлять печать на удаленных принтерах, которые не указаны в локальном файле printcap.

Для указания компьютера, к которому подключен принтер, добавьте его имя к имени принтера в виде @имя_компьютера. После этого может быть задан порт как %порт. Например:

 

# lpr -Phowler-lw@beast%8552 имя_файла
 

 

Такой способ задания принтера можно использовать для команд lpr, lpq, lprm и lpc спулера LPRng, предполагая, что клиенты системы печати часто вообще не нуждаются в файле printcap.

Если принтер не указан в командной строке, используется значение переменой среды PRINTER. Если же эта переменная не задана, применяется первая запись файла /etc/printcap. Если и файла printcap не существует, то используется принтер, заданный по умолчанию в файле lpd.conf.

Команда lpq спулера LPRng имеет ряд новых функций. Добавлены несколько форматов выводных данных при указании флагов -s, -l и -L, полезных в сценариях, работа которых зависит от вывода команды lpq. Также имеется флаг, задающий периодическое выполнение запроса (-t секунд). Кроме того, с этой командой можно использовать флаг отладки, описанный выше. При указании флага -D5 в вывод команды включаются подробные сообщения о состоянии, полученные от локальных и удаленных принтеров, а также от спулеров печати.

Возможно, самой важной особенностью команды lpc спулера LPRng является ее способность распределять запросы по приоритетам. Правила задания приоритетов могут быть достаточно сложными, для удовлетворения требований любой политики. В отличие от традиционной команды lpc, версия этой команды спулера LPRng может быть запущена по сети.

Команда lprm спулера LPRng позволяет ликвидировать задания на печать, основываясь на различных критериях. Традиционной команде необходимо указывать идентификатор задания или имя пользователя, а рассматриваемая команда позволяет удалять из буфера те задания, идентификаторы которых являются результатом вычисления регулярного выражения.

 

Получение и инсталляция LPRng

 

Инсталляционный пакет LPRng можно получить с Web-узла www.astart.com. Документация входит в комплект поставки и помогает выполнить инсталляцию. Кроме этого, инструкции об инсталляции и конфигурировании пакета имеются в вопросах FAQ на указанном Web-узле.

Одной из наиболее впечатляющих возможностей LPRng является способность оперировать с минимальным количеством двоичных файлов. Для того чтобы скомпилировать LPRng таким образом, укажите опцию --disable-setuid для сценария configure при первоначальном задании среды компиляции:

# ./configure --disable-setuid

 

Если необходимо, чтобы демон lpd работал со своим стандартным портом 515, его следует запускать от имени владельца root. Привилегии демона lpd нужно изменить вручную:

# chmod 4755 /usr/local/sbin/lpd

 

Стандартный файл Makefile пакета LPRng версии 3.6.12 не работает с утилитой make системы Solaris 2.7. Чтобы спулер LPRng был скомпилирован корректно, необходимо включить в содержимое переменной path имя каталога, в котором находится утилита make GNU, ранее имени каталога со стандартной утилитой make системы Solaris (/usr/ccs/bin).

 

Файл /etc/lpd.conf: конфигурирование демона lpd

 

Демон lpd спулера LPRng конфигурируется посредством файла /etc/lpd.conf. В этом файле можно задать значения 185 различных параметров сервера. Большинство параметров связано с заданием стандартных каталогов и операционной системы. Также определяется способ получения значений по умолчанию для переменных, не указанных в файле /etc/printcap.

Лучшим способом создать собственный файл конфигурирования lpd.conf является копирование файла lpd.conf из корневого каталога комплекта поставки LPRng. Этот файл содержит описания всех параметров и примеры. Если у вас нет времени на чтение этого длинного списка всех параметров, обратитесь к man-странице руководства lpd.conf.

 

Файл /etc/Ipd.perms: настройка прав доступа

 

Посредством файла /etc/lpd.perms можно задать очень сложные политики печати. Правила для управления доступом к системе печати применяются к заданиям печати в том порядке, в котором они перечислены в файле lpd.perms.

Правила состоят из двух частей. Первая часть представляет собой директиву ACCEPT или REJECT, определяющую разрешенные действия. Эти директивы сопровождаются параметрами, посредством которых задаются пользователи, компьютеры, принтеры или операции, для которых предназначено правило.

Например, следующая строка указывает системе печати, что пользователь evi с удаленного компьютера beast может создавать, помещать в буфер, удалять и проверять состояние заданий печати для принтера howler-lw.

 

ACCEPT SERVICE=P,R,M,Q REMOTEHOST=beast REMOTEUSER=evi

PRINTER=howler-lw

 

 

Однобуквенные коды, указанные в параметре SERVICE определяют операции, для которых предназначено правило. В табл. 23.6 приведены все возможные коды.

Таблица 23.6. Коды параметра SERVICE файла /etc/lpd.perms

Код

Действие

Описание

Р

Печать

Печать задания из очереди

С

Проверка принтера

Использование команды lрс (позволяет секретаршам разблокировать принтер)

R

Помещение в очередь

Помещение заданий в буфер очереди печати посредством команды lpr

М

Удаление

Удаление заданий из очереди печати посредством команды lprm

Q

Проверка состояния

Получение информации о состоянии заданий с помощью команды lpq

X

Подключение

Подключение к демону lpd

 

Проше всего создать собственный файл lpd.perms на основе файла-примера из комплекта поставки пакета LPRng. В этом примере строки с примерами директив ACCEPT и REJECT снабжены подробными комментариями. Также в файле-примере описаны все возможные параметры конфигурации.

 

Настройка базы данных printcap

 

Важно помнить о том, что файл printcap спулера LPRng обладает полной обратной совместимостью с традиционным файлом printcap системы BSD. Следовательно, все традиционные файлы printcap действительны и для системы LPRng.

Однако система LPRng также позволяет применять множество новых функций файла printcap. Описания в этом файле могут переноситься на новые строки с использованием отступов без добавления в конце переносимой строки символа обратной косой черты. Длина имени переменной не ограничивается двумя символами. Также имеется ряд сценариев, облегчающих процесс конфигурирования. Конфигурационные записи файла могут быть предназначены для различных компьютеров.

Видимо, наиболее впечатляющим средством конфигурирования LPRng является программа checkpc. По умолчанию она помещается в каталог /usr/local/bin и позволяет проверить правильность содержимого файла printcap. Она выводит предупреждения об отсутствующих каталогах буферов, несуществующих файлах и некорректных правах доступа. Если запустить программу checkpc с флагом -f, она попытается самостоятельно исправить найденные ошибки (создать отсутствующие каталоги или изменить права доступа к файлу). При указании флага -D5 программа checkpc выдаст более подробную диагностическую информацию.

 

Фильтры

 

Кроме поддержки стандартных возможностей фильтров системы BSD, система LPRng позволяет применять фильтры для заданий, отправляемых на удаленные принтеры. Эта функция служит для форматирования данных одного компьютера без ориентации на конкретный принтер.

Выходной (переменная of в файле printcap) и входной фильтры (переменная if) работают в системе LPRng несколько по-другому. Выходной фильтр в традиционной системе печати BSD применяется как к документу, так и к баннеру. В системе LPRng выходной фильтр используется только для баннера, а входной — только для печатаемого текста. Фильтры для файлов других типов задаются посредством переменных xf, где вместо х указывается буква, соответствующая типу файла. Использование всех фильтров можно запретить вводом опции -Y в строку запуска команды lpr.

В системе LPRng имеются специальные команды lpbanner, pclbanner и psbanner. Эти команды предназначены для создания текста, PCL- и PostScript-баннеров, соответственно. Каждая из них воспринимает параметры командной строки, посредством которых задаются имя баннера, имя пользователя и заголовок задания.

Система LPRng поставляется с одним очень полезным фильтром, ifhp, который позволяет осуществлять печать на потрясающем количестве принтеров. Несмотря на то что этот фильтр изначально разрабатывался для поддержки принтеров фирмы Hewlett-Packard, он позволяет работать и со многими другими принтерами. Не поддерживаемые явно принтеры обычно удается заставить работать без особого труда.

 

Учет

 

Во времена использования только построчно-печатающих принтеров учет осуществлялся просто. Можно было получить точное число напечатанных страниц для любого задания, подсчитав количество строк. Однако такой способ учета неприемлем при печати файлов PostScript.

Единственный способ узнать точное число напечатанных страниц того или иного задания на печать — это подсчитать количество листов, вышедших из принтера. К счастью, большинство современных принтеров содержат счетчик страниц, которые были напечатаны ими за весь срок службы. Фиксируя значения этого счетчика до и после выполнения задания на печать, драйвер принтера позволяет определять правильное число напечатанных страниц.

Подобный способ подсчета напечатанных страниц реализован и в спулере LPRng. Соответствующий сценарий находится з файле ./UTILS/accounting.pl. Прочитайте комментарии в начале этого файла, чтобы понять, как корректно вызывать сценарий из файла printcap.



 (голосов: 0)
Версия для печати | Комментариев: 0
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.


 
Логин
Пароль
 

 
Locations of visitors to this page