Настройка с нуля принтсервера CUPS с доменной авторизацией и без нее в сети с разными ОС
Вступление
Итак. Предположительно, сервис печати CUPS — это мощное решение, позволяющее организовать централизованное управление принтерами в компании. Так оно и есть, но в процессе настройки потребуется провести некоторое время в поисках решения в Google множества мелких неочевидных проблем, особенно, если ваша необходимость выходит за рамки стандартных мануалов по настройке.
В статье будет описана установка принтсервера CUPS на Ubuntu Server в сети с работающим доменом Active Directory, хотя его наличие совершенно не обязательно и инструкции по настройке взаимодействию с ним можно будет смело пропустить, его настройка, а также настройка клиентских машин Linux и Windows для взаимодействия с данным принт-сервером.
В инструкции домен будет именоваться example.com, сам принтсервер — cupsserver (cupsserver.example.com) с IP адресом 10.10.100.50, а клиентские машины linux1, linux2, linux3 и т.д для клиентских машин Linux и windows1, windows2, windows3 и т.д. для клиентских машин Windows соответственно.
Настройка принтсервера
В первую очередь мы настроим принтсервер, а точнее, настроим административный доступ на него, затем настроим печать на него, а затем опишем настройку клиентских машин.
Заходим на принтсервер любым удобным способом и обновим на нем пакеты:
root@cupsserver:~# apt update && apt upgrade -y
Далее проверим, установлен ли CUPS на сервере:
root@cupsserver:~# which cupsd
Если вывод выглядит как то так:
/usr/bin/cupsd
то CUPS установлен, если вывода нет — устанавливаем CUPS:
root@cupsserver:~# apt install cups -y
Теперь настроим административный доступ к веб-интерфейсу CUPS. Все файлы конфигурации находятся по пути /etc/cups/. Для начала, на всякий случай сделаем резервные копии основных файлов конфигурации CUPS:
root@cupsserver:~# cp /etc/cups/cupsd.conf /etc/cups/cupsd.conf.original
root@cupsserver:~# cp /etc/cups/cups-files.conf /etc/cups/cups-files.conf.original
root@cupsserver:~# cp /etc/cups/cups-browsed.conf /etc/cups/cups-browsed.conf.original
Впрочем, если вы этого не сделали — не беда, образцы данных файлов по умолчанию лежат по пути /usr/share/cups. Также нужно упомянуть, что вы можете проверить любые добавленные опции в файлы конфигурации CUPS с помощью команды:
root@cupsserver:~# cupsd -t
Если вы что-то напутали, опечатались или использовали опцию, которая уже не поддерживается CUPS’ом, то вывод команды отразит данные ошибки.
Но приступим наконец к настройке. После любых изменений файлов в папке /etc/cups/ для получения эффекта необходимо перезапускать сервис CUPS:
root@cupsserver:~# service cups restart
или
root@cupsserver:~# systemctl restart cups
или
root@cupsserver:~# /etc/init.d/cups restart
А если вы отредактировали файл /etc/cups/cups-browsed.conf, то за него отвечает отдельный сервис cups-browsed, который тоже нужно перезапустить:
root@cupsserver:~# service cups-browsed restart
или
root@cupsserver:~# systemctl restart cups-browsed
или
root@cupsserver:~# /etc/init.d/cups-browsed restart
Выполним команду
root@cupsserver:~# nano /etc/cups/cupsd.conf
Первой незакомментированной опцией является
LogLevel warn
Она определяет минимальную информативность логов CUPS. Лог-файлы CUPS находятся по пути /var/log/cups/. На время установки, настройки и отладки принтсервера будет разумным перевести логгирование в debug-режим. Для этого изменим warn на debug2:
LogLevel debug2
По умолчанию CUPS слушает входящие подключения только от localhost, то бишь на loopback интерфейсе. Чтобы убедится в этом, можете выполнить команду
root@cupsserver:~# netstat -plutn
Одна из строк будет выглядеть приблизительно так:
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 737/cupsd
Дальнейшие действия зависят от степени вашей паранойи. Вы можете добавить в блоке, который условно начинается с комментария #Only listen for connections from the local machine несколько строк с указанием IP адресов или подсетей, откуда CUPS’у будет позволено слушать подключения.
# Only listen for connections from the local machine.
Listen localhost:631
Listen /run/cups/cups.sock
#Слушать подключения с определенного IP адреса
Listen 10.10.100.67:631
#Слушать подключения с подсети бухгалтерии
Listen 172.16.0.0:631
Либо же вы можете разрешить CUPS’у слушать подключения со всех адресов
# Only listen for connections from the local machine.
Listen /run/cups/cups.sock
Port 631
Следующий момент настройки — это обнаружение сетевых и расшаренных принтеров.
# Show shared printers on the local network.
Browsing Off
BrowseLocalProtocols dnssd
На мой взгляд эта опция так и должна остаться выключенной, так как она определяет, будет ли рассылаться широковещательная информация по сети о подключенных к принтсерверу принтерах. А они ведь будут подключены к ней все. И соответственно у всех клиентских машин будут отображаться сразу все принтера. Наш принтсервер должен искать и обнаруживать все принтера в сети, но не рассылать их бездумно по всей сети.
Далее идут настройки аутентификации:
# Default authentication type, when authentication is required...
DefaultAuthType Basic
Определяет права доступа к веб-интерфейсу CUPS, а также к его административной части. Чтобы пользователь user имел право на администрирование CUPS, его нужно добавить в системную группу lpadmin:
root@cupsserver:~# usermod -a -G lpadmin user
Вообще, группы, которым позволен административный доступ к CUPS, определяются в файле конфигурации cups-files.conf в блоке
# Administrator user group, used to match @SYSTEM in cupsd.conf policy rules...
# This cannot contain the Group value for security reasons...
SystemGroup lpadmin
Если вы хотите добавить некой группе пользователей Linux права на администрирование принтсервера, например printadmins, то просто добавьте их через пробел к lpadmin. Если группа доменная, то это немного сложнее и будет описано позже.
Теперь перейдем к блоку <Location />:
# Restrict access to the server...
<Location />
Order allow,deny
</Location>
Order allow,deny означает, что запрещены подключения отовсюду, если специально не указано разрешение. То есть нужно добавлять IP-адреса, подсети, хосты или хосты по маске (.example.com) в виде «Allow from [разрешенный адрес]*»:
# Restrict access to the server...
<Location />
Order allow,deny
Allow from cupsserver # разрешение подключатся к самому себе по имени хоста
Allow from cupsserver.example.com # разрешение подключатся к самому себе по FQDN
Allow from localhost # разрешение подключатся к самому себе через loopback интерфейс
Allow from 10.10.100.* # Если хотите разрешить
Allow from linux4.example.com # доступ на печать с
Allow from 172.168.5.125 # определенных подсетей, IP или хостов
</Location>
Для полной уверености и отладки, можно оставить, пока не настроите все остальное, такую констукцию, которая позволит печать отовсюду:
# Restrict access to the server...
<Location />
Order allow,deny
Allow from all
</Location>
Приступим к настройке административного доступа к CUPS на принтсервере. Определитесь, с какого/каких IP и/или подсетей вы собираетесь подключаться к CUPS, и добавить их по аналогии с блоком <Location />:
# Restrict access to the admin pages...
<Location /admin>
Order allow,deny
Allow from localhost
Allow from 10.10.100.*
Allow from admin.example.com
</Location>
# Restrict access to configuration files...
<Location /admin/conf>
Order allow,deny
Allow from localhost
Allow from 10.10.100.*
Allow from admin.example.com
</Location>
# Restrict access to log files...
<Location /admin/log>
Order allow,deny
Allow from localhost
Allow from 10.10.100.*
Allow from admin.example.com
</Location>
Еще, по желанию, можно добавить язык интерфейса по умолчанию. Список доступных языков можно посмотреть с помощью команды:
root@cupsserver:~# ls /usr/share/cups/locale
Если нужная вам локализация, например ru, есть, то добавьте строчку в /etc/cups/cupsd.conf:
DefaultLanguage ru
Чтобы к вашему принтсерверу cupsserver.example.com можно было обращатся по его хосту (hostname), необходимо создать в папке /etc/cups/ файл client.conf с таким содержимым:
ServerName имя_хоста
Самым простым способом это можно сделать так:
root@cupsserver:/etc/cups# echo "ServerName $(cat /etc/hostname)" > /etc/cups/client.conf
Поскольку мы предполагаем, что в сети есть DNS сервер, то будет предпочтительным, чтобы можно было обращатся к принтсерверу по его доменному имени (cupsserver.example.com). Также серверу может быть присвоен CNAME псевдоним на DNS сервере, например print или cups. Чтобы принтсервер принимал подключения по таким обращениям, необходимо добавить такую строчку в файл /etc/cups/cupsd.conf:
ServerAlias cupsserver.example.com print cups
Если вы хотите, чтобы принтсервер примимал любые обращения, или не хотите заморачиваться, то можно добавить это:
ServerAlias *
Еще нужно взглянуть внутрь файла /etc/cups/cups-browsed.conf. Этот файл управляет тем, как принтсервер будет искать принтеры в сети и проводить широковещательную рассылку своих принтеров. Я предлагаю совершенно отключить опцию рассылки. Принтсервер будет искать принтера в сети, но с него принтеры на клиентские машины будут подключатся вручную. Ниже будет описано, почему. Пока же мы находим строку BrowseRemoteProtocols dnssd cups:
# Which protocols will we use to discover printers on the network?
# Can use DNSSD and/or CUPS and/or LDAP, or 'none' for neither.
BrowseRemoteProtocols dnssd cups
Благодаря этой опции принтсервер ищет расшаренные принтера в сети. Ее мы оставляем включенной, так как в наших интересах, чтобы принтсервер искал принтера в сети. Но нам совершенно не нужно, чтобы принтсервер рассылал вообще все подключенные к нему принтеры, иначе возникнет большая путаница. Для предотвращения такого сценария находим следующую опцию #BrowseLocalProtocols none и раскомментируем ее:
# Which protocols will we use to broadcast shared local printers to the network?
# Can use DNSSD and/or CUPS, or 'none' for neither.
# Only CUPS is actually supported, as DNSSD is done by CUPS itself (we ignore DNSSD in this directive).
BrowseLocalProtocols none
На этом настройку принтсервера приостанавливаем и переходим к настройке клиентких машин Windows и Linux. Требования к ним такие — позволять посылать на себя задания печати принтсерверу, и посылать задания на печать именно (и только) на принтсервер в случае необходимости печати на сетевой принтер.
В качестве примера настроим печать сквозь принтсервер между двумя клиентскими машинами с Linux (имя хоста linux1) и Windows 8 соотвественно (имя хоста windows1). Начнем с настройки windows1 в качестве приемника печати от принтсервера. У меня к нему подключен и штатно работает принтер Canon i-SENSYS MF4410. Имя принтера — Canon-MF4400. Самый простой способ, на самом деле, обеспечить печать с принтсервера на windows1 — перейти в Панель управления > Программы > Программы и компоненты > Включение или отключение компонентов Windows. Там мы включаем компонент Службы печати и документов > Служба печати LPD. Это позволит подключить данный принтер к принтсерверу с помощью адреса lpd://windows1/Canon-MF4400. Разумеется, назревает вопрос, почему бы не подключить с помощью SMB? Никто не запрещает. Если у вас отлажен данный метод, вы можете расшарить принтер таким образом, и подключить к принтсерверу по протоколу SMB. Инстукции по данному подключению, на мой взгляд, выходят за рамки данной статьи, которая и так выходит довольно объемной. Пока же считаем, что читатель успешно зашел по адресу http://cupsserver:631/admin
нажал на кнопку «Добавить новый принтер» и следуя интуиции, логике и прочитатанным ранее мануалам успешно подключил принтер с windows1 по протоколу LPD к принтсерверу cupsserver[example.com] и страница принтера доступна по адресу http://cupsserver:631/printers/Canon-MF4400
.
Теперь выполним аналогичную операцию на клиентской машине Linux c именем хоста linux1. Вообще, данная часть будет куда объемнее, так как у клиентской машины есть свой сервис CUPS и его тоже нужно настроить во многом так же, как и принтсервер, за исключением его подчиненной роли в организации печати.
Исправление ошибки обращения к CUPS через loopback по имени хоста
Есть неприятный момент. Если вы введете linux1 в домен, настроите на нем CUPS по этим инструкциям, то можете заметить абсурдную ситуацию, когда на WEB-интерфейс linux1 можно зайти снаружи, но на самом хосте этого сделать нельзя! И графические приложения для локальной настройки принтеров, вроде приложения system-config-printer в Linux Mint, отказываются работать. При попытке подключения на свой же CUPS по по адресу http://linux1:631/
будет сообщение «Запрещено» или «Bad Request». Это известная и толком не решенная на множестве форумов интернета проблема.
В большинстве инструкций по введению Linux в домен одним из пунктов является приведение файла /etc/hosts приблизительно к такому виду:
127.0.0.1 localhost
127.0.1.1 linux1.example.com linux1
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe02::2 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Почему то CUPS не в силах ассоциировать обращение через 127.0.1.1, то есть через Loopback интерфейс, с именем хоста.
Исправляется эта ошибка двумя способами. Если в вашей сети IP адреса статичные, то в файле /etc/hosts исправьте 127.0.1.1 на IP адрес внешнего сетевого интерфейса клиентской машины, например:
127.0.0.1 localhost
192.168.1.50 linux1.example.com linux1
Либо же, раз уж вы вводите Linux в домен, то это предполагает, что в вашей сети работает DHCP и DNS сервер Active Directory. В таком случае просто закомментируйте данную строчку:
127.0.0.1 localhost
# 127.0.1.1 linux1.example.com linux1
Разницы в работоспособности или проблем от данного действия пока обнаружено не было.
Настройка адресов прослушивания подключений к CUPS у клиентских машин Linux
Заходим на linux1 любым удобным способом. Редактируем файл /etc/cups/cupsd.conf:
user@linux1:~$ sudo nano /etc/cups/cupsd.conf
Находим, добавляем или изменяем в нем строки:
DefaultLanguage ru # Если язык присутствует в папке /usr/share/cups/locale
ServerAlias linux1.example.com linux1 [CNAME псевдоним присвоенный на DNS сервере]
или
ServerAlias * # Если неохота вникать в особенности
Listen /run/cups/cups.sock
Listen localhost:631 # Слушать localhost
Listen 10.10.100.50:631 # IP адрес нашего принтсервера.
Listen cupsserver:631 # Доменное имя принтсервера. Рекомендую чтобы его IP тоже был, на всякий случай
Listen linux1:631 #
или
Port 631 # Будет слушать подключения со всех адресов
Listen /run/cups/cups.sock
Browsing off # Выключено. Машина будет посылать информацию только принтсерверу
DefaultAuthType Basic # Без изменений. Есть вариант с авторизацией Kerberos, но там много подводных камней
Настройка адресов прослушивания подключений к CUPS
В предыдущем блоке мы настроили возможность подключения к CUPS. Теперь перейдем к настройке разрешений на доступ к печати, а также к административным страницам сервиса CUPS на хосте linux1. Вновь открываем, если закрыли, файл /etc/cups/cupsd.conf и переходим к редактированию блоков <Location />, <Location /admin>, <Location /admin/conf>, <Location /admin/log>:
# Restrict access to the server...
<Location />
Order allow,deny # Определяет политику доступа "Что не разрешено, то запрещено"
Allow from localhost # Позволяет печатать самой linux1
Allow from linux1 # Печать на свое имя хоста. Проблемы этого действия описаны выше
Allow from cupsserver # Если CUPS нормально взаимодействует с DNS, то сработает. Увы, не всегда это так
Allow from cupsserver.example.com # FQDN принтсервера
Allow from 10.10.100.50 # Разрешение на печать с IP принтсервера **cupsserver**
</Location>
# Restrict access to the admin pages...
<Location /admin>
Order allow,deny # Аналогично предыдущему
Allow from localhost # Необходимо для возможности добавлять принтеры
Allow from linux1 # Аналогично предыдущему
Allow from 10.10.101.71 # Предположим, это IP админа
Allow from 10.20.50.* # Предположим, это подсеть вашего IT отдела
AuthType Default # То есть CUPS спросит логин и пароль. Подробнее ниже
Require user @SYSTEM # Определение группы доступа к CUPS
</Location>
# Restrict access to configuration files...
<Location /admin/conf>
#Блок идентичен предыдущему
Order allow,deny # Аналогично предыдущему
Allow from localhost # Необходимо для возможности добавлять принтеры
Allow from linux1 # Аналогично предыдущему
Allow from 10.10.101.71 # Предположим, это IP админа
Allow from 10.20.50.* # Предположим, это подсеть вашего IT отдела
AuthType Default # То есть CUPS спросит логин и пароль. Подробнее ниже
Require user @SYSTEM # Определение группы доступа к CUPS
</Location>
# Restrict access to log files...
<Location /admin/log>
#Блок идентичен предыдущему
Order allow,deny # Аналогично предыдущему
Allow from localhost # Необходимо для возможности добавлять принтеры
Allow from linux1 # Аналогично предыдущему
Allow from 10.10.101.71 # Предположим, это IP админа
Allow from 10.20.50.* # Предположим, это подсеть вашего IT отдела
AuthType Default # То есть CUPS спросит логин и пароль. Подробнее ниже
Require user @SYSTEM # Определение группы доступа к CUPS
</Location>
Настройка раздачи и получения широковещательной рассылки сетевых принтеров
Еще у клиетской машины Linux, в данном случае linux1, необходимо отредактировать файл /etc/cups/cups-browsed.conf:
user@linux1:~$ sudo nano /etc/cups/cups-browsed.conf
BrowseRemoteProtocols none # Пишем none чтобы не получить кучу принтеров автоматически.
BrowseLocalProtocols cups # Показывать подключеные принтеры в сеть. DNSSD указывать не надо, его директива в cupsd.conf
BrowseOrder Allow,Deny # Аналогично директиве Order в cupsd.conf - необходимо явно указать, куда МОЖНО посылать информацию о подключенных принтерах
BrowseAllow 10.10.100.50 # IP принтсервера
BrowseAllow cupsserver # Имя хоста принтсервера
BrowseAllow cupsserver.example.com # Полное доменное имя принтсервера
Настройка административного доступа
Еще пару слов по поводу административного доступа, как на WEB-интерфейс CUPS на принтсервере, так и на любой клиентской машине Linux. Даже при условии наличия 30-50 компьютеров нужно унифицировать авторизацию на CUPS, а не держать в голове или еще где пароли каждой машины. И это важно на всех Linux машинах, ведь чтобы добавить принтер на сервер, его сперва нужно установить локально. Я вижу несколько путей.
Первый — на каждой системе Linux создать пользователя printeradmin (например) и добавить в группу lpadmin:
user@linux1:~$ sudo usermod -a -G lpamin printeradmin
и авторизовываться на http://имя_хоста:631/admin
c помощью его учетных данных.
Второй вариант практически идентичен и предлагает создать группу в системе, например, printersadmins, добавить туда требуемого администратора CUPS (printeradmin, user):
user@linux1:~$ sudo groupadd printersadmins
user@linux1:~$ sudo usermod -a -G printersadmins printeradmin
user@linux1:~$ sudo usermod -a -G printersadmins user
Затем нужно найти в файле /etc/cups/cups-files.conf строку
# Administrator user group, used to match @SYSTEM in cupsd.conf policy rules...
# This cannot contain the Group value for security reasons...
SystemGroup lpadmin
и добавить через пробел одну или несколько групп пользователей с правом администрировать CUPS.
# Administrator user group, used to match @SYSTEM in cupsd.conf policy rules...
# This cannot contain the Group value for security reasons...
SystemGroup lpadmin printersadmins somegroup
И наконец, третий вариант. Сделать администраторами принтсервера и CUPS’ов клиентских машин доменную группу пользователей. Для этого принтсервер и клиентские машины Linux должны быть присоединены к домену AD. Есть несколько методов подключения Linux к домену Windows, но, насколько я знаю, основные это подключение с помощью winbind и с помощью SSSD(realmd). Описание данных методов не входит в статью, поэтому остановлюсь только на моментах которые касаются конкретно CUPS’а.
Настройка использования доменных групп пользователей для администрирования CUPS
Каждый метод присоединения к системе централизованной авторизации в Linux создает специальный файл-«трубу» (pipe), сквозь который приложения могут посмотреть список пользователей домена. Чтобы так мог сделать CUPS, нужно разрешить ему использовать pipe в AppArmor’е для аутентификации пользователей. AppArmor — модуль безопасности Linux по управлению доступом. Ограничивает определенные программы набором перечисленных в его политиках файлов. Чтобы добавить CUPS’у право использовать пользователей и группы домена через winbindd, нужно добавить в файл /etc/apparmod.d/local/usr.sbin.cupsd такую строку:
/var/lib/samba/winbindd_privileged/pipe rw
Если Linux введен в домен через SSSD, то необходимо указать расположение его pipe в /etc/apparmod.d/local/usr.sbin.cupsd, добавив туда строку:
/var/lib/sss/pipes/private/pam rw
К тому же, в случае с SSSD это позволяет пройти аутентификацию (узнать кто заходит), но чтобы пройти авторизацию (узнать есть ли право у пользователя управлять CUPS) необходимо также добавить в файл конфигурации SSSD /etc/sssd/sssd.conf строку:
ad_gpo_map_interactive = +cups
Это, условно выражаюсь, дает CUPS’у право «заглядывать» в SSSD.
К тому же, в силу того, что CUPS теперь зависит от сервиса SSSD, нужно указать CUPS’у что он должен запускаться после SSSD, иначе он будет отваливаться при включении и его будет необходимо каждый раз включать вручную.
Добавим CUPS’у указание грузиться после SSSD. Отредактируем файл сервиса cups.service по пути /lib/systemd/system/, добавив инструкцию After в секцию [Unit]:
[Unit]
Description=CUPS Scheduler
Documentation=man:cupsd(8)
After=sssd.service
Таким образом CUPS настроен на Basic авторизацию через домен, то есть авторизацию с помощью ввода логина и пароля доменного пользователя с правом администрирования CUPS.
Авторизация может быть настроена и иначе, но принцип (pipe-файл) в целом универсален и есть шанс настроить и для LDAP, FreeIPA и прочих служб каталогов по аналогии.
Установка принтера в Linux
Установить принтер на Linux это часто специфическая задача, разная для разных марок и даже моделей. Поэтому не вижу смысла описывать установку принтера и примем за факт, что на хосте linux1 установлен принтер Kyocera-1024FP с именем Kyocera-1024FP, и страница принтера доступна по ссылке http://linux1:631/printers/Kyocera-1024FP
.
Теперь, когда сервер и клиенские машины Linux настроены, к некоторым из них присоединены принтеры, а также есть машины на Windows, которым и с которых нужно печатать, и вся эта система должна быть стабильной и в случае, если на одном из ПК необходимо заменить принтер, то это не должно повлечь за собой перенастройку доброй половины всех ПК, если не всех. К тому же нужно как можно меньше проблем с драйверами. И это вполне возможно.
Группы принтеров (Classes)
Выше мы описывали подключение Canon-MF4400 c хоста windows1 через протокол LPD. Принтер все еще подключен и его статус можно посмотреть на странице http://cupsserver:631/printers/Canon-MF4400
. А теперь обратим пристальное внимание на главную страницу администрирования cupsserver http://cupsserver:631/admin
. На этой странице есть кнопка «Добавить группу» [Add Class]. Нажмем на нее. В ней вы увидите поля «Название», «Описание», «Расположение», аналогичные таким же при настройке обычного принтера. В нижнем же блоке вы увидите список всех подключенных к принтсерверу принтеров. Выберите Canon-MF4400 или любой который хотите, затем в поле «Название» впишите, например printer-windows1, «Описание» и «Расположение» на ваше усмотрение, и нажмите «Добавить группу».
Теперь у нас есть группа printer-windows1 с принтером Canon-MF4400 в ней. Страница этой группы доступна так же как и страница принтера Canon-MF4400 с оговоркой на немного другой путь — http://cupsserver:631/classes/printer-windows1
.
Еще у нас все еще есть подключенный к linux1 принтер Kyocera-1024FP. Подключим его к принтсерверу по HTTP. Выбираем метод подключения «Протокол интернет печати (http)» [Internet Printing Protocol (http)], из списка драйверов выбираем марку «Generic», модель «IPP Everywhere». Называем его как угодно, мы назовем так же как на хосте linux1 — Kyocera-1024FP. Теперь принтер доступен на принтсервере по ссылке http://cupsserver:631/printers/Kyocera-1024FP
. Аналогично настройке группы printer-windows1 создаем группу printer-linux1 c принтером Kyocera-1024FP в ней. Ее ссылка соответственно http://cupsserver:631/classes/printer-linux1
.
Теперь подключим принтер Kyocera-1024FP с хоста linux1 через принтсервер cupsserver к хосту windows1 с системой Windows 8 на борту без какой либо дополнительной(!) установки драйверов. Для этого мы при подключении принтера выбираем «Выбрать общий принтер по имени». В общем случае мы пишем http://имя_принтcервера:631/classes/название_группы
. В нашем конкретном случае — http://cupsserver:631/classes/printer-linux1
. При запросе на выбор драйвера указываем марку «Generic», модель — «MS Publisher Imagesetter». Все подтверждаем далее, и имеем подключенный принтер с название вроде printer-linux1 на http://cupsserver:631
. Если до сих пор никаких ошибок и подводных камней при настойке не возникло, то попытка пробной печати приведет к успешной печати на Kyocera-1024FP.
Теперь подключим принтер Canon-MF4400 с хоста windows1 через принтсервер cupsserver к хосту linux1 с системой Linux на борту без какой либо дополнительной(!) установки драйверов. Для этого мы при подключении принтера действуем аналогично тому, как подключали Kyocera-1024FP к принтсерверу cupsserver. То есть при добавлении принтера на linux1 выбираем метод подключения «Протокол интернет печати (http)», в качестве расположения принтера (Canon-MF4400) ссылку на его группу на принтсервере — http://cupsserver:631/classes/printer-windows1
. При запросе на выбор драйвера указываем марку «Generic», модель — «IPP Everywhere». Называем его как угодно, можно назвать так же как группу — printer-windows1. Теперь принтер доступен на linux1 по ссылке http://linux1:631/printers/printer-windows1
, и мы уже можем отправлять на печать документы.
Главная прелесть данного метода в том, что если на любом из ПК заменяется принтер, заменяется сам компьютер, или то и другое сразу, то это никак не влияет на тех, кто был к ним подключен через группу на принтсервере. Единственная настройка производится на принтсервере — к принтсерверу подключается новый принтер, затем из группы, в которой состоял старый принтер, он удаляется, и добавляется новый принтер на замену старому. И никаких дополнительных настроек на любом количестве ПК, только на принтсервере и собственно ПК на котором меняли принтер. Драйвера «IPP Everywhere» и «MS Publisher Imagesetter» содержат большое количество настроек бумаги, печати и т.д., так что нет проблем настроить нужный вид печати через них.
Заключение
Тема слишком обширна, чтобы изложить сколько-нибудь подробно, и даже так статья вышла крайне объемной. Любые уточнения, указания на ошибки, нераскрытые вопросы и советы, данные в комментариях к данной статье, будут приняты во внимание и в случае необходимости включены в статью.
Состояние перевода: На этой странице представлен перевод статьи CUPS/Printer sharing. Дата последней синхронизации: 13 июля 2018. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.
Эта статья содержит инструкции по совместному использованию принтеров между системами, будь то между двумя системами GNU/Linux или между системой GNU/Linux и Microsoft Windows.
Создание класса для нескольких принтеров
‘Класс’ в CUPS имеет значение группы. Когда у вас есть несколько принтеров, подключенных к одному серверу CUPS, вы можете захотеть их сбалансировать (задания на печать автоматически помещаются в очередь для разных принтеров). Это также дает преимущество в том, что пользователи на удаленной машине работают с одним ‘принтером’. Что особенно полезно, когда один принтер вышел из строя, вы просто исключаете его из класса, но для конечных пользователей ничего не изменится — печать заданий, поставленных на другой принтер сервером CUPS, продолжает обрабатываться. Создание и управление классами можно выполнять из веб-интерфейса CUPS.
Внутри систем GNU/Linux
Сервер можно настраивать с помощью веб-интерфейса или путем ручного редактирования файла /etc/cups/cupsd.conf
.
Смотрите статью CUPS (Русский) для настройки клиента.
Использование веб-интерфейса
Для доступа к странице администрирования CUPS, откройте в браузере адрес: http://localhost:631.
В верхней части находится вкладка Администрирование — кликните по ней, нажмите на кнопку добавления принтера, при этом будут автоматически определены подключенные принтеры. Если этого не произойдет, отключите принтер и подключите его снова.
После создания принтера зайдите в раздел Сервер и установите флажок напротив «Разрешить совместный доступ к принтерам, подключенным к этой системе». После клика по Сохранить, сервер будет перезапущен автоматически.
Для более детальной настройки вы можете отредактировать файл /etc/cups/cupsd.conf
, нажав кнопку «Редактировать конфигурационный файл». Для получения дополнительной информации смотрите #Ручная настройка.
Ручная настройка
На сервере (тот, который управляет и подсоединён к принтеру) разрешите доступ к серверу, изменив строчки с тэгом Location. Например:
/etc/cups/cupsd.conf
<Location /> Order allow,deny Allow localhost Allow 192.168.0.* </Location> ...
Также убедитесь, что серверу для адресации доступен IP-адрес клиента:
/etc/cups/cupsd.conf
... Listen <hostname>:631 ...
Есть другие возможности для настройки, включая автоматические способы, которые детально описаны в Использование сетевых принтеров и cupsd.conf(5).
После внесения каких-либо изменений перезапустите службу org.cups.cupsd
.
Если CUPS запускается с помощью активации сокета, создайте drop-in сниппет для org.cups.cupsd.socket
, чтобы активация сокета работала и с удаленными подключениями:
/etc/systemd/system/org.cups.cupsd.socket.d/override.conf
[Socket] ListenStream=631
Включение обнаружения
Чтобы включить отображение (обнаружение) общего принтера, необходимо установить Avahi и запустить его на сервере.
Если вам не нужно обнаружения принтера, тогда Avahi не требуется ни на сервере, ни на клиенте.
Чтобы включить отображение, выберите Показывать общие принтеры, подключенные к этой системе в веб-интерфейсе, или вручную включите Browsing и введите BrowseAddress:
/etc/cups/cupsd.conf
... Browsing On BrowseAddress 192.168.0.*:631 ...
затем перезапустите службу org.cups.cupsd
.
Обратите внимание, что «обнаружение» на сервере — другая вещь по сравнению с «обнаружением» на удаленном сетевом хосте. На сервере печати cupsd
предоставляет поддержку протокола DNS-SD, который транслируется avahi-daemon
. Служба cups-browsed
не нужна на сервере печати за исключением, если будет транслироваться старый протокол CUPS’а, или если сервер печати также будет «обнаруживать» другие сетевые принтеры. На удаленном сетевом хосте служба cups-browsed
требуется для «обнаружения» сетевой трансляции служб печати, а также запущенная служба cups-browsed
будет автоматически запускать cupsd
.
Служба org.cups.cupsd.service
запускается автоматически при подключении USB-принтера, но это может быть не так для других типов подключений. Если cupsd
не запущен, тогда avahi-daemon
не транслирует службу печати, поэтому в этом
случае service-файл юнита systemd должен быть изменен при запуске во время загрузки, а затем служба снова должна
быть «включена/установлена» с новой зависимостью. Чтобы сделать это, отредактируйте раздел файла службы [Install]
, добавив зависимость WantedBy=default.target
, а затем включите и запустите службу org.cups.cupsd.service
.
Между GNU/Linux и Windows
Сервер Linux — клиент Windows
Общий доступ для клиентов Windows может быть достигнут, используя #Общий доступ с помощью Bonjour, #Общий доступ с помощью IPP или #Общий доступ с помощью Samba.
После настройки сервера установите драйвера для принтера на компьютере под управлением Windows. Если принтер сервера CUPS настроен на использование собственных драйверов вместо raw
(raw — когда cups просто передает на принтер полученное задание для печати без какой-либо обработки), вы можете просто выбрать общий драйвер postscript для клиента Windows (например, ‘HP Color LaserJet 8500 PS’ либо ‘Xerox DocuTech 135 PS2’, либо ‘Microsoft PS Class driver’).
Общий доступ с помощью Bonjour
Службы печати Bonjour позволяет клиентам Windows легко подключаться к серверам печати Unix с включенным обнаружением.
Общий доступ с помощью IPP
Internet Printing Protocol является широко поддерживаемым стандартом среди операционных систем, который также прост в настройке. Он имеет функцию переадресации портов, туннелирования и т.д.
Примечание: Возможно, вам придется добавить Internet Printing Client в Windows (Панель управления > Программы > Включение или отключение компонентов Windows > Службы печати и документов)
Сначала, настройте сервер как описано в разделе #Внутри систем GNU/Linux.
На компьютере с Windows, перейдите в Панель управления > Просмотр устройств и принтеров и выберите в контекстном меню ‘Добавить принтер’. Если у вас Windows 10, нажмите кнопку «Принтер, который я хочу, не указан». Далее, выберите ‘Выбрать общий принтер по имени’ и тип расположения принтера:
http://hostname:631/printers/printer_name
(Где hostname — это имя хоста или IP-адрес сервера GNU/Linux, а printer_name — это имя подключенного принтера. Вы также можете использовать полное доменное имя сервера, если оно есть, но вам может потребоваться установить ServerAlias my_fully_qualified_domain_name
в /etc/cups/cupsd.conf
, чтобы это заработало).
Примечание:
- Диалоговое окно ‘Добавить принтер’ в Windows предлагает формат
http://computername/printers/printername/.printer
, который Windows не примет. Вместо этого используйте синтаксис, предложенный выше. - Если вы используете прокси, тщательно проверяйте все использованные прокси исключения. Неправильная настройка здесь может привести к невозможности добавления принтера до следующей перезагрузки, даже если вы отключите прокси-сервер после этого (по крайней мере, в Windows 7).
Общий доступ с помощью Samba
Samba — реализация протокола обмена файлами Windows и принтерами, даже самых старых.
Обратите внимание, что общий доступ с помощью Samba обычно более сложный для настройки и сопровождения.
Для настройки Samba на сервере Linux, отредактируйте файл /etc/samba/smb.conf
, это даст возможность предоставить общий доступ к принтерам. Файл smb.conf
может содержать примерно следующее:
/etc/samba/smb.conf
[global] workgroup=Heroes server string=Arch Linux Print Server security=user [printers] comment=All Printers path=/var/spool/samba browseable=yes # разрешите это, чтобы пользователь 'гостевой учетной записи' мог пользоваться печатью. guest ok=no writable=no printable=yes create mode=0700 write list=@adm root ваше_имя_пользователя
Этого должно быть достаточно для организации совместного доступа, но все-таки рекомендуется добавить для принтера отдельную запись:
/etc/samba/smb.conf
[ML1250] comment=Samsung ML-1250 Laser Printer printer=ml1250 path=/var/spool/samba printing=cups printable=yes printer admin=@admin root ваше_имя_пользователя user client driver=yes # разрешите это, чтобы пользователь 'гостевой учетной записи' мог пользоваться печатью. guest ok=no writable=no write list=@adm root ваше_имя_пользователя valid users=@adm root ваше_имя_пользователя
Учтите, что при таких настройках, должна существовать учетная запись с правами доступа к принтеру. Для публичного принтера установите guest ok в yes, и удалите строку valid users. Для добавления учетных записей, создайте действующую учетную запись GNU/Linux, а затем установите на Samba-сервере пароль. Например:
# useradd ваше_имя_пользователя # smbpasswd -a ваше_имя_пользователя
Затем перезапустите демон Samba:
Естественно, имеется множество дополнительных настроек сервера печати Samba, поэтому, для получения дополнительной информации, следует обратиться к справочной документации Samba и CUPS. Образцы и примеры можно посмотреть в файле smb.conf.example
.
Сервер Windows — клиент Linux
Важно: Любые особые символы в URI принтера должны быть соответствующим образом процитированы, или, если в имени вашего принтера Windows или в пароле есть пробелы, тогда CUPS выдаст ошибку «lpadmin: Bad device-uri».
Например:
smb://BEN-DESKTOP/HP Color LaserJet CP1510 series PCL6
станет:
smb://BEN-DESKTOP/HP%20Color%20LaserJet%20CP1510%20series%20PCL6
Такая строка может быть получена в результате выполнения следующей команды:
$ python -c 'from urllib.parse import quote; print("smb://" + quote("BEN-DESKTOP/HP Color LaserJet CP1510 series PCL6"))'
Общий доступ с помощью LPD
В Windows 7, 8 и 10 имеется интегрированный LPD-сервер, то, возможно, будет намного проще использовать именно его, поскольку не придется для клиента устанавливать Samba, а на сервере — можно будет обойтись без сложных настроек. Это можно включить в разделе Службы печати и документов, находящего в Панель управления -> Программы -> Включение или отключение компонентов Windows. В свойствах принтера должен быть включен общий доступ. Используйте общее имя без особых символов, таких как пробел, запятые и др.
Затем, принтер можно будет добавить в CUPS просто выбрав протокол LPD. Адресс принтера будет выглядеть следующим образом:
# lpd://windowspc/имя_общего_принтера
Перед добавлением вам, скорее всего, понадобиться установить для своей модели принтера соответствующий драйвер. Драйвера Generic PostScript или RAW тоже должны работать.
Общий доступ с помощью IPP
Как и в предыдущем случае, для организации общего доступа к принтерам протокол IPP является предпочтительным, но он работает только с версиями Windows Server. Версия Windows Server (например Server 2016) включаюет поддержку IPP (функции «Службы печати и документов», служба «Интернет-печати»). Клиентские версии (например, Windows 10) включают поддержку только клиента IPP и не поддерживают совместный доступ через IPP.
Общий доступ с помощью Samba
Гораздо проще использовать стандартные возможности Windows по предоставлению общего доступа к принтерам с помощью Samba. Ручная настройка практически не требуется и все можно выполнить через бэкенд CUPS. Однако, как было замечено выше, в Windows могут возникнуть проблемы с аутентификацией и ограничением доступа.
На стороне сервера необходимо разрешить общий доступ к принтеру и убедится, что клиентские машины имеют к этому принтеру доступ.
В следующем разделе будут описаны настройки клиента с обоими (cupsd и smbd) запущенными демонами.
Настройка через веб-интерфейс
Samba CUPS бэк-енд должен быть включен по умолчанию, но если этого не происходит — введите следующую команду и перезапустите CUPS.
# ln -s $(which smbspool) /usr/lib/cups/backend/smb
Затем, просто зайдите в веб-интерфейс CUPS и добавьте новый принтер. В качестве устройства выберите «Windows Printer via SAMBA».
Для местоположения устройства, выберите:
smb://имя_пользователя:пароль@имя_хоста/имя_принтера
Или, если пароля нет:
smb://имя_пользователя@имя_хоста/имя_принтера
Убедитесь, что пользователь действительно имеет доступ к принтеру на компьютере Windows, и выберите соответствующие драйверы. Если компьютер находится в домене, убедитесь, что в имени пользователя присутствует домен:
smb://имя_пользователя:пароль@домен/имя_хоста/имя_принтера
Ручная настройка
При ручной настройке: остановите демон CUPS и добавьте свой принтер в /etc/cups/printers.conf
, который, к примеру, может выглядеть так:
/etc/cups/printers.conf
<DefaultPrinter MyPrinter> AuthInfoRequired username,password Info My printer via SAMBA Location In my Office MakeModel Samsung ML-1250 - CUPS+Gutenprint v5.2.7 # <= для получения списка доступных моделей запустить 'lpinfo -m' DeviceURI smb://username:password@hostname/printer_name # <= URI сервера, выбирать согласно описания в предыдущем разделе State Idle Type 4 Accepting Yes Shared No JobSheets none none QuotaPeriod 0 PageLimit 0 KLimit 0 AllowUser yourusername # <= не забудьте изменить это OpPolicy default ErrorPolicy stop-printer </Printer>
Перезапустите демон CUPS и распечатайте тестовую страницу.
Поиск URI для серверов печати Windows
Иногда имя хоста Windows (усеченно) меньше предстоящего точного URI устройства (расположение устройства) (Sometimes Windows is a little less than forthcoming about exact device URIs (device locations)). Если возникли проблемы с указанием правильного расположения устройства в CUPS, выполните следующую команду, чтобы вывести список всех общих ресурсов, доступных для определенного имени пользователя windows:
$ smbtree -U имя_пользователя_windows
В этом списке будет отображаться только общие URI для определенного имени пользователя Windows в локальной подсети локальной сети, если Samba настроен и работает правильно. Команда должна вернуть что-то вроде этого:
WORKGROUP \REGULATOR-PC \REGULATOR-PCZ \REGULATOR-PCPublic \REGULATOR-PCprint$ Printer Drivers \REGULATOR-PCG \REGULATOR-PCEPSON Stylus CX8400 Series EPSON Stylus CX8400 Series
Здесь требуется первая часть последней строки — ресурс, соответствующий описанию принтера. Поэтому для печати на принтер EPSON Stylus введите:
smb://имя_пользователя:пароль@REGULATOR-PC/EPSON%20Stylus%20CX8400%20Series
как URI в CUPS.
Удаленное управление
Однажды сервер настроенный, как описано в #Внутри систем GNU/Linux, может также быть настроенным так, чтобы им можно было управлять удаленно. Добавьте разрешенные хосты в блок <Location /admin>
в /etc/cups/cupsd.conf
, используя тот же синтаксис, что и в #Ручная настройка. Обратите внимание, что доступны три уровня доступа:
<Location /> #доступ к серверу <Location /admin> #доступ к страницам администратора <Location /admin/conf> #доступ к файлам конфигурации
Чтобы дать удаленным хостам доступ к одному из этих уровней, добавьте оператор Allow
в этот уровень. Оператор Allow
может принимать одну или несколько форм, перечисленных ниже:
Allow from all Allow from host.domain.com Allow from *.domain.com Allow from ip-address Allow from ip-address/netmask Allow from @LOCAL
Отрицательный оператор также может быть использован. Например, чтобы предоставить полный доступ ко всем хостам на локальных сетевых интерфейсах, отредактируйте /etc/cups/cupsd.conf
:
# Ограничить доступ к серверу... # По умолчанию возможны только локальные подключения <Location /> Order allow,deny Allow from @LOCAL </Location> # Ограничить доступ к страницам администратора... <Location /admin> Order allow,deny Allow from @LOCAL </Location> # Ограничить доступ к файлам конфигурации... <Location /admin/conf> AuthType Basic Require user @SYSTEM Order allow,deny Allow from @LOCAL </Location>
The factual accuracy of this article or section is disputed.
Вам также может потребоваться добавить:
DefaultEncryption Never
Это должно помочь избежать ошибки: 426 — Upgrade Required when using the CUPS web interface from a remote machine.
Kerberos
Kerberos может использоваться для аутентификации пользователей, обращающихся к удаленному серверу CUPS. Это предполагает, что на вашем компьютере есть keytab, и ему понадобится билет для «HTTP». Вместо этого http://localhost:631
вы должны использовать https://host.example.co.uk:631
т.к. требуется шифрование для auth (следовательно, https), и требуется полное имя хоста, чтобы Kerberos/Negotiate могли работать. Кроме того, сервер должен быть настроен в /etc/cups/cupsd.conf
, чтобы использовать DefaultAuthType
Negotiate
.
Если вы используете поддержку NSS в Samba winbind, вы можете добавить имя группы AD в /etc/cups/cups-files.conf
— в следующем примере sysadmin
может быть группой AD:
SystemGroup sys root sysadmin
Решение проблем
Общие советы по устранению неполадок смотрите в CUPS/Решение проблем.
Не удается отправить на печать из приложений GTK
Если ты получил сообщение getting printer information failed (ошибка получения информации о принтере), когда пытался отправить на печать из приложения GTK, тогда добавь эту строку в свой /etc/hosts
:
# serverip some.name.org ServersHostname
Ошибки разрешений в Windows
Некоторые пользователи исправили ошибки ‘NT_STATUS_ACCESS_DENIED’ (Windows клиенты), используя несколько иной синтаксис:
smb://рабочая_группа/имя_пользователя:пароль@имя_хоста/имя_принтера
Другие операционные системы
Более подробную информацию о взаимодействии CUPS с другими системами печати можно найти в руководстве CUPS, например, на http://localhost:631/help/network.html
Наткнулся на простую инструкцию: настройка печати из-под Windows в CUPS.
Там даже много написано. Чтобы настроить печать в Windows на принтер, подключённый к CUPS, надо:
- Включить доступ к принтерам CUPS снаружи
- Добавить в Windows сетевой принтер, адрес которого совпадает с URL, с помощью которого вы настраиваете принтер в CUPS
- Выбрать драйвер принтера «MS Publisher Imagesetter»
Всё!
Теперь подробнее. Принтер Cups-PDF на машине grail (имя домена опускаю).
- Заходим на машине с принтером на http://localhost:631/admin (или удалённо на http://grail:631/admin, если разрешено), включаем галочку «Разрешить совместный доступ к принтерам, подключенным к этой системе». Сохраняем.
- Заходим в раздел «Принтеры», тыкаем в нужный принтер. Получаем примерно такой URL: http://grail:631/printers/Cups-PDF . Запоминаем его
- В Windows вызвать «Мастер установки принтеров» («Принтеры и факсы» → «Установка принтера»). «Далее» → «Сетевой принтер…» → «подключиться к принтеру в Интернете…». Сюда вбиваем URL (в примере http://grail:631/printers/Cups-PDF); стоит обратить внимание на то, что адрес принтера — не localhost :). «Далее» → изготовитель «Generic» → принтер «MS Publisher Imagesetter» → «Ok» → «Готово».
Проверить можно, ткнув правой кнопкой в образовавшийся принтер → «Свойства» → «Пробная печать». Кстати, в нашем случае результат (файл .pdf) попадает довольно глубоко: в каталог /var/spool/cups-pdf/ANONYMOUS.
Автор заметки подсказывает на всякий случай проверить ещё 631 порт в брандмауэре на обеих машинах и настройки прокси Windows.
Примечание: Аналогичная настройка на Линуксе описана тут
Попробуем разобраться, как можно организовать печать из Windows на принтер, установленный на системе с UNIX / Linux / Mac OS X. Стандартная подсистема печати для UNIX называется CUPS (Common UNIX Printing System). Одни из способов организовать сетевую печать на CUPS принтере – открыть к нему общий доступ (расшарить) с помощью Samba. Однако в этой статье мы не будем рассматривать этот способ, т.к. несмотря на то, что этот способ является «родным» для Windows-клиентов, не всегда целесообразно разворачивать и настраивать самбу, если помимо организации сервера печати, другой необходимости в ней нет (скорее всего придется решить целый ряд проблем, в основном, конечно, связанных с авторизацией).
Предпочтительным методом подключения клиента Windows к серверу печати CUPS на UNIX-подобной операционной системе — является протокол IPP (Internet Printing Protocol), используемый в CUPS в качестве основы для управления заданиями и очередями. IPP это стандартный протокол, основанный на HTTP, позволяющий управлять печатью, поддерживает аутентификацию и шифрование (SSL), контроль доступа, а также позволяющий использовать переадресацию портов и туннелированние. По сравнению с Samba конфигурация сервера печати CUPS через IPP является более простой, и менее подвержена ошибкам.
В Windows встроенная поддержка IPP появилась только начиная с версии Windows 2000.
Итак, предположим, у нас имеется компьютер с OS X Lion, на котором развернут сервер CUPS с принтером Canon, сетевой доступ к которому открыт (в данном примере доступ открыт для всех без авторизации по логину/паролю).
Получаем адрес очереди печати на сервере CUPS
Предположим, что адрес нашего компьютера с OS X (и, соответственно, нашего сервера печати) 192.168.11.211, по умолчанию сервера CUPS использует TCP-порт 631. В адресной строке браузера перейдите по адресу , а затем на вкладку Printers. Во вкладке будет отображен список всех установленных в системе OS X и доступных нам принтеров. Имя каждого принтера представляет собой ссылку, адрес которой и является адресом очереди печати принтера в системе CUPS.
Таким образом мы узнаем (и сразу копируем его в буфер обмена), что адрес очереди интересующего нас принтера в системе CUPS это
http:// 192.168.11.211:631/printers/Canon_iP4000_series
Поддержка IPP/CUPS печати в Windows
Для того, чтобы включить поддержку печати IPP в Windows, необходимо установить соответствующую роль. Как правило, в Windows XP/Vista/ Windows 7 поддержка протокола печати через интернет (IPP) уже установлена. Если нет, в Windows 7 установить клиента IPP можно сделать через панель управления. Перейдите в Control Panel ->Programs and Features -> Turn Windows feautures on or off. В появившемся окне разверните ветку Print and Document Services, отметьте опцию Internet Printing Client и нажмите Ок, после чего будет установлен клиент поддержки IPP печати (в Windows 2008/2008 R2 устанавливается отдельная функция с аналогичным именем).
Установка и настройка сетевого CUPS принтера в Windows
Установку и настройку IPP принтера мы будем осуществлять в Windows 7 (процедура в других версиях Windows аналогична, отметим, что в данном случае мы настраиваем именно сетевой принтер, а не локальный как описано в статье Печать из Windows 7 на сетевой принтер XP). Перейдите в панель управления принтерами (Control PanelHardware and SoundDevices and Printers) и создайте новый сетевой принтер (Add a network, wireless or Bluetooth printer). Запустится автоматический поиск принтеров, но скорее всего, нужный принтер найден не будет, поэтому нажмите на кнопку The printer what I wont isn’t listed.
В поле Select a shared printer by name вставьте скопированный ранее адрес очереди печати принтера и нажмите Next.
Windows попытается соединится с принтером, причем не факт что удачно, это зависит от многих факторов и разобрать их все вряд ли получится. Из практики, отметим, что если процесс подключения к принтеру затянется (более 3-5 минут), попробуйте проверить доступность сервера CUPS, перейдя на тот же адрес с помощью любого браузера, и попробуйте подключить принтер опять.
В случае успешного подключения система предложит вам установить драйвер принтера. На этом моменте немного остановимся. Система CUPS принимает от клиентов файлы печати, являющиеся обычными PostScript документами. Язык печати PostScript поддерживается системой Windows прямо «из коробки», главная проблема в том, что имя стандартного драйвера PS звучит Microsoft Publisher Color Printer (забавная маскировка, не правда ли), но на некоторых системах может использоваться именование MS Publisher Imagesetter.
Итак, выбираем драйвер, для чего переходим в секцию Generic, выбираем MS Publisher Color Printer и жмем ОК (если в системе имеется «родной» драйвер принтера, все равно выбираем MS Publisher!).
Если все прошло успешно (а обычно проблем на этом этапе не возникает), то далее следует типовая процедура настройки принтера (имя, описание, нужно ли давать общий доступ). Нажав, Next попытайтесь распечатать тестовую страницу печати. Как правило, тестовая страница печати без каких либо затруднений выводится на печать на принтере, подключенном к Unix-like клиенту.
В некоторых случаях стоит попробовать установить родной драйвер принтера, хотя все же предпочтительно сначала убедится, что с простым драйвером PS задания печати выводятся корректно. Но следует понимать, что реально для печати используется драйвер, установленный в системе CUPS, а установленный в Windows драйвер PostScript всего лишь формирует PS файл и передает его на сервер.
Примечание. Не забудьте проверить, что между машиной с OS X и Windows порт 631 не блокируется сетевым экраном.
Итак, мы разобрались, как в Windows 7 настроить печать на принтер, установленный в Mac OS X (в UNIX/Linux процедура аналогична).
Чтобы иметь возможность сетевой печати на компьютере с виндой на принтер, подключенный к linux-машинке с CUPS-ом (Common Unix Printing System), нужно проделать следующее:
- Проверить, что в CUPS-е разрешён общий доступ к принтеру. Для этого идём по ссылке http://10.1.1.49:631/printers/scx4200 (IP-адрес и имя принтера заменить в соответствии с Вашим случаем). Должна быть надпись «разрешен совместный доступ».
- В windows запускаем «Мастер установки принтеров» — через панель управления или командой
rundll32 SHELL32, SHHelpShortcuts_RunDLL AddPrinter
жмём «Далее…», выбираем опцию «Сетевой принтер или принтер подключенный к другому компьютеру», далее выбираем опцию «Подключиться к принтеру в Интернете, домашней сети или в интрасети»
- В поле URL вводим адрес принтера, например: http://10.1.1.49:631/printers/scx4200
Если спросит про драйвер, выбрать изготовителя «Generic» и модель «MS Publisher Imagesetter». Жмём «Далее…» и принтер готов к использованию.
Если что-то не работает, в проверить следующее:
- что в firewall-е на linux-машинке открыт TCP-порт 631 для windows-клиента.
- что в винде в Internet Explorer-е ОТКЛЮЧЕН прокси-сервер (пол-часа голову ломал в своё время, пока не допёр посмотреть туда)
Вам необходимо печать буклетов дешево спб? Срочная печать в СПб звоните нам: +7 (812) 380 03 99!
Бесплатный антивирус 360 Total Security скачать для защиты компьютера в реальном времени.
Posted in *nix, Howto, Windows.
Tagged with CUPS, linux, Windows, принтер.
– 17.06.2011
Have you ever wondered if you could print from your Windows 10 machine to a CUPS printer on your local network? It might be actually quite easy. See this documentation about how I did it with my black & white Samsung SCX-3205 printer.
Checking CUPS configuration and access
Lets say you have somehow configured CUPS. In order for it to serve external computers, at least these settings should be present in /etc/cups/cupsd.conf:
Listen 0.0.0.0:631 # A bit more down... # Old setting, comment out: #<Location /> # Order allow,deny #</Location> # New setting: <Location /> Allow all </Location>
So here we made the CUPS root accessible externally. Restart cups for settings to take effect. Next, on your Windows 10 machine navigate to your cups host, for example http://172.16.8.164:631/printers . Click on the printer you have installed earlier:
Next you get the printer page, for for example like this:
NOW ENSURE THAT THE URL IS HTTP! NOT HTTPS! And save the URL. My URL was http://172.16.8.164:631/printers/Samsung_SCX-3200_Series .
Adding the CUPS printer in Windows 10 with generic(ish) drivers
Next open the Printers setting:
Click to add new printer…
…and select that printer is not listed:
Allow UAC prompt:
Now select the “Select a shared printer by name” option and write the URL you had earlier. For me it was http://172.16.8.164:631/printers/Samsung_SCX-3200_Series . Then select Next:
Now Windows asks about what driver to use. For my black & white printer the driver named “HP LaserJet 9000 PS Class Driver” seems to work with CUPS:
(For color printers, maybe something else is needed? Maybe “HP Color Laserjet 5500 PS Class Driver” ? But I have not tested this.)
Next you can print test page:
Observe how it comes out. Looks good!
Next you can close the wizard:
Observe also the printer listed with other printers:
Finally close the settings and you are done. Not so difficult, eh?
Принт-сервер – это программно-аппаратный комплекс, позволяющий осуществлять общий доступ к принтеру по локальной сети.
Принт-сервер можно сделать при помощи Raspberry Pi и сервера печати CUPS (Common UNIX Printing System).
Установка и настройка принт-сервера CUPS
Пакет CUPS включен в стандартные репозитории Debian, поэтому для установки нужно просто выполнить консольную команду:
sudo apt—get install cups |
В дополнение к CUPS установим еще Foomatic.
Foomatic – это такая база драйверов для принтеров, существенно расширяющая стандартную базу драйверов CUPS. Без foomatic шансы на то, что вы найдёте нужный драйвер ничтожны:
sudo apt—get install foomatic—db |
Теперь добавим пользователя pi в группу lpadmin, позволяющую управлять принтерами:
Далее необходимо отредактировать файл конфигурации:
sudo nano /etc/cups/cupsd.conf |
С настройками CUPS по умолчанию административный веб-интерфейс доступен только локально. Сделаем так, чтобы он был доступен с любого устройства по локальной сети. Для этого нужно найти найти и закомментировать строку Listen localhost:631, а также добавить новую строку Port 631:
# Only listen for connections from local machine. #Listen localhost:631 Port 631 |
Далее нужно добавить еще несколько новых строк в этом же файле, чтобы открыть доступ к админ-панели по локальной сети.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# Restrict access to the server… <Location /> Order allow,deny Allow @Local ///эту строку добавляем </Location> # Restrict access to the admin pages… <Location /admin> Order allow,deny Allow @Local ///эту строку добавляем </Location> # Restrict access to configuration files… <Location /admin/conf> AuthType Default Require user @SYSTEM Order allow,deny Allow @Local ///эту строку добавляем </Location> |
Перезапустим CUPS для применения сделанных изменений:
sudo service cups restart |
Если все сделано правильно, то веб-интерфейс CUPS станет доступен по адресу http://ip-адрес-raspberry-pi:631 из браузера.
Переходим на вкладку “Администрирование”:
Убеждаемся, что стоит галочка на “Разрешить совместный доступ к принтерам, подключенным к этой системе” и жмем на “Добавить принтер”
В нем выбираем свой принтер из списка обнаруженных системой. В моем примере это будет EPSON L800 Нажимаем “Применить” и выбираем подходящий драйвер:
Нужно выбрать из списка драйвер для своей модели принтера, но если таковых нет – скорее всего подойдет драйвер от соседней модели того же модельного ряда. В этом примере я устанавливаю драйвер от модели EPSON STYLUS T50 на принтер EPSON L800.
Успешная печать пробной страницы – признак того, что драйвер для принтера подобран верно. Если с пробной страницей возникают проблемы, если принтер не печатает ее вообще или выдает пустые листы без текста – значит проблема в подборе драйвера. Нужно удалять установленный принтер и устанавливать его заново, указывая при этом другие драйвера.
Подключение сетевого принтера к Windows-устройству
Предположим, что установка драйвера для подключенного к принт-серверу CUPS принтера прошла успешно. Теперь нужно подружить с этим принтером компьютер, работающий под управлением Windows. Для этого выбираем сетевой принтер в «установке принтера» и далее по предложениям мастера установки.
Доступ к сетевому принтеру с устройств под управлением iOS
Любым принтером, расшаренным через принт-сервер CUPS, можно пользоваться с любого iOS-устройства, а также с компьютеров Mac вообще без установки драйверов.
Это обусловлено тем, что CUPS поддерживает созданную корпорацией Apple технологию беспроводной печати AirPrint:
Добавляем в систему PDF-принтер
Отдельно напишу о том, как подключить к принт-серверу CUPS виртуальный PDF-принтер.
Что есть PDF-принтер? Это виртуальное устройство, которое добавляется в систему как обычный принтер и при отправке документа на печать генерирует из него pdf-файл. Использовать PDF-принтер удобно для сохранения статей из интернета или отдельных страниц многостраничного документа в виде отдельного файла.
Для установки PDF-принтера нужно установить отдельный пакет:
sudo apt—get install cups—pdf |
Затем создать на Raspberry Pi папку для хранения получаемых pdf-файлов и прописать к ней права доступа:
mkdir —p /mnt/usbstorage/PDF sudo chown pi:lpadmin /mnt/usbstorage/PDF sudo chmod 777 /mnt/usbstorage/PDF |
И отредактировать файл конфигурации:
sudo nano /etc/cups/cups—pdf.conf |
В нем нас интересуют следующие строки:
#Out /var/spool/cups-pdf/${USER} |
#AnonDirName /var/spool/cups-pdf/ANONYMOUS |
#Spool /var/spool/cups-pdf/SPOOL |
Их нужно раскомментировать (удалить знак #) и изменить следующим образом:
AnonDirName /mnt/usbstorage/PDF |
Spool /mnt/usbstorage/PDF |
Первые 3 строки меняют пути сохранения pdf-файлов в созданную нами директорию на внешнем носителе, а четвертая строка меняет формат генерации названия выдаваемого файла. Дело в том, что с настройкой по умолчанию CUPS-PDF не осиливает длинные русскоязычные названия документов и в результате не сохраняет сгенерированные pdf-файлы на диск. После изменения этой настройки проблема уходит.
После чего остается перезагрузить сервер CUPS:
sudo service cups restart |
А затем установить новый принтер и подключить его к компьютеру под Windows, эти шаги идентичны шагам по установке и подключению обычного принтера, описанным выше.
Содержание
- Linux/BSD Проще не бывает!
- Печать из CUPS на розшаренный в Windows принтер.
- Печать из Windows 7 на принтер в Mac OS (Linux)
- Получаем адрес очереди печати на сервере CUPS
- Поддержка IPP/CUPS печати в Windows
- Установка и настройка сетевого CUPS принтера в Windows
- Печать c Windows-клиента на Linux-сервер CUPS
- Оставить комментарий
- Шлюз печати на основе CUPS для терминального сервера на базе MS WS 2008 R2 и его клиентов на базе MS Win 2k/XP с подключёнными к ним принтерами
- Вам будет интересно ознакомиться с данным отчётом, если картина развития Вашей ЛВС подходит под следующее описание
- Практическая необходимость данного решения
- Маршрут, по которому проходит задание на печать
- Идея шлюза
- Концепт инструкции по развёртыванию шлюза
- CUPS (Русский)/Printer sharing (Русский)
- Contents
- Создание класса для нескольких принтеров
- Внутри систем GNU/Linux
- Использование веб-интерфейса
- Ручная настройка
- Включение обнаружения
- Между GNU/Linux и Windows
- Общий доступ с помощью Bonjour
- Общий доступ с помощью IPP
- Общий доступ с помощью Samba
- Общий доступ с помощью LPD
- Общий доступ с помощью IPP
- Общий доступ с помощью Samba
- Удаленное управление
- Kerberos
- Решение проблем
- Не удается отправить на печать из приложений GTK
- Ошибки разрешений в Windows
Linux/BSD Проще не бывает!
Простенькая задачка — необходимо настроить печать по сети из Linux на принтер физически подключенный к машинке с Windows XP и розшаренный по samba. Простенькая потому, что рещается за пару минут 🙂 Итак, оглашу все вводный данные перед началом «плясок с бубном».
WinXP:
Linux:
В моем случае обе машинки были удаленные. Но это не составляет труда, поскольку попасть в админку CUPS можно просто набрав в браузере URL https://ws4.intranet:631/admin
Тут возможны как минимум 3 варианта. Или вас не пустит с ошибкой 403 Forbidden, либо пустит но спросит при первом же действии логин/пароль пользователя имеющего право управлять системой печати и последний вариант — не пустит совсем! Итак лечится каждый вариант посвоему:
У меня с подключением никаких приколов небыло, просто ввел URL в браузере https://ws4.intranet:631/admin и все прекрасно загрузилось (вернее, уже во время добавления принтера спросило login/password — рутовых данных хватило с головой). Короче, увидел такую вот web админку:
Дальше жмем кнопочку слева «Добавить Принтер» и попадаем к выбору типа принтера.
Тут я выбрал Windows Printer via SAMBA (видно на картинке). Жмем «Продолжить». После этого попадаем на этап указания сервера и строки подключения вцелом. Тут самое интересное — строка подключения 🙂 В ней используется имя пользователя/пароль виндового пользователя для авторизации по SAMBA на виндовой машине. Вобщем, все видно на скриншоте:
Жмем «Продолжить». Попадаем в дополнительные настройки подключаемого принтера. Тут можно прописать название принтера (под этим именем он будет подключен в систему) а также расположение и описание. Пишим то что считаем нужным. Я заполнил так:
Прописали? Жмем «Продолжить». Отрывается следующая страничка мастера подключения принтеров в которой уже предлагается выбрать производителя нашей железки (принтера) ну или сразу ppd файл 🙂
У меня небыло ppd-шки — выбрал просто HP и нажал «Продолжить». Заключительным шагом был выбор драйвера для принтера. Делается все также просто:
Выделяем нужный нам драйвер и жмем «Добавить принтер». Если все сделано как надо, то в списке принтеров должен появиться принтер 🙂 В этом можно убедиться просто зайдя на вкладку «Принтеры». Притом можно ходить как по http так и по https. К примеру я зашел используя такой URL: http://ws4.intranet/printers Вот что там увидел:
Как видите, принтер подключился и ожидает задания 🙂 Ну как пользоваться принтером вы уже и сами разберетесь. Такчто на этом мой рассказ пришел к логическому завершению 🙂
Всем удачи и безглючной печати в придачу 😉
Источник
Печать из Windows 7 на принтер в Mac OS (Linux)
Попробуем разобраться, как можно организовать печать из Windows на принтер, установленный на системе с UNIX / Linux / Mac OS X. Стандартная подсистема печати для UNIX называется CUPS (Common UNIX Printing System). Одни из способов организовать сетевую печать на CUPS принтере – открыть к нему общий доступ (расшарить) с помощью Samba. Однако в этой статье мы не будем рассматривать этот способ, т.к. несмотря на то, что этот способ является «родным» для Windows-клиентов, не всегда целесообразно разворачивать и настраивать самбу, если помимо организации сервера печати, другой необходимости в ней нет (скорее всего придется решить целый ряд проблем, в основном, конечно, связанных с авторизацией).
Предпочтительным методом подключения клиента Windows к серверу печати CUPS на UNIX-подобной операционной системе — является протокол IPP (Internet Printing Protocol), используемый в CUPS в качестве основы для управления заданиями и очередями. IPP это стандартный протокол, основанный на HTTP, позволяющий управлять печатью, поддерживает аутентификацию и шифрование (SSL), контроль доступа, а также позволяющий использовать переадресацию портов и туннелированние. По сравнению с Samba конфигурация сервера печати CUPS через IPP является более простой, и менее подвержена ошибкам.
В Windows встроенная поддержка IPP появилась только начиная с версии Windows 2000.
Итак, предположим, у нас имеется компьютер с OS X Lion, на котором развернут сервер CUPS с принтером Canon, сетевой доступ к которому открыт (в данном примере доступ открыт для всех без авторизации по логину/паролю).
Получаем адрес очереди печати на сервере CUPS
Таким образом мы узнаем (и сразу копируем его в буфер обмена), что адрес очереди интересующего нас принтера в системе CUPS это
http:// 192.168.11.211:631/printers/Canon_iP4000_series
Поддержка IPP/CUPS печати в Windows
Установка и настройка сетевого CUPS принтера в Windows
Установку и настройку IPP принтера мы будем осуществлять в Windows 7 (процедура в других версиях Windows аналогична, отметим, что в данном случае мы настраиваем именно сетевой принтер, а не локальный как описано в статье Печать из Windows 7 на сетевой принтер XP). Перейдите в панель управления принтерами (Control PanelHardware and SoundDevices and Printers) и создайте новый сетевой принтер (Add a network, wireless or Bluetooth printer). Запустится автоматический поиск принтеров, но скорее всего, нужный принтер найден не будет, поэтому нажмите на кнопку The printer what I wont isn’t listed.
В поле Select a shared printer by name вставьте скопированный ранее адрес очереди печати принтера и нажмите Next.
Windows попытается соединится с принтером, причем не факт что удачно, это зависит от многих факторов и разобрать их все вряд ли получится. Из практики, отметим, что если процесс подключения к принтеру затянется (более 3-5 минут), попробуйте проверить доступность сервера CUPS, перейдя на тот же адрес с помощью любого браузера, и попробуйте подключить принтер опять.
В случае успешного подключения система предложит вам установить драйвер принтера. На этом моменте немного остановимся. Система CUPS принимает от клиентов файлы печати, являющиеся обычными PostScript документами. Язык печати PostScript поддерживается системой Windows прямо «из коробки», главная проблема в том, что имя стандартного драйвера PS звучит Microsoft Publisher Color Printer (забавная маскировка, не правда ли), но на некоторых системах может использоваться именование MS Publisher Imagesetter.
Итак, выбираем драйвер, для чего переходим в секцию Generic, выбираем MS Publisher Color Printer и жмем ОК (если в системе имеется «родной» драйвер принтера, все равно выбираем MS Publisher!).
Если все прошло успешно (а обычно проблем на этом этапе не возникает), то далее следует типовая процедура настройки принтера (имя, описание, нужно ли давать общий доступ). Нажав, Next попытайтесь распечатать тестовую страницу печати. Как правило, тестовая страница печати без каких либо затруднений выводится на печать на принтере, подключенном к Unix-like клиенту.
В некоторых случаях стоит попробовать установить родной драйвер принтера, хотя все же предпочтительно сначала убедится, что с простым драйвером PS задания печати выводятся корректно. Но следует понимать, что реально для печати используется драйвер, установленный в системе CUPS, а установленный в Windows драйвер PostScript всего лишь формирует PS файл и передает его на сервер.
Примечание. Не забудьте проверить, что между машиной с OS X и Windows порт 631 не блокируется сетевым экраном.
Итак, мы разобрались, как в Windows 7 настроить печать на принтер, установленный в Mac OS X (в UNIX/Linux процедура аналогична).
Источник
Печать c Windows-клиента на Linux-сервер CUPS
Бывает необходимо печатать с компьютера под управлением Windows на принтере, подключенном к компьютеру с Linux. В этой статье я напишу, как настроить подобное подключение принтера.
С этого момента к принтеру могут подключаться и печатать другие клиенты согласно списка разрешений.
Теперь о настройке клиентов. О настройке Linux-клиента писать не буду (раз вы осилили настройку локального принтера значит настроите и сетевой). Напишу о подключении с Windows-машины.
Существует два способа подключения.
Первый способ использует Samba. Для этого потребуется установить и настроить Samba, поэтому использовать его мы не будем (хотя этот способ единственный для тех, кто использует Windows версии меньше чем Windows 2000).
Второй способ – использовать непосредственно протокол CUPS (годится для Windows 2000, Windows XP, Windows 7).
где host_ip_address – это IP адрес вашего Linux сервера, а printer_name – это имя принтера, к которому вы подключаетесь. После этого установите драйвера для принтера на компьютер с Windows. Все установка завершена. Проверьте ваши настройки, попробовав напечатать тестовую страницу. Если тестовая страница распечаталась, на этом все.
Если задание на печать поступало, но не выполнено, значит, проверяем сам принтер, проблема в нем, либо в настройках порта принтера.
Добавить в Twitter
Добавить в Telegram
Ох уж этот рав-формат! Намучался пока свой Samsung SCX-4300 подключал. Целый день потерял, пока разобрался. 🙁
Подключается, на печать документы уходят, принтер жужжит, а не печатает ничего. А все из-за отключенного raw.
Оставить комментарий
Привет, читатель! Здесь пишут о веб-разработке и немного на другие темы, так или иначе связанные с компьютером. Используй страницу поиска и архива для поиска нужной тебе информации.
Источник
Шлюз печати на основе CUPS для терминального сервера на базе MS WS 2008 R2 и его клиентов на базе MS Win 2k/XP с подключёнными к ним принтерами
Вам будет интересно ознакомиться с данным отчётом, если картина развития Вашей ЛВС подходит под следующее описание
Практическая необходимость данного решения
Несколько экземпляров печатающих устройств подпали под некоторые случаи, рассмотренные в преамбуле отчёта. К примеру: один XEROX DocuPrint P8ex (клиентская ОС Windows XP) и два экземпляра HP LaserJet 1005 (один подключён к клиентскому компьютеру на базе Windows 2000, другой — на базе Windows XP).
Маршрут, по которому проходит задание на печать
Идея шлюза
«Шлюз — ретрансляционная система, обеспечивающая взаимодействие двух информационных сетей.»
Точней было бы назвать его виртуальным шлюзом печати или как-нибудь иначе; далее, для краткости это звено маршрута будем называть просто шлюзом.
Самое интересное уже изложено, пора переходить к рутине. Далее приводится…
Концепт инструкции по развёртыванию шлюза
# aptitude install cups
…
0 пакетов обновлено, 52 установлено новых, 0 пакетов отмечено для удаления, и 0 пакетов не обновлено.
Необходимо получить 26,7 MB архивов. После распаковки 83,2 MB будет занято.
Хотите продолжить? [Y/n/?] Y
.
# /etc/init.d/cups status
Status of Common Unix Printing System: cupsd is running.
> net stop spooler
> net start spooler
Источник
CUPS (Русский)/Printer sharing (Русский)
Эта статья содержит инструкции по совместному использованию принтеров между системами, будь то между двумя системами GNU/Linux или между системой GNU/Linux и Microsoft Windows.
Contents
Создание класса для нескольких принтеров
Внутри систем GNU/Linux
Использование веб-интерфейса
Для доступа к странице администрирования CUPS, откройте в браузере адрес: http://localhost:631.
После создания принтера зайдите в раздел Сервер и установите флажок напротив «Разрешить совместный доступ к принтерам, подключенным к этой системе». После клика по Сохранить, сервер будет перезапущен автоматически.
Ручная настройка
На сервере (тот, который управляет и подсоединён к принтеру) разрешите доступ к серверу, изменив строчки с тэгом Location. Например:
Также убедитесь, что серверу для адресации доступен IP-адрес клиента:
Включение обнаружения
Чтобы включить отображение (обнаружение) общего принтера, необходимо установить Avahi и запустить его на сервере. Если вам не нужно обнаружения принтера, тогда Avahi не требуется ни на сервере, ни на клиенте.
Чтобы включить отображение, выберите Показывать общие принтеры, подключенные к этой системе в веб-интерфейсе, или вручную включите Browsing и введите BrowseAddress:
Между GNU/Linux и Windows
Общий доступ с помощью Bonjour
Службы печати Bonjour позволяет клиентам Windows легко подключаться к серверам печати Unix с включенным обнаружением.
Общий доступ с помощью IPP
Internet Printing Protocol является широко поддерживаемым стандартом среди операционных систем, который также прост в настройке. Он имеет функцию переадресации портов, туннелирования и т.д.
Сначала, настройте сервер как описано в разделе #Внутри систем GNU/Linux.
На компьютере с Windows, перейдите в Панель управления > Просмотр устройств и принтеров и выберите в контекстном меню ‘Добавить принтер’. Если у вас Windows 10, нажмите кнопку «Принтер, который я хочу, не указан». Далее, выберите ‘Выбрать общий принтер по имени’ и тип расположения принтера:
Общий доступ с помощью Samba
Обратите внимание, что общий доступ с помощью Samba обычно более сложный для настройки и сопровождения.
Этого должно быть достаточно для организации совместного доступа, но все-таки рекомендуется добавить для принтера отдельную запись:
Учтите, что при таких настройках, должна существовать учетная запись с правами доступа к принтеру. Для публичного принтера установите guest ok в yes, и удалите строку valid users. Для добавления учетных записей, создайте действующую учетную запись GNU/Linux, а затем установите на Samba-сервере пароль. Например:
Затем перезапустите демон Samba:
smb://BEN-DESKTOP/HP Color LaserJet CP1510 series PCL6
Такая строка может быть получена в результате выполнения следующей команды:
Общий доступ с помощью LPD
Затем, принтер можно будет добавить в CUPS просто выбрав протокол LPD. Адресс принтера будет выглядеть следующим образом:
Перед добавлением вам, скорее всего, понадобиться установить для своей модели принтера соответствующий драйвер. Драйвера Generic PostScript или RAW тоже должны работать.
Общий доступ с помощью IPP
Как и в предыдущем случае, для организации общего доступа к принтерам протокол IPP является предпочтительным, но он работает только с версиями Windows Server. Версия Windows Server (например Server 2016) включаюет поддержку IPP (функции «Службы печати и документов», служба «Интернет-печати»). Клиентские версии (например, Windows 10) включают поддержку только клиента IPP и не поддерживают совместный доступ через IPP.
Общий доступ с помощью Samba
Гораздо проще использовать стандартные возможности Windows по предоставлению общего доступа к принтерам с помощью Samba. Ручная настройка практически не требуется и все можно выполнить через бэкенд CUPS. Однако, как было замечено выше, в Windows могут возникнуть проблемы с аутентификацией и ограничением доступа.
На стороне сервера необходимо разрешить общий доступ к принтеру и убедится, что клиентские машины имеют к этому принтеру доступ.
В следующем разделе будут описаны настройки клиента с обоими (cupsd и smbd) запущенными демонами.
Настройка через веб-интерфейс
Затем, просто зайдите в веб-интерфейс CUPS и добавьте новый принтер. В качестве устройства выберите «Windows Printer via SAMBA».
Для местоположения устройства, выберите:
Или, если пароля нет:
Убедитесь, что пользователь действительно имеет доступ к принтеру на компьютере Windows, и выберите соответствующие драйверы. Если компьютер находится в домене, убедитесь, что в имени пользователя присутствует домен:
Ручная настройка
Перезапустите демон CUPS и распечатайте тестовую страницу.
Поиск URI для серверов печати Windows
Иногда имя хоста Windows (усеченно) меньше предстоящего точного URI устройства (расположение устройства) (Sometimes Windows is a little less than forthcoming about exact device URIs (device locations)). Если возникли проблемы с указанием правильного расположения устройства в CUPS, выполните следующую команду, чтобы вывести список всех общих ресурсов, доступных для определенного имени пользователя windows:
В этом списке будет отображаться только общие URI для определенного имени пользователя Windows в локальной подсети локальной сети, если Samba настроен и работает правильно. Команда должна вернуть что-то вроде этого:
Удаленное управление
Чтобы дать удаленным хостам доступ к одному из этих уровней, добавьте оператор Allow в этот уровень. Оператор Allow может принимать одну или несколько форм, перечисленных ниже:
Отрицательный оператор также может быть использован. Например, чтобы предоставить полный доступ ко всем хостам на локальных сетевых интерфейсах, отредактируйте /etc/cups/cupsd.conf :
The factual accuracy of this article or section is disputed.
Вам также может потребоваться добавить:
Kerberos
Решение проблем
Общие советы по устранению неполадок смотрите в CUPS/Решение проблем.
Не удается отправить на печать из приложений GTK
Если ты получил сообщение getting printer information failed (ошибка получения информации о принтере), когда пытался отправить на печать из приложения GTK, тогда добавь эту строку в свой /etc/hosts :
Ошибки разрешений в Windows
Некоторые пользователи исправили ошибки ‘NT_STATUS_ACCESS_DENIED’ (Windows клиенты), используя несколько иной синтаксис:
Источник
This help document describes how to discover, configure, and use TCP/IP network printers with CUPS.
Automatic Configuration Using Bonjour
Most network printers support a protocol known as Bonjour, which is a combination of zero-configuration networking («ZeroConf»), multicast DNS (mDNS), and DNS service discovery (DNS-SD) standards published by the Internet Engineering Task Force (IETF), the same group that defined TCP/IP and all of the networking we use today.
A printer that supports Bonjour can be found automatically using the dnssd
backend. Run the lpinfo(8)
command to find your printer’s URI:
lpinfo --include-schemes dnssd -v network dnssd://Acme%20Laser%20Pro._ipp._tcp.local./?uuid=545253fb-1cb7-4d8d-98ed-ab6cd607cea7 network dnssd://Bar99._printer.tcp.local./?uuid=f9efff58-9086-4c95-accb-81dee876a475 network dnssd://Example%20EX-42._ipps._tcp.local./?uuid=4a0c67ad-2824-4ddf-9115-7d4226c5fe65 network dnssd://Foo%20Fighter-1969._pdl-datastream._tcp.local./?uuid=4e216bea-c3de-4f65-a710-c99e11c80d2b
You can then add a printer using the URI reported.
Manual Configuration Using IP Addresses
You can also manually configure a printer using its Internet Protocol v4 (IPv4) address. This address is either configured manually («static IP») through the printer’s control panel or set using an automatic network protocol such as the Dynamic Host Control Protocol (DHCP) or ZeroConf.
Note: Configuring a printer using an IP address set using DHCP or ZeroConf is not recommended since the address will change every time the printer is turned on or after long periods of inactivity. Thus, every time the address changes you will need to modify the print queue using the
lpadmin
command.
Finding the IP Address
You can normally find the IP address of a printer on the printer’s control panel or by printing the configuration or status page. The Simple Network Management Protocol (SNMP) can also be used to get the IP address remotely. To test that the IP address has been successfully assigned and that the printer is properly connected to your LAN or Wi-Fi network, type:
ping ip-address
where «ip-address» is the address reported by the printer’s control panel, configuration page, and/or status page. If the connection is working properly you will see something like:
ping 10.0.1.42 PING 10.0.1.42 (10.0.1.42): 56 data bytes 64 bytes from 10.0.1.42: icmp_seq=0 ttl=15 time=1.123 ms 64 bytes from 10.0.1.42: icmp_seq=1 ttl=15 time=2.034 ms 64 bytes from 10.0.1.42: icmp_seq=2 ttl=15 time=1.765 ms 64 bytes from 10.0.1.42: icmp_seq=3 ttl=15 time=1.234 ms ...
If the connection is not working properly you will see something like:
ping 10.0.1.42 PING 10.0.1.42 (10.0.1.42): 56 data bytes Request timeout for icmp_seq 0 Request timeout for icmp_seq 1 ...
Press CTRL+C to quit the ping
command.
Note: If the command does not show responses from the printer, verify that the printer or print server is powered on and connected to the same LAN or Wi-Fi network as your computer. For LAN connections, also verify that your network cabling is good.
Choosing a Network Protocol (Backend)
CUPS supports most network printers using one of three TCP/IP-based protocols: AppSocket, Internet Printing Protocol, and Line Printer Daemon. The following sections describe the options for each of the backends.
AppSocket Protocol (aka JetDirect)
The AppSocket protocol (sometimes also called the JetDirect protocol, owing to its origins with the HP JetDirect network interfaces) is the simplest and fastest network protocol used for printers. AppSocket printing normally happens over port 9100 and uses the socket
backend. Device URIs for the socket
backend look like this:
socket://ip-address socket://ip-address/?contimeout=30 socket://ip-address/?waiteof=false socket://ip-address/?contimeout=30&waiteof=false socket://ip-address:port-number/?...
The «contimeout» option controls the number of seconds that the backend will wait to obtain a connection to the printer. The default is 1 week or 604800 seconds.
The «waiteof» option controls whether the socket
backend waits for the printer to complete the printing of the job. The default is to wait (waiteof=true
). Add waiteof=false
to the URI to tell the backend not to wait.
Note: While the AppSocket protocol is simple and fast, it also offers no security and is often an attack vector with printers. Consider using the Internet Printing Protocol which supports encryption and other security features.
Internet Printing Protocol (IPP)
IPP is the only protocol that CUPS supports natively and is supported by most network printers and print servers. IPP supports encryption and other security features over port 631 and uses the http
(Windows), ipp
, and ipps
backends. Device URIs for these backends look like this:
http://ip-address-or-hostname:port-number/printers/name/.printer ipp://ip-address/ipp/print ipp://ip-address-or-hostname/printers/name ipps://ip-address/ipp/print ipps://ip-address:443/ipp/print ipps://ip-address-or-hostname/printers/name
The backends supports many options, which are summarized in Table 2. Like all backends, options are added to the end of the URI using the URL form encoding format, for example:
ipp://10.0.1.42/ipp/print?version=1.1 ipps://10.0.1.42:443/ipp/print?waitjob=false&waitprinter=false
Option | Description |
---|---|
contimeout=seconds |
Specifies the number of seconds to wait for the connection to the printer to complete (default 1 week or 604800 seconds). |
encryption=always |
Specifies that the connection to the IPP printer should be encrypted using SSL. |
encryption=ifrequested |
Specifies that the connection to the IPP printer should only be encrypted if the printer requests it. |
encryption=never |
Specifies that the connection to the IPP printer should not be encrypted. |
encryption=required |
Specifies that the connection to the IPP printer should be encrypted using TLS. |
version=1.0 |
Specifies that version 1.0 of the IPP protocol should be used instead of the default version 2.0. |
version=1.1 |
Specifies that version 1.1 of the IPP protocol should be used instead of the default version 2.0. |
version=2.1 |
Specifies that version 2.1 of the IPP protocol should be used instead of the default version 2.0. |
waitjob=false |
Specifies that the IPP backend should not wait for the job to complete. |
waitprinter=false |
Specifies that the IPP backend should not wait for the printer to become idle before sending the print job. |
Line Printer Daemon (LPD) Protocol (aka lpr)
LPD is the original network printing protocol created for the Berkeley UNIX line printer daemon (spooler) and is supported by many network printers. LPD printing normally happens over port 515 and uses the lpd
backend. Device URIsfor the lpd
backend look like this:
lpd://ip-address/queue lpd://ip-address/queue?format=l lpd://ip-address/queue?format=l&reserve=rfc1179
Table 3 summarizes the options supported by the lpd
backend.
Note: Due to limitations in the LPD protocol, we do not recommend using it if the printer or server supports any of the other protocols. Like AppSocket, LPD offers no security and is a common attack vector. LPD also, by default, requires that the computer save a copy of the entire print job before sending it to the printer — this can result in gigabytes of print data being saved to disk before any printing happens, delaying print jobs and shortening the life of your mass storage device!
Option | Description |
---|---|
banner=on |
Specifies that a banner page should be printed by the printer. |
contimeout=seconds |
Specifies the number of seconds to wait for the connection to the printer to complete (default 1 week or 604800 seconds). |
format=f |
Specifies that the print data is a plain text file. |
format=o |
Specifies that the print data is a PostScript file. |
format=p |
Specifies that the print data is a plain text file that should be «pretty» printed with a header and footer. |
mode=stream |
Specifies that the backend should stream print data to the printer and not wait for confirmation that the job has been successfully printed. |
order=data,control |
Specifies that the print data files should be sent before the control file. |
reserve=none |
Specifies that the backend should not reserve a source port. |
reserve=rfc1179 |
Specifies that the backend should reserve a source port from 721 to 731 as required by RFC 1179. |
sanitize_title=no |
Specifies that the job title string should not be restricted to ASCII alphanumeric and space characters. |
sanitize_title=yes |
Specifies that the job title string should be restricted to ASCII alphanumeric and space characters. |
timeout=seconds |
Specifies the number of seconds to wait for LPD commands to complete (default 5 minutes or 300 seconds). |
Finding Printers Using SNMP
Whenever you view the administration web page or a list of supported device URIs, the snmp
backend can probe the local network(s) using Simple Network Management Protocol (SNMP) v1 broadcasts. Printers that respond to these broadcasts are then interrogated for the make, model, and supported protocols, yielding a device URI that can be used to add the printer.
The /etc/cups/snmp.conf file configures the snmp
backend. Add the following line to enable discovery using the snmp
backend:
Address @LOCAL
If you don’t use «public» as your community name, change the Community
line as well:
Community your community name
Note: The
snmp
backend will not be able to find any printers on your network if SNMP v1 or broadcasting are disabled on your network. Also, broadcasts are typically limited to the local subnet, so printers on different networks cannot be discovered using SNMP.
Troubleshooting SNMP Problems
The snmp
backend sometimes exposes problems in vendor implementations. If you are experiencing long delays in loading the CUPS web interface administration page, or if you don’t see your printer listed, the following instructions will help you to diagnose those problems and/or provide important feedback to the CUPS developers so that we can correct problems and improve the snmp
backend in future releases.
The SNMP backend supports a debugging mode that is activated by running it from a shell prompt. Run the following command to get a verbose log of the snmp
backend:
CUPS_DEBUG_LEVEL=2 /usr/lib/cups/backend/snmp @LOCAL 2>&1 | tee snmp.log
On macOS you’ll find the backend in /usr/libexec/cups/backend instead:
CUPS_DEBUG_LEVEL=2 /usr/libexec/cups/backend/snmp @LOCAL 2>&1 | tee snmp.log
The output will look something like this:
1 INFO: Using default SNMP Address @LOCAL 2 INFO: Using default SNMP Community public 3 DEBUG: Scanning for devices in "public" via "@LOCAL"... 4 DEBUG: 0.000 Sending 46 bytes to 10.0.1.255... 5 DEBUG: SEQUENCE 44 bytes 6 DEBUG: INTEGER 1 bytes 0 7 DEBUG: OCTET STRING 6 bytes "public" 8 DEBUG: Get-Request-PDU 31 bytes 9 DEBUG: INTEGER 4 bytes 1149539174 10 DEBUG: INTEGER 1 bytes 0 11 DEBUG: INTEGER 1 bytes 0 12 DEBUG: SEQUENCE 17 bytes 13 DEBUG: SEQUENCE 15 bytes 14 DEBUG: OID 11 bytes .1.3.6.1.2.1.25.3.2.1.2.1 15 DEBUG: NULL VALUE 0 bytes 16 DEBUG: 0.001 Received 55 bytes from 10.0.1.42... 17 DEBUG: community="public" 18 DEBUG: request-id=1149539174 19 DEBUG: error-status=0 20 DEBUG: SEQUENCE 53 bytes 21 DEBUG: INTEGER 1 bytes 0 22 DEBUG: OCTET STRING 6 bytes "public" 23 DEBUG: Get-Response-PDU 40 bytes 24 DEBUG: INTEGER 4 bytes 1149539174 25 DEBUG: INTEGER 1 bytes 0 26 DEBUG: INTEGER 1 bytes 0 27 DEBUG: SEQUENCE 26 bytes 28 DEBUG: SEQUENCE 24 bytes 29 DEBUG: OID 11 bytes .1.3.6.1.2.1.25.3.2.1.2.1 30 DEBUG: OID 9 bytes .1.3.6.1.2.1.25.3.1.5 31 DEBUG: add_cache(addr=0xbfffe170, addrname="10.0.1.42", uri="(null)", id="(null)", make_and_model="(null)") 32 DEBUG: 0.002 Sending 46 bytes to 10.0.1.42... 33 DEBUG: SEQUENCE 44 bytes 34 DEBUG: INTEGER 1 bytes 0 35 DEBUG: OCTET STRING 6 bytes "public" 36 DEBUG: Get-Request-PDU 31 bytes 37 DEBUG: INTEGER 4 bytes 1149539175 38 DEBUG: INTEGER 1 bytes 0 39 DEBUG: INTEGER 1 bytes 0 40 DEBUG: SEQUENCE 17 bytes 41 DEBUG: SEQUENCE 15 bytes 42 DEBUG: OID 11 bytes .1.3.6.1.2.1.25.3.2.1.3.1 43 DEBUG: NULL VALUE 0 bytes 44 DEBUG: 0.003 Received 69 bytes from 10.0.1.42... 45 DEBUG: community="public" 46 DEBUG: request-id=1149539175 47 DEBUG: error-status=0 48 DEBUG: SEQUENCE 67 bytes 49 DEBUG: INTEGER 1 bytes 0 50 DEBUG: OCTET STRING 6 bytes "public" 51 DEBUG: Get-Response-PDU 54 bytes 52 DEBUG: INTEGER 4 bytes 1149539175 53 DEBUG: INTEGER 1 bytes 0 54 DEBUG: INTEGER 1 bytes 0 55 DEBUG: SEQUENCE 40 bytes 56 DEBUG: SEQUENCE 38 bytes 57 DEBUG: OID 11 bytes .1.3.6.1.2.1.25.3.2.1.3.1 58 DEBUG: OCTET STRING 23 bytes "HP LaserJet 4000 Series" 59 DEBUG: 1.001 Probing 10.0.1.42... 60 DEBUG: 1.001 Trying socket://10.0.1.42:9100... 61 DEBUG: 10.0.1.42 supports AppSocket! 62 DEBUG: 1.002 Scan complete! 63 network socket://10.0.1.42 "HP LaserJet 4000 Series" "HP LaserJet 4000 Series 10.0.1.42" ""
The first two lines are just informational and let you know that the default community name and address are being used. Lines 3-15 contain the initial SNMP query for the device type OID (.1.3.6.1.2.1.25.3.2.1.2.1) from the Host MIB.
Lines 16-31 show the response we got from an HP LaserJet 4000 network printer. At this point we discover that it is a printer device and then send another SNMP query (lines 32-43) for the device description OID (.1.3.6.1.2.1.25.3.2.1.3.1) from the Host MIB as well.
Lines 44-58 show the response to the device description query, which tells us that this is an HP LaserJet 4000 Series printer.
On line 59 we start our active connection probe and discover that this print server supports the AppSocket (JetDirect) protocol on port 9100.
Finally, line 63 shows the device information line for the print server that is sent to CUPS.
If you don’t see your printer listed, or the wrong information is listed, then you need to gather more information on the printer. The easiest way to do this is to run the snmpwalk command:
snmpwalk -Cc -v 1 -c public ip-address | tee snmpwalk.log
where «ip-address» is the IP address of the printer or print server. You should see a lot of values stream by — the ones you want to see are:
HOST-RESOURCES-MIB::hrDeviceType.1 = OID: HOST-RESOURCES-TYPES::hrDevicePrinter HOST-RESOURCES-MIB::hrDeviceDescr.1 = STRING: HP LaserJet 4000 Series
The hrDeviceType line should show hrDevicePrinter; if not, then your printer or print server doesn’t identify itself as a printer. The hrDeviceDescr line should provide a human-readable string for the make and model of the printer, although in some cases you’ll just see something less useful like «Axis OfficeBASIC Parallel Print Server».
Once you have collected the snmpwalk output, you should go to the CUPS Issue Tracker page to submit a feature request to support your printer or print server. Be sure to attach those two log files you created — they will help us to identify the SNMP values we need to look for.