Таким образом, имея локальную очередь печати, вы можете преобразовать ее в сетевую очередь, заменив опцию
lp
опциями
rm
и
rp
. В этом случае вместо вывода данных на локальное устройство компьютер будет передавать задания на узел, заданный с помощью опции
rm
, в очередь, которая указана как значение опции
rp
. На сервере в описании очереди, вероятнее всего, будет присутствовать опция
lp
, но вместо нее могут быть включены опции
rm
и
rp
. Следует заметить, что такая конфигурация нежелательна, в этом случае лучше непосредственно указать в клиентской системе реальный сервер печати. (Исключением являются ситуации, когда средства обработки данных, например Ghostscript, выносятся с сервера печати на другой компьютер либо когда конфигурация сети не обеспечивает непосредственное взаимодействие клиента и сервера.)
Если сервер печати не поддерживает LPD-соединения, необходимо использовать более сложную конфигурацию. Например, сервер может быть настроен для обработки заданий на печать, передаваемых средствами SMB/CIFS или AppleTalk. В таком случае вам надо создать сценарий, который обрабатывал бы задания
на печать, и вызывать его с помощью опции
if
. Примеры подобных решений приведены в документации на Samba и Netatalk.
Настройка сервера LPRng
С точки зрения пользователя система печати LPRng работает так же, как и BSD LPD. Это вполне закономерно, так как средства LPRng были разработаны для замены BSD LPD. LPRng использует файл
/etc/printcap
, в котором содержится такая же информация, как и в одноименном файле BSD LPD. Однако средства контроля доступа к серверу печати в LPRng реализованы совершенно по-другому. Вместо списка клиентов, которым разрешен доступ, в LPRng используется гораздо более сложная система печати, для управления которой служит файл
/etc/lpd.perms
.
Редактирование файла
/etc/lpd.perms
Файл
/etc/lpd.perms
управляет доступом к системе печати в целом. Файлы
lpd.perms
могут находиться также в каталогах спулинга для отдельных очередей (
/var/spool/lpd/имя_очереди
). Если такие файлы присутствуют, они осуществляют контроль за конкретными очередями, в то время как в файле
/etc/lpd.perms
указываются глобальные опции.
Независимо от расположения файла
lpd.perms
, в нем содержатся пять типов записей. Комментарии начинаются с символа
#
. В отличие от файла
/etc/hosts.lpd
, вы можете включать комментарии в строку после основной команды. Остальные четыре типа записей приведены ниже.
DEFAULT ACCEPT
DEFAULT REJECT
ACCEPT [ключ=значение[, значение]* ]*
REJECT [ключ = значение [, значение]* ]*
Первые два типа записей задают политику системы по умолчанию, т. е. общие правила по предоставлению или запрету доступа. В большинстве пакетов LPRng, поставляемых в составе дистрибутивных версий Linux, в файле
/etc/lpd.perms
содержится строка
DEFAULT ACCEPT
. Для сравнения, пакеты BSD LPD по умолчанию разрешают доступ только для узла
localhost
, или 127.0.0.1 (т. е. для компьютера, на котором выполняется данное программное обеспечение). Таким образом, при настройке системы печати LPRng желательно уточнить политику доступа, используя для этого опции
ACCEPT
и
REJECT
.
Опции
ACCEPT
и
REJECT
задают типы обращений, которые сервер должен соответственно принимать или отвергать. За именем опции следует один из ключей, указанных в столбце Key табл. 9.2, и значения, заданные в остальных столбцах этой таблицы. Столбец Connect определяет способность устанавливать соединения. Столбцы Job Spool и Job Print указывают на возможность передавать задание спулеру и выводить их на печать. В столбцах
lpq
,
lprm
и
lрс
указано, могут ли выполняться задачи, которыми в обычных условиях управляют утилиты с этими именами. В большинстве случаев наличие одной из этих возможностей означает наличие их всех (по крайней мере, тех, которые имеют смысл в конкретном контексте). Некоторые значения несовместимы с определенными ключами (они отмечены в табл. 9.2 символом —). Для того чтобы изменить значение на обратное, надо указать перед ним
NOT
. IP-адрес может определять всю сеть, после него надо указать символ
/
и задать маску подсети.
Таблица 9.2. Ключи и их значения, используемые при формировании файла
lpd.perms
Key
Connect
Job Spool
Job Print
lpq
lprm
lpc
SERVICE
X
R
P
Q
M
С или S
USER
—
Имя пользователя
Имя пользователя
Имя пользователя
Имя пользователя
Имя пользователя
HOST
Удаленный узел
Имя узла
Имя узла
Имя узла
Имя узла
Имя узла
GROUP
—
Имя пользователя
Имя пользователя
Имя пользователя
Имя пользователя
Имя пользователя
IP
IP-адрес удаленного узла
IP-адрес узла
IP-адрес узла
IP-адрес удаленного узла
IP-адрес узла
IP-адрес узла
PORT
Номер порта
Номер порта
—
Номер порта
Номер порта
Номер порта
REMOTEUSER
—
Имя
пользователя
Имя пользователя
Имя пользователя
Имя пользователя
Имя пользователя
REMOTEHOST
Удаленный узел
Удаленный узел
Узел
Удаленный узел
Удаленный узел
Удаленный узел
REMOTEGROUP
—
Имя пользователя
Имя пользователя
Имя пользователя
Имя пользователя
Имя пользователя
REMOTEIP
IP-адрес удаленного узла
IP-адрес удаленного узла
IP-адрес узла
IP-адрес удаленного узла
IP-адрес удаленного узла
IP-адрес удаленного узла
CONTROLLINE
—
Шаблон
Шаблон
Шаблон
Шаблон
Шаблон
PRINTER
—
Имя принтера
Имя принтера
Имя принтера
Имя принтера
Имя принтера
FORWARD
—
—
—
—
—
—
SAMEHOST
—
—
—
—
—
—
SAMEUSER
—
—
—
—
—
—
SERVER
—
—
—
—
—
Опции, предназначенные для контроля доступа, являются достаточно сложными, поэтому имеет смысл пояснить их на конкретных примерах. Рассмотрим следующие строки, входящие в состав стандартного файла
/etc/lpd.perms
:
ACCEPT SERVICE=M SAMEHOST SAMEUSER
ACCEPT SERVICE=M SERVER REMOTEUSER=root
REJECT SERVICE=M
В этих трех строках указано, кто может использовать утилиту
lprm
для удаления заданий. В каждой строке содержится опция
SERVICE=M
, которая означает, что строка соответствует функциям
lprm
. Это соответствие можно проследить по строке
SERVICE
табл. 9.2. В первой из указанных трех строк содержатся также опции
SAMEHOST
и
SAMEUSER
, которые указывают на то, что команда принимается только в том случае, если она передана с того же компьютера, что и задание на печать, и от того же пользователя, который является владельцем этого задания. В состав второй строки включены опции
SERVER
и
REMOTEUSER=root
. Они означают, что пользователь, зарегистрированный на сервере как
root
, имеет право удалять задания. Последняя строка запрещает обработку прочих запросов, поступающих от
lprm
. (LPRng просматривает файл
lpd.perms
до тех пор, пока не будет найдена опция, которая соответствовала бы поступившей команде. В данном случае две записи
ACCEPT SERVICE=M
предшествуют записи
REJECT SERVICE=M
, поэтому опции
ACCEPT
имеют преимущество перед опцией
REJECT
.)
Как было сказано ранее, во многих случаях система LPRng по умолчанию настраивается так, чтобы она принимала обращения с любого узла. Подобная конфигурация недопустима с точки зрения безопасности, так как любой внешний пользователь может запустить задание на печать, в результате чего будут расходоваться бумага и ресурсы принтера. Кроме того, при обнаружении недостатков в защите LPRng неограниченный доступ к этой системе предоставит дополнительную возможность для взлома принтера. Исходя из этих соображений возможности пользователей по обращению к серверу печати необходимо ограничить. Сделать это можно с помощью брандмауэра (вопросы настройки брандмауэра будут рассмотрены в главе 25). Кроме того, я настоятельно рекомендую вам принять дополнительные меры по защите самой системы LPRng. Предположим, что вы настраиваете сервер печати, который должен обрабатывать задания, переданные из сети 172.22.0.0/16, и с компьютера, на котором установлен сервер; обращения с других узлов должны отвергаться. Сделать это можно с помощью следующих записей:
ACCEPT SERVICE=X SERVER
REJECT SERVICE=X NOT REMOTEIP=172.22.0.0/16
Данные строки ограничивают способность устанавливать соединения с сервером, а следовательно, возможность передавать задания на печать и выполнять прочие действия. Первая строка разрешает устанавливать соединения при обращении с сервера (эти обращения поступают с интерфейса, который имеет адрес 127.0.0.1, поэтому использование
REMOTEIP=127.0.0.1
вместо
SERVER
привело бы к аналогичному результату). При отсутствии этой строки следующая запись блокировала бы обращения с локального компьютера, что в данном случае нежелательно. Вторая строка отвергает все попытки установить соединения, кроме тех, которые предпринимаются компьютерами, принадлежащими сети 172.22.0.0/16. Если бы у вас возникла необходимость принимать обращения из нескольких сетей, вам бы пришлось включить перед опцией
REJECT
еще одну опцию
ACCEPT
и указать для нее адрес дополнительной сети, компьютеры которой имели бы право устанавливать соединения с сервером.