Изучаем Linux, 302 (смешанные среды): Cлужбы печати

Создание и управление общими ресурсами печати Samba в смешанной среде

Эта статья поможет вам подготовиться к сдаче экзамена 302 сертификационной программы института Linux Professional Institute (LPI). Из этой статьи вы узнаете о настройке общего доступа к принтерам для клиентов Linux и Microsoft.

Шон Уолберг, старший сетевой инженер, P.Eng

Шон Уолберг работал с Linux- и UNIX-системами с 1994 года в академических, корпоративных и "провайдерских" кругах. Он широко освещает вопросы системного администрирования в течение нескольких последних лет. С ним можно связаться по адресу sean@ertw.com.



10.05.2012

Об этой серии

Эта серия статьей поможет вам освоить задачи администрирования операционной системы Linux. Вы можете использовать материалы этих статей для подготовки к экзаменам программы LPIC третьего уровня (LPIC-3).

Чтобы посмотреть описания статей этой серии и получить ссылки на них, обратитесь к нашему перечню материалов для подготовки к экзаменам LPIC-3. Этот перечень постоянно дополняется новыми статьями по мере их готовности и содержит текущие (по состоянию на ноябрь 2010 года) цели экзаменов сертификации LPIC-3.

Краткий обзор

В этой статье рассматриваются следующие темы:

  • Создание и настройка общих ресурсов печати.
  • Интеграция Samba с системой печати CUPS (Common UNIX® Print System).
  • Управление драйверами принтеров Windows® и их загрузкой.
  • Настройка общего ресурса [print$].
  • Вопросы безопасности при работе с общими принтерами.
  • Настройка и управление системой учета печати.

Эта статья поможет вам подготовиться к сдаче экзамена LPI 302 (специализация "Смешанные среды") и содержит материалы цели 312.3 темы 312. Цель имеет вес 2.

Предварительные требования

Чтобы извлечь наибольшую пользу из наших статей, необходимо обладать продвинутыми знаниями о Linux и иметь работоспособный компьютер с Linux, на котором можно будет выполнять все встречающиеся команды. Кроме этого, у вас должен быть доступ к среде Windows, которую можно использовать для проверки доступа к файлам и принтерам.


Настройка общего ресурса печати

Настройка общего ресурса печати похожа на настройку общего файлового ресурса. Для этого необходимо создать раздел, установить значения нескольких параметров и подключить клиентов. Тем не менее, поскольку в данном случае мы имеем дело с печатью, то существует несколько тонких отличий. В листинге 1 приведена типовая конфигурация, содержащаяся в файле smb.conf.

Листинг 1. Типовая конфигурация для общих ресурсов печати
[global]
  load printers = yes
  printing = sysv
[printers]
  comment = Printers
  path = /var/spool/samba
  writable = no
  printable = yes

О факультативном экзамене LPI-302

Как и многие другие программы, программа сертификации Linux Professional Institute (LPIC) предусматривает различные уровни сертификации, где для получения каждого последующего уровня необходимо обладать более глубокими знаниями и практическим опытом. Экзамен LPI-302 – это факультативный экзамен третьего уровня программы LPIC, требующий продвинутых знаний в области системного администрирования Linux.

Для получения сертификата LPIC третьего уровня (LPIC-3) необходимо успешно сдать два экзамена первого уровня (101 и 102), два экзамена второго уровня (201 и 202), а также базовый экзамен 301 третьего уровня (LPIC-3). Если вы получили сертификат третьего уровня, вы можете сдавать факультативные экзамены по определенным специализациям, например, экзамен LPI-302.

В листинге 1 не настраиваются никакие принтеры, а просто содержатся инструкции для загрузки списка системных принтеров и определяется раздел с именем [printers], выступающий в роли шаблона. В предыдущей статье говорилось о том, что раздел [homes] используется в качестве шаблона для домашних директорий. Раздел [printers] выполняет те же функции для принтеров.

На глобальном уровне параметр load printers выдает команду Samba выполнять поиск системных принтеров и настраивать общий доступ к ним. Параметр printing = sysv указывает на использование более старой системы печати SysV. Сейчас нам достаточно этого, но позже вы узнаете, как настраивать более современную систему печати CUPS.

Раздел [printers] определяет, как будет выглядеть каждый общий ресурс печати. Если у вас нет необходимости использовать отдельные параметры для каждого принтера, например, ограничивать доступ пользователей, то можно работать с этим шаблоном. Параметр path используется системой Samba. Когда вы посылаете задание принтеру Samba, то прежде, чем послать файл на устройство печати, smbd помещает его в директорию, указанную в параметре path. После этого вы должны убедиться в том, что общий ресурс не находится в режиме writable, а находится в режиме printable для того, чтобы Samba могла правильно использовать его в качестве ресурса печати.

Теперь вы можете увидеть на вашем сервере список принтеров. Если на клиентском компьютере Windows установлен драйвер этого принтера, то можно продолжить его установку и работать с ним в сети.


Интеграция Samba с системой печати CUPS

Создайте ваш собственный канал

Вы можете создать ваш собственный RSS, Atom или HTML канал обновлений и получать уведомления о новых или обновленных статьях нашего сайта. Для этого перейдите на страницу developerWorks RSS feeds, выберите зону Linux, установите флажок Статьи и введите в качестве ключевой фразы Linux Professional Institute, после чего выберите требуемый тип канала.

В большинстве дистрибутивов Linux система печати CUPS заменила систему SysV. CUPS является более гибкой и удобной для пользователей по сравнению с SysV, и обеспечивает прозрачную совместимость со старой системой печати. Если вы используете команды lp или lpq, то, вероятно, вы работаете с CUPS.

Одним из механизмов, обеспечивающих преимущество CUPS в сравнении со старой системой печати, является предварительная обработка заданий печати. Например, если вы посылаете на печать PDF-файл, то CUPS распознает формат файла, пересылает вывод через интерпретатор (например, GhostScript) и преобразует файл в язык, который распознается принтером. Раньше для этого требовалось затратить много усилий, но сегодня все это умеет делать CUPS.

Простейшая конфигурация, необходимая для включения системы печати CUPS, показана в листинге 2.

Листинг 2. Включение поддержки CUPS
[global]
printing = cups
printcap = cups

Параметры листинга 2 устанавливаются в глобальном режиме. Первый параметр обеспечивает работу функций печати через библиотеки CUPS, а не через lpr. Второй параметр указывает Samba получить список принтеров от демона CUPS, а не из системного файла printcap. Даже если вы используете CUPS, файл printcap все равно может присутствовать в системе, поскольку CUPS поддерживает его использование для совместимости с приложениями, не поддерживающими CUPS.

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

  • lp. Отправляет вывод на принтер (обычно вывод передается этой команде по конвейеру от другой команды, например, cat /etc/motd | lp ).
  • cupsenable и cupsdisable. Запуск и остановка принтера, соответственно (эти команды также применяются для сброса принтера).
  • cupsreject. Отклоняет или принимает задание для принтера (эта команда не изменяет статус принтера, а вместо этого сообщает CUPS о необходимости отклонить входящее задание).
  • lpadmin. Позволяет настраивать параметры для принтера, например, устанавливать квоты.
  • lpq. Показывает элементы очереди для указанного принтера.
  • lprm. Позволяет отменять задания принтера.

Печать необработанных (raw) данных и интеллектуальная настройка

Обычно принтеры понимают такие языки описания страниц (Page Description Language, PDL), как Adobe® PostScript® или Printer Command Language (PCL). Некоторые принтеры могут использовать языки описания страниц, разработанные их производителями. Задача по преобразованию посылаемых приложениями команд печати в команды языка описания страниц, с которым работает принтер, возлагается на драйвер принтера Windows. Без драйвера принтера посылаемые приложениями команды распечатываются непосредственно в виде текста, в результате чего на печать выводится один мусор.

Процесс перевода клиентским приложением документа в подходящий для принтера формат называется печатью необработанных данных (raw printing). В этом режиме Samba просто копирует полученные от клиента байты информации на принтер. Такой подход имеет два недостатка:

  • Для того чтобы клиент смог распечатать данные, на нем должен быть проинсталлирован драйвер нужного принтера.
  • Системе Samba трудно понять, какие именно действия выполняются; вследствие этого, например, она не может определить, сколько страниц было распечатано.

Несмотря на эти недостатки, печать необработанных данных легко настраивается. Приложив дополнительные усилия, можно настроить распространение драйверов принтеров с сервера Samba на клиентские компьютеры.


Установка драйверов на клиентские компьютеры Windows

Заставить Samba инсталлировать драйверы принтеров – непростое дело. Самым лучшим вариантом является установка универсального драйвера PostScript и его использование для всех принтеров. О том, как преобразовать клиентские PostScript-данные в формат, подходящий для использования принтером, позаботится CUPS, используя свою интеллектуальную систему печати. Реализовав этот подход вместо использования "родных" драйверов, вы также сможете подробно узнать о том, какое количество страниц было распечатано.

Вам потребуется загрузить пакет с драйверами CUPS (текущая версия – cups-windows-6.0-1.i386.rpm) ссылку на который вы найдете в разделе Ресурсы. Этот пакет устанавливает в директорию /usr/share/cups/drivers следующие драйверы:

  • cups6.inf
  • cups6.ini
  • cupsps6.dll
  • cupsui6.dll

Драйверы CUPS поддерживают только клиентов Microsoft Windows 2000 и выше; обычно все работает хорошо, однако более поздняя утилита Samba жестко запрограммирована на поиск устаревших драйверов Microsoft и не работает в случае их отсутствия. В вашей системе должны присутствовать следующие файлы, которые также должны быть скопированы в директорию /usr/share/cups/drivers:

  • ps5ui.dll
  • pscript5.dll
  • pscript.hlp
  • pscript.ntf

Обычно эти файлы находятся в директории C:\WINDOWS\ServicePackFiles\i386.

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

Листинг 3. Общий ресурс print$
[print$]
  comment = Printer Driver Export
  path = /etc/samba/drivers
  browseable = yes
  guest ok = no
  read only = yes
  write list = root

Конфигурация в листинге 3 настраивает простой общий ресурс, доступный в режиме "только для чтения" всем пользователям, за исключением пользователя root. Не забудьте перезапустить Samba для вступления изменений в силу.

Наконец, установим драйверы принтера с помощью команды cupsaddsmb. Если ваш общий ресурс печати называется Downstairs_Laser, то просто запустите команду cupsaddsmb -v Downstairs_Laser. Вам будет предложено ввести пароль пользователя root, после чего вы увидите на экране поток выполняющихся действий.

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

Драйверы для принтеров определенных производителей

Для того чтобы система CUPS понимала, что именно распечатывается, следует использовать универсальный драйвер CUPS PostScript. Если вы решите установить на клиентские компьютеры драйверы Windows, то процедура будет похожей. Во-первых, в этом случае не используется команда cupsaddsmb. Вы вручную копируете драйверы в директорию /etc/samba/drivers, а также в директорию, соответствующую архитектуре (в предыдущем случае за вас это делала утилита cupsaddsmb ). Например, для 32-разрядных драйверов используется директория W32X86.

Для того чтобы сообщить Samba о драйвере, используется команда rpcclient. Вы должны указать имена файлов драйвера принтера и официальное имя принтера. Практический пример есть в разделе Ресурсы.


Ведение учета и безопасность

Применительно к принтерам ведение учета означает отслеживание и установку квот на допустимое количество используемой бумаги для каждого пользователя. Безопасность означает возможность знать, кто использует принтеры, и при необходимости ограничивать доступ к ним. Под доступом к принтеру можно понимать возможность распечатывать документы на этом принтере или возможность отменять задания печати других пользователей.

Безопасность принтеров

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

Можно заставить клиентов печатать напрямую через CUPS, используя протокол печати через Интернет (IPP, Internet Printing Protocol). Тем не менее, нельзя недооценивать простоту установки принтеров из сетевого окружения Microsoft Network Neighborhood. Просто помните о том, что любое управление на уровне Samba можно потенциально переопределить на уровне подсистемы CUPS, если клиенты подключаются напрямую через нее.

Предположим, что общий ресурс печати защищен с помощью параметра valid users = alice, bob, который позволяет отправлять задания на печать только двум пользователям. Если пользователь mallory попытается напечатать документ через Samba, ему будет отказано в доступе. Если подсистема CUPS не была настроена с такими же разрешениями, то пользователь mallory может отправить документ на печать через очередь CUPS.

Другая проблема безопасности связана с гостевыми пользователями. Если вы можете перечислить всех пользователей, которым необходим доступ к принтеру, то убедитесь, что в разделе конфигурации [printers] установлен параметр guest ok = no. После этого только прошедшие аутентификацию пользователи смогут отправлять задания на печать. В противном случае вашими принтерами смогут воспользоваться даже посторонние пользователи.

Квоты печати

CUPS, а не Samba, управляет не только заданиями печати, но и ведением учета. CUPS позволяет использовать квоты печати, которые ограничивают количество страниц, которое может распечатать отдельный пользователь за определенный интервал времени. В листинге 4 показано, как установить квоту для принтера.

Листинг 4. Установка квоты для принтера
# lpadmin -p Downstairs_Laser -o job-quota-period=604800 -o job-page-limit=100 \
 job-k-limit=50000

В листинге 4 для принтера задаются три параметра. Первый – это временной интервал квоты, равный 604 800 секундам (т. е. 1 неделе). Второй параметр – это ограничение на количество страниц, распечатываемых за указанный временной интервал (в нашем случае 100 страниц). Третий параметр ограничивает объем распечатываемых данных 50 мегабайтами. Поскольку трудно оценить данный объем, то последний параметр является необязательным, хотя он позволяет ограничивать объем распечатываемых графических изображений.

Для проверки установленной для принтера квоты загляните в файл /etc/cups/printers.conf, в котором вы увидите параметры QuotaPeriod, PageLimit и KLimit с только что заданными значениями. Чтобы убрать все квоты, установите эти параметры в 0.

Каждое задание печати записывает все события в файл page.log, который обычно расположен в директории /var/log/cups. В листинге 5 показана типовая строка этого файла.

Листинг 5. Типовая запись журнала учета печати
Downstairs_Laser 755 sean [26/Apr/2011:15:02:27 -0500] 1 1 - localhost smbprn.0019.FWqosE

В левой части строки содержится наиболее важная информация. Перечислим все поля по порядку:

  • Имя принтера.
  • Номер, назначенный заданию печати.
  • Пользователь, распечатавший документ.
  • Дата в формате GMT и часовой пояс.
  • Количество напечатанных страниц.
  • Количество отправленных на печать копий.

Таким образом, количество использованных страниц – это количество напечатанных страниц помноженное на количество отправленных копий. Подробное описание остальных полей журнала вы найдете в разделе Ресурсы.

Примечание. Самым серьезным ограничением квот системы CUPS является то, что они применяются ко всем пользователям.


Что дальше

Следующая статья этой серии содержит материалы цели 312.4 темы 312. В ней рассматривается использование Samba в качестве основного и резервного контроллеров домена Microsoft.

Ресурсы

Научиться

  • Оригинал статьи: Learn Linux, 302 (Mixed environments): Print services (EN).
  • Онлайновая man-страница smb.conf (EN) более удобна в использовании, чем текстовая версия.
  • Прочитайте материал темы 107 (EN) учебного руководства developerWorks, чтобы освежить в памяти управление печатью из командной строки.
  • В главе 21 (EN) руководства Samba-HOWTO описана "классическая" поддержка печати, которая использовалась до появления CUPS. На этом Web-сайте также представлен практический пример добавления принтера драйвера Windows.
  • В главе 22 (EN) руководства Samba-HOWTO содержится дополнительная информация об интеграции CUPS и Samba.
  • В разделе page_log (EN) документации CUPS перечислены все поля журнала печати, на тот случай, если вам понадобится собрать какие-то дополнительные сведения.
  • На Web-сайте программы сертификации LPIC (EN) вы найдете подробные цели, списки задач и примерные вопросы всех трех уровней сертификации на администратора Linux-систем профессионального института Linux. В частности, на этом сайте представлены подробные цели экзамена LPI 302 (EN), а также примеры заданий и вопросов (EN).
  • Просмотрите всю серию статей для подготовки к экзаменам института LPI (EN) на сайте developerWorks, основанных на предыдущих целях, определенных до апреля 2009 года, чтобы изучить основы администрирования Linux и подготовиться к экзаменам для получения сертификата администратора Linux.
  • Материалы для подготовки к исправленным экзаменам LPIC (EN) содержат список дополнительных ресурсов института LPI, которые помогут вам при подготовке к получению сертификата.

Получить продукты и технологии

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Linux
ArticleID=813948
ArticleTitle=Изучаем Linux, 302 (смешанные среды): Cлужбы печати
publish-date=05102012