Редактирование файла /etc/cups/cupsd.conf

Редактирование файла /etc/cups/cupsd.conf

Работой сервера CUPS управляет файл /etc/cups/cupsd.conf. Поскольку система CUPS позаимствовала многие средства сервера HTTP, структура ее конфигурационного файла напоминает соответствующий файл Apache (он будет рассмотрен в главе 20). При работе CUPS также применяются другие конфигурационные файлы, в частности /etc/cups/printers.conf и /etc/cups/classes.conf, которые описывают соответственно принтеры и группы принтеров. Для редактирования обоих файлов используется инструмент lpadmin, а данные в файле cupsd.conf рекомендуется подготавливать вручную.

Файл cupsd.conf содержит набор директив, с помощью которых задаются характеристики сервера, например, определяется имя сервера и расположение файлов протоколов. Ниже описаны наиболее важные директивы, определяющие работу сетевого сервера печати.

• Allow. За этой директивой следуют ключевое слово from, идентификатор All или None, имя узла (в котором может содержаться звездочка, задающая групповую операцию), частичный или полный IP-адрес или IP-адрес с указанием маски сети. Независимо от формы записи, значение данной директивы определяют компьютеры, которые имеют право доступа к серверу. Чтобы разрешить доступ для нескольких компьютеров или групп компьютеров, вы можете использовать несколько директив Allow. Данная директива должна находиться в составе директивы Location.

• AuthClass. Директива AuthClass может принимать значения Anonymous (значение по умолчанию), User, System и Group. Anonymous означает, что аутентификация клиентов не должна выполняться; в этом случае система печати работает подобно системе BSD LPD. Остальные три значения требуют от клиента указания пользовательского имени и пароля. Значение System требует, чтобы пользователь был членом группы sys, заданной с помощью директивы SystemGroup. Если указано значение Group, пользователь должен принадлежать группе, имя которой определено посредством директивы AuthGroupName.

• BrowseAddress. Средства просмотра принтеров CUPS лучше всего работают в том случае, если информация о принтерах, доступных в сети, собрана на центральном сервере. Этот сервер можно задать с помощью директивы BrowseAddress. В качестве ее значения задается доменное имя или IP-адрес, а также номер порта, например 192.168.23.34:631. (Номер порта 631 чаще всего используется для выполнения различных операций с системой CUPS.) По умолчанию принимается значение 255.255.255.255:631, т.е. широковещательный адрес локальной сети и порт 631.

• BrowseAllow. Для того чтобы клиент мог выполнять просмотр принтеров, сервер должен принимать от него специальные пакеты. Директива BrowseAllow (за ней следуют ключевое слово from и частичное или полное доменное имя либо адрес узла) задает компьютеры, с которых сервер должен принимать данные пакеты. По умолчанию прием пакетов разрешен со всех компьютеров.

• BrowseDeny. Данная директива выполняет действие, противоположное директиве BrowseAllow. С ее помощью формируется "черный список" клиентов или сетей.

• BrowseOrder. Если вы используете и BrowseAllow, и BrowseDeny, директива BrowseOrder позволяет определить порядок применения указанных директив. Она может быть задана в виде BrowseOrder Allow, Deny или BrowseOrder Deny, Allow.

• BrowseInterval. Данная директива задает время в секундах между запросами на просмотр. Значение 0 запрещает передачу запросов. Значение данной опции должно быть меньше, чем значение опции BrowseTimeout, в противном случае принтеры будут периодически исчезать из локального списка просмотра.

• BrowsePoll. Данная директива позволяет задавать имя или IP-адрес сервера печати для опроса принтеров. Чтобы опрашивать несколько серверов, вы можете указать данную директиву несколько раз.

• BrowsePort. По умолчанию для просмотра принтеров используется порт 631, но с помощью данной директивы вы можете переопределить это значение.

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

• Browsing. Задавая значение этой директивы, равное On или Off, вы можете соответственно разрешать или запрещать просмотр сети. По умолчанию предполагается значение On.

• Deny. Данная директива выполняет действия, противоположные действиям директивы Allow. С ее помощью задаются компьютеры, которым запрещен доступ к серверу. Директива Deny должна присутствовать в составе директивы Location.

• HostNameLookups. Данная директива может принимать значения Off, On и Double. Значение Off запрещает проверку имен клиентов, On включает проверку имени каждого клиента, если же задано значение Double, проверяется имя клиента, а по полученному имени определяется его IP-адрес. Значение Double обеспечивает защиту от некоторых типов атак, поскольку при этом отвергаются обращения клиентов, для которых некорректно сформированы записи на сервере DNS. По умолчанию предполагается значение при этом обеспечивается максимальная производительность и надежность (остальные значения могут приводить к возникновению проблем в случае выхода из строя сервера DNS).

• Listen. Задавая одну или несколько директив Listen, вы можете сообщить CUPS о том, что процессе взаимодействия должны использоваться лишь некоторые из сетевых интерфейсов. В качестве значения данной директивы задается IP-адрес сетевого интерфейса и номер порта (обычно 631). Например, выражение Listen 192.168.23.8:631 означает, что компьютер должен использовать интерфейс с адресом 192.168.23.8. С помощью директивы Listen можно учесть все необходимые интерфейсы; в большинстве случаев необходимо указывать также интерфейс с адресом 127.0.0.1.

• Location. Данная директива отличается от остальных; она объединяет ряд других директив и указывает область их применения. Например, в состав Location вы можете включить директивы Allow и Deny, разрешая или запрещая для клиентов обращение к конкретным типам документов (и, следовательно, выполнение определенных типов операций). Началом данной директивы является ключевое слово Location, помещенное в угловые скобки, а окончанием — выражение </Location>. В составе <Location> могут присутствовать опции /admin (действия по администрированию), /classes (определение классов принтеров), /jobs (определение заданий на печать) и /printers (принтеры).

• MaxClients. Директива MaxClients позволяет ограничить число клиентов, которые могут устанавливать соединение с сервером. По умолчанию принимается значение, равное 100.

• Order. Данная директива выполняет действия, аналогичные действиям директивы BrowseOrder, но применяется к директивам Allow и Deny. Выражение Order Allow, Deny означает, что директива Allow должна применяться перед директивой Deny, а выражение Order Deny, Allow задает обратную последовательность применения этих директив.

• Port. В обычных условиях CUPS ожидает обращение через порт 631, но при необходимости вы можете с помощью данной директивы изменить порт, используемый по умолчанию. Указывая данную директиву многократно, можно задать несколько портов. Заметьте, что директива Port не влияет на номер порта, используемый CUPS для взаимодействия с клиентами и серверами BSD LPD и другими подобными программами.

Файл /etc/cups/cupsd.conf, поставляемый с большинством пакетов CUPS, оставляет сервер совершенно открытым для обращений с внешних узлов. Подготавливая средства CUPS к реальной работе, необходимо ограничить доступ к серверу. Например, приведенная ниже директива блокирует доступ со всех узлов, за исключением компьютера, на котором расположен сервер, а также компьютеров, принадлежащих сети 172.22.0.0/16.

<Location /printers>

 BrowseAllow from 127.0.0.1

 BrowseAllow from 172.22.0.0/16

 Allow from 127.0.0.1

 Allow from 172.22.0.0/16

</Location>

Поскольку в директиве Location указана опция /printers, она не блокирует полностью доступ к серверу. Например, выполнение административных задач (опция /admin) и доступ к информации о заданиях на печать (опция /jobs) разрешены и для других систем. Настраивая CUPS, необходимо ограничить все виды доступа и даже продублировать ограничения, сконфигурировав соответствующим образом средства фильтрации пакетов (они будут рассматриваться в главе 25).